第六章子程序设计内容摘要:

H, 1AH, 94H LENS EQU $SOUCE BLOCK2 DB LENS DUP(。 ) DATA ENDS CODE SEGMENT ASSUME CS: CODE, DS: DATA START: MOV AX, DATA MOV DS, AX 第 6章 《 IBM PC 80X86汇编语言程序设计》 冶金工业出版社 MOV AX, OFFSET BLOCK1 PUSH AX MOV AX, OFFSET BLOCK2 PUSH AX MOV AX, LENS PUSH AX CALL MOVSTOK MOV AH, 4CH INT 21H 第 6章 《 IBM PC 80X86汇编语言程序设计》 冶金工业出版社 MOVSTOK PROC NEAR PUSH SI PUSH DI PUSH CX PUSH BP MOV BP, SP MOV SI,[BP+14] MOV DI,[BP+12] MOV CX,[BP+10] LOP1: MOV AL, [SI] MOV [DI], AL INC SI INC DI LOOP LOP1 RET MOVSTOK ENDP CODE ENDS END START 第 6章 《 IBM PC 80X86汇编语言程序设计》 冶金工业出版社 例: 利用堆栈传递参数,实现对 2个已定义数组分别求和。 主程序与子程序不在同一代码段中。 入口参数: 数组的首地址和数组长度。 使用寄存器 AX将入口参数压栈。 第 6章 《 IBM PC 80X86汇编语言程序设计》 冶金工业出版社 DATA SEGMENT ARYA DB 06H, 33H, 0AH, 88H, 13H SUMA DW。 ARYB DB 9FH, 97H, 34H, 22H, 33, 13H SUMB DW。 DATA ENDS CODE SEGMENT ASSUME CS: CODE, DS: DATA START: MOV AX, DATA MOV DS, AX 第 6章 《 IBM PC 80X86汇编语言程序设计》 冶金工业出版社 MOV AX, SUMAARYA PUSH AX MOV AX, OFFSET ARYA PUSH AX CALL SUM MOV AX, SUMBARYB PUSH AX MOV AX, OFFSET ARYB PUSH AX CALL SUM MOV AH, 4CH INT 21H CODE ENDS 第 6章 《 IBM PC 80X86汇编语言程序设计》 冶金工业出版社 PROCE SEGMENT ASSUME CS: PROCE, DS: DATA SUM PROC FAR PUSH AX PUSH BX PUSH CX PUSH BP MOV BP, SP PUSHF MOV CX, [BP+14] MOV BX, [BP+12] 第 6章 《 IBM PC 80X86汇编语言程序设计》 冶金工业出版社 MOV AX, 0 LOP1: ADD AL, [BX] ADC AH, 0 INC BX LOOP LOP1 MOV [BX], AX POPF POP BP POP CX POP BX POP AX RET 4 SUM ENDP PROCE ENDS END START 第 6章 《 IBM PC 80X86汇编语言程序设计》 冶金工业出版社 用存储单元传递参数 主程序中入口参数送入存储单元,子程序中取出入口参数进行处理,执行结果存入存储单元。 例 同例 用存储器参数传递法编写程序 第 6章 《 IBM PC 80X86汇编语言程序设计》 冶金工业出版社 DATA SEGMENT BLOCK1 DB 23H, 45H, 13H, 2FH, 1AH, 94H LENS EQU $SOUCE BLOCK2 DB LENS DUP(。 ) DATA ENDS CODE SEGMENT ASSUME CS: CODE, DS: DATA START: MOV AX, DATA MOV DS, AX 第 6章 《 IBM PC 80X86汇编语言程序设计》 冶金工业出版社 XOR SI, SI XOR DI, DI MOV CX, LENS CALL MOVSTOK MOV AH,4CH INT 21H MOVSTOK PROC NEAR PUSH AX NEXT: MOV AL, BLOCK1[SI] MOV BLOCK2[DI], AL INC SI INC DI LOOP NEXT POP AX RET MOVSTOK ENDP CODE ENDS END START 第 6章 《 IBM PC 80X86汇编语言程序设计》 冶金工业出版社 五、子程序的嵌套和递归调用 嵌套: 子程序中再调用其它子程序 递归: 子程序体中调用它本身,一般用于数学上函数的递归定义。 子程序的嵌套调用 嵌套与递归的共同之处就是都要用到堆栈操作,用于保护断点。 第 6章 《 IBM PC 80X86汇编语言程序设计》 冶金工业出版社 主程序: …… …… CALL SUB1 ( 断点 1:) …… …… HLT SUB1: …… CALL SUB2 ( 断点 2: ) …… RET SUB2: …… …… RET 子程序: 子程序: 子程序的嵌套调用 第 6章 《 IBM PC 80X86汇编语言程序设计》 冶金工业出版社 例: 找出 BUF区存放的若干字节的最小值。 并以十六进制形式显示。 程序利用嵌套实现 DISP—— 显示一位十六进制数,被显示的内容存放在 DL低 4位。 SEARCH—— 在 BUF区中搜索最小无符号数 入口参数: SI—— 被搜索数据区的首地。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。