[工学]第13讲第5章-控制转移和程序结构54-副本.ppt

[工学]第13讲第5章-控制转移和程序结构54-副本.ppt

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[工学]第13讲第5章-控制转移和程序结构54-副本

第5章 控制转移和程序结构 5.4 子程序结构 补充:DOS功能调用 第5章 控制转移和程序结构 5.1 目标地址寻址方式 5.1.1 转移范围 5.1.2 寻址方式 5.1.3 无条件转移指令 5.2 分支程序结构 5.2.1 条件转移指令 5.2.2 单分支结构 5.2.3 双分支结构 5.2.4 多分支结构 5.3 循环程序结构 5.3.1 循环指令 5.3.2 计数控制循环 5.3.3 条件控制循环 5.4 子程序结构 5.4.1 子程序指令 5.4.2 子程序设计 5.4.3 参数传递 5.4.4 程序模块 5.4 子程序结构 5.4.1 子程序指令 5.4.2 子程序设计 5.4.3 参数传递 5.4.4 程序模块 5.4.1 子程序指令 1. 子程序定义 2. 子程序调用指令 CALL 3. 子程序返回指令 RET 子程序(过程)定义 ——有独立功能独立程序模块 子程序(过程)定义格式 符号名 PROC 类型(NEAR 或 FAR) …… RET 符号名 ENDP 子程序调用过程 例. 带子程序(计算变量差)的汇编程序 DATAS SEGMENT VARA DB 34H VARB DB 12H RESULT DB ? DATAS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS START: MOV AX, DATAS MOV DS, AX MOV AL, VARA MOV AH, VARB CALL A_B;调用子程序 MOV RESULT, AL MOV AH, 4CH INT 21H A_B PROC ;过程定义 SUB AL, AH RET ;子程序返回 A_B ENDP ;过程结束 CODES ENDS END START 子程序类型 按子程序与调用语句间的位置 NEAR 类型 段内调用:改 IP CALL 与过程 在 同一个段 FAR 类型 段间调用:改 IP 和 CS CALL 与过程 不在 同一个段 5.4.1 子程序指令 1. 子程序调用指令 CALL 2. 返回指令 RET 1. 子程序调用指令 CALL 格式 CALL label ; 标号指定的子程序 CALL reg16/reg32 ;寄存器指定子程序的地址 CALL mem16/mem32; 存储单元指定子程序的地址 目标地址 在CALL指令中 相对寻址、直接寻址 在CALL指令指定的寄存器或内存单元中 间接寻址 段内调用(近调用)、段间调用(远调用) (1)CALL 指令操作 注意 不同的子程序属性(NEAR或FAR)形成不同的目标地址,并装入 IP 或 IP与CS (2)CALL 指令分类 直接调用 段内 段间 间接调用 存储器 寄存器 直接调用 段内 PROC属性:NEAR 操作 (SP)←(SP)-2 ((SP)+1,SP)←(当前IP) (IP)←(当前IP)+D16(16位位移量) 段间 PROC属性:FAR 操作 (SP)←(SP)-2 ((SP)+1,SP)←(CS) (SP)←(SP)-2 ((SP)+1,SP)←(IP) (IP)← PROC的偏移地址 (CS)← PROC的段地址 例1. 段内直接调用 code SEGMENT … CALL subp XXX:YYY … … subp PROC NEAR … RET subp ENDP code ENDS 例2. 段内直接调用——两个数据变量X与Y相乘 DATASG SEGMENT X DW 100 Y DW 10 DATASG ENDS CODESG SEGMENT ASSUME CS:CODESG,DS:DATASG START: … CALL SUBP … MOV AH,4CH INT 21H 例3. 段间直接调用 CALL 2500H:3600H ;段间直接调用 ;指给出被调用子程序的 ;段地址和偏移量 CALL SUB_PROC1 ;设SUB_PROC1为FAR型 ;段间直接调用 例4. 段间直接调用 CSEG1 SEGMENT … CALL FAR PTR subp ;a处的CS:IP入栈转subp a: … … CSEG1

文档评论(0)

ctuorn0371 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档