三 历些毛子种枝大学 8086汇编语言的完整结构 XIDIAN UNIVERSITY 每当一个用户的可执行文件EXE装入内存后,存储器的分配情况如图: DATI SEGMENT BUFFER DB ?????? 系统占用 00000H DATI ENDS CODE SEGMENT 程序段前缀 100个 ASSUME DS:DAT1,CS:CODE 字节 START: 逐行编译 用户数据区 用户程 CALL NEAR PTR SUBI 用户堆栈区 序空间 用户代码段 SUBI PROC NEAR RET 。00事● SUBI ENDP CODE ENDS END START 系统和ROM占用 FFFFFH 徽机原理与系统设计 第四章汇编语言指令与程序设计 董明皓 dminghao@xidian.edu.cn 17
8086汇编语言的完整结构 00000H 100个 字节 用户程 序空间 FFFFFH 每当一个用户的可执行文件.EXE装入内存后,存储器的分配情况如图: 系统占用 程序段前缀 用户数据区 用户堆栈区 用户代码段 . . 系统和ROM占用 DAT1 SEGMENT BUFFER DB ‘??????’ DAT1 ENDS CODE SEGMENT ASSUME DS:DAT1, CS:CODE START: . . CALL NEAR PTR SUB1 . SUB1 PROC NEAR . RET ; SUB1 ENDP CODE ENDS END START 逐行编译 微机原理与系统设计 第四章 汇编语言指令与程序设计 董明皓 dminghao@xidian.edu.cn 17
历些毛子种枝大” 4.6.1子程序调用和返回指令 XIDIAN UNIVERSITY 3.子程序(过程) 的调用与返回段内调用与返回 DATA SEGMENT DATA ENDS CODE SEGMENT ASSUME DS:DATA.CS:CODE START: MOV AX.DATA MOV DS.AX CODE ENDS END START 徽机原理与系统设计 第四章汇编语言指令与程序设计 董明皓 dminghao@xidian.edu.cn 18
4.6.1 子程序调用和返回指令 3.子程序(过程)的调用与返回-段内调用与返回 微机原理与系统设计 第四章 汇编语言指令与程序设计 董明皓 dminghao@xidian.edu.cn 18 DATA SEGMENT DATA ENDS CODE SEGMENT ASSUME DS:DATA, CS:CODE START: MOV AX, DATA MOV DS, AX CODE ENDS END START .
历些毛子代枝大学 4.6.1子程序调用和返回指令 XIDIAN UNIVERSITY 3.子程序(过程)的调用与返回-段内调用与返回 CALL NEAR PTR SUBI ①SP←-(SP)-2 ;子程序SUB1 可以省略 ②(SP)-返回地址(P) SUBI PROC NEAR ③IP←-(IP)+16位DISP : : RET IP←-(SP) SP←-(SP)+2 SUBI ENDP CODE ENDS END START 徽机原理与系统设计 第四章汇编语言指令与程序设计 董明皓 dminghao@xidian.edu.cn 19
4.6.1 子程序调用和返回指令 3.子程序(过程)的调用与返回-段内调用与返回 微机原理与系统设计 第四章 汇编语言指令与程序设计 董明皓 dminghao@xidian.edu.cn 19 . . ;子程序SUB1 SUB1 PROC NEAR RET ; SUB1 ENDP CODE ENDS END START CALL NEAR PTR SUB1 . 可以省略 • IP←((SP)) • SP←(SP)+2 ① SP←(SP)-2 ② ((SP))←返回地址(IP) ③ IP←(IP)+16位DISP
●3.子程序(过程)的调用与返回段间调用与返回 ①SP-(SP)2;(SP)-返回地址(CS) ①IP←-(SP):SP-(SP)+2 ②SP←-(SP)2:(SP)-返回地址P) ②CS-(SP):SP-(SP)+2 ③IP4-OFFSET SUB2:CS←-SEG SUB2 主程序 ;子程序 CODEP SEGMENT CODES SEGMENT ASSUME CS:CODEM ASSUME CS:CODES START: SUB2 PROC FAR CALL FAR PTR SUB2 MOV AH.4CH RETF;也可以写成RET INT 21H SUB2 ENDP CODEP ENDS CODES ENDS END START
4.9 子程序调用和返回指令 3.子程序(过程)的调用与返回-段内调用与返回 4. 8086的指令系统 ;主程序 CODEP SEGMENT ASSUME CS:CODEM START: CALL FAR PTR SUB2 MOV AH,4CH INT 21H CODEP ENDS . . ;子程序 CODES SEGMENT ASSUME CS:CODES SUB2 PROC FAR RETF ;也可以写成RET SUB2 ENDP CODES ENDS END START . ①IP←((SP));SP←(SP)+2 ②CS←((SP));SP←(SP)+2 ①SP←(SP)-2;((SP))←返回地址(CS) ②SP←(SP)-2;((SP))←返回地址(IP) ③IP←OFFSET SUB2; CS←SEG SUB2 3.子程序(过程)的调用与返回-段间调用与返回
历安 应用场禁 子程序的概含 XIDIA 优缺点 过程名PROC [NEAR/FAR则 如何定义子程序 CALL LABLE/FAR LABLE 又内直接湖用(常用) 子程序的调用与返回 汉间间接调用 湖用分类 段间直接调用(常用) 段间问接调周 信息的保护与恢复 3 花含 REG传递 (3.11+4.5) 子程序的参数传递 MEM单元传递 STACK传通 1,子程序名 :2.子程序所完成的功德 :3.入口参数及其传递方式 了程序的说明文件 4.出口参数及 子程序的长套 子程序的通归 子程序的可再入性