- 7
- 0
- 约9.35千字
- 约 69页
- 2017-07-07 发布于湖北
- 举报
第六章子程序设计讲解
例:利用堆栈传递参数,实现对2个已定义数组分别求和。主程序与子程序不在同一代码段中。 入口参数:数组的首地址和数组长度。使用寄存器AX将入口参数压栈。 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 MOV AX,SUMA-ARYA PUSH AX MOV AX,OFFSET ARYA PUSH AX CALL SUM MOV AX,SUMB-ARYB PUSH AX MOV AX,OFFSET ARYB PUSH AX CALL SUM MOV AH,4CH INT 21H CODE ENDS 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] 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 3、用存储单元传递参数 主程序中入口参数送入存储单元,子程序中取出入口参数进行处理,执行结果存入存储单元。 例6.7 同例6.5 用存储器参数传递法编写程序 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 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 五、子程序的嵌套和递归调用 嵌套:子程序中再调用其它子程序 递归:子程序体中调用它本身,一般用于数学上函数的递归定义 。 1、子程序的嵌套调用 嵌套与递归的共同之处就是都要用到堆栈操作,用于保护断点。 主程序: …… …… CALL SUB1 (断点1:) …… …… HLT SUB1: …… CALL SUB2 (断点2: ) …… RET SUB2: …… …… RET 子程序: 子程序: 子程序的嵌套调用 例: 找出BUF区存放的若干字节的最小值。并以十六进制形式显示。 程序利用嵌套实现 DISP—— 显示一位十六进制数,被显示的内容存放在DL低4位。 SEARCH—— 在BUF区中搜索最小无符号数 入口参数:SI—— 被搜索数据区的首地址。 CX—— 存放数据的个数。 出口参数:DL中存放最小值 …… CALL SEARCH …… SEARCH PROC …… CALL DISP …… CALL
您可能关注的文档
最近下载
- 2025年一级建造师风险登记册在项目全生命周期中的应用专题试卷及解析.pdf VIP
- 《美学原理概要》课件.ppt VIP
- 2025年演出经纪人演出项目融资退出机制设计与法律安排专题试卷及解析.pdf VIP
- 2025年互联网营销师文案的“网感”与“社交货币”打造专题试卷及解析.pdf VIP
- 2025年演出经纪人演出经纪法律责任与权利义务边界专题试卷及解析.pdf VIP
- 基于联邦学习的跨机构医疗数据协作研究框架.pdf VIP
- 股份公司境外公司管理办法.doc VIP
- 2026苏教版高考化学一轮复习第30讲 有机物推断与合成(学用).doc
- 职业道德考试及答案.doc VIP
- 工勤职业道德考试及答案.doc VIP
原创力文档

文档评论(0)