- 1、本文档共53页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
04-2程序设计课件
4.6 MSM宏汇编语言程序设计;汇编语言程序设计的过程通常都包括以下步骤:;1. 顺序程序
2. 分支程序
3. 循环程序
4. 子程序;4.6.1 顺序程序;例1. 试编制一程序,计算下列公式的值,并存放在FUN存贮单元中。;DATA SEGMENT VARX DW 123H VARY DW 456H VARZ DW 789H FUN DW ?DATA ENDSSTACK1 SEGMENT PARA STACK DW 20H DUP (0)STACK1 ENDSCOXEG SEGMENT ASSUMZ CS: COSEG, DS: DATA, SS: STACK1;START: MOV AX,DATA MOV DS,AX MOV AX,VARX ADD AX,VARY ;AX ? x + y MOV BX,AX SAL AX,1 ;?2 SAL AX,1 ;?4 ADD AX,BX ;AX ? 5?(x+y) SAL AX,1 ;AX ? 10?(x+y) MOV BX,VARZ DEC BX ;Z–1 MOV CX,BX SAL BX,1 ;2(Z–1) ADD BX,CX ;3(Z–1) SUB AX,BX SAR AX,1 MOV FUN,AX MOV FUN,AX MOV AH,4CH ;返回DOS 1NT 21HCOSEG ENDS END START;;例2 求AX和BX中两个无符号数之差的绝对值,结果放在ANS中。;1. 循环程序一般由下列4部分组成:;初始化部分;初始化部分; ? MOV CX,0LOP: AND AX,AX JZ STP SAL AX,1 JNC MOD INC CXMOD: JMP LOPSTP: ?;1. 子程序说明部分:要求语言简明、确切;例:今有一子程序说明如下:;2.子程序本身常以过程形式存放在代码段中,常以一个标号开始,以返回指令结束。如:;3. 信息的保护;4. 参数的传递;参数传递的方法一般有三种:;5.子程序设计举例;解:减奇数法求平方根:因为N个1开始的连续自然数的奇数之和等于N2,即;在本题中,可将开平方的运算作为一 个子程序,入口参数为被开方数,通过AX传送给子程序,待子程序结束时,平方根在CL中(出口参数)。;SQR-PROC;DATA SEGMENTDA1 DW 1234H, 5678H, 3456H, 0A53HCOUNT EQU ($ – DA1) / 2DFG DB COUNT DUP (0)DATA ENDSSTACK1 SEGMENT PARA STACK DW 20H DUP (0)STACK1 ENDSCOSEG SEGMENT ASSUME CS: COSEG, DS: DATASTART: MOV AX, DATA MOV DS, AX MOV CX, COUNT MOV SI, OFFSET DA1 MOV DI, OFFSET PFG;LOP: MOV AX, [SI] PUSH CX CALL SQR - PROC MOV [DI], CL POP CX ADD SI, 2 INC DI LOOP LOP MOV AH, 4CH INT 21HSQR-PROC PROC MOV CL, 0 MOV DX, 1SQR: SUB AX, DX JB EXIT INC CL ADD DX, 2 JMP SQREXIT: RETSQR-PROC ENDPCOSEG ENDS END START;(2). 利用堆栈传递参数;MAIN SEGMENT ASSUMF CS: MAIN, DS: DATA, SS: STACK1STR: MOV AX, DATA MOV DS, AX MOV AX, SIZE ARY1 PUSH AX ;SUM过程的入口参数1进栈 MOV AX, OFFSET ARY1 PUSH AX ;SUM过程的入口参数2进栈 CALL SUM ? MOV AX,SIZE ARY2 PUSH AX MOV AX,OFFSET ARY2 PUSH AX CALL SUM ? MOV AH, 4CH INT 21HMAIN ENDSPROCE SEGMENT ASSUME CS: PROCE,
文档评论(0)