- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
1;指令系统; 程序控制指令用来控制程序的执行顺序,用于实现分支、循环、过程调用/返回、中断调用/返回等程序结构
CS:IP总是指向下一条即将执行的指令的地址,通过改变IP和CS的值,可以改变程序的执行顺序,但程序中不能使用MOV指令直接改变CS和IP的值,只能通过程序控制指令实现; 直接转移:在转移指令中直接指明目标地址
间接转移:转移的目标地址间接存储于某寄存器或存储器单元中;5;无条件转移指令(3条);② 段内直接转移(近转移):是相对转移,位移量在指令中占2个字节,转移范围是段内任何地方(-32768~+32767)。
格式: JMP 有效地址EA
JMP NEAR PTR 标号
JMP 标号(汇编程序自动计算转移距离生成近转移指令)
操作: IP←有效地址EA
IP←IP ± 位移量(16位)
【例】 JMP START或JMP NEAR PTR START;IP←IP ± START
JMP 2000H ;IP←2000H;④ 段内间接转移(存储器间接):是绝对转移,目标地址在存储器中占2个字节,转移范围是段内任何地方(0~65535)。
格式: JMP WORD PTR [mem]
操作: IP←[mem]16
说明: 段寄存器搭配关系同寻址方式,即BP同SS搭配,其它均同DS搭配。
【例】 JMP WORD PTR[1000H] ;IP←DS:[1000H]
JMP WORD PTR[SI] ;IP←DS:[SI]
JMP WORD PTR[BP] ;IP←SS:[BP];⑤ 段间直接转移(远转移):是绝对转移,目标地址在指令中占4个字节(2字节IP,2字节CS),转移范围是存储器任何地方。
格式: JMP 逻辑地址
JMP FAR PTR 标号
操作: IP←目标地址的2字节偏移地址,CS←目标地址的2字节段地址
【例】 JMP FAR PTR pnt ;
JMP 2000H:3000H ;CS←2000H,IP←3000H ;⑥ 段间间接转移(存储器间接):是绝对转移,目标地址在存储器中占4个字节(2字节IP,2字节CS),转移范围是存储器任何地方。
格式: JMP DWORD PTR [mem]
操作: IP←[mem]16,CS←[mem+2]16
说明: 段寄存器搭配关系同寻址方式,即BP同SS搭配,其它均同DS搭配。
【例】 JMP DWORD PTR[1000H];IP←DS:[1000H],CS←DS:[1002H]
JMP DWORD PTR[SI] ;IP←DS:[SI],CS←DS:[SI+2]
JMP DWORD PTR[BP] ;IP←SS:[BP],CS←SS:[BP+2];2、子程序(过程)调用指令 CALL
格式:CALL d
功能:程序无条件转移到子程序(过程)地址d去执行并保护断点地址
说明:CALL指令与JMP指令不同点在于CALL指令包含了保护断点地址的操作,即将断点处的IP(段内调用)值或CS、IP(段间调用)值压入堆栈(PUSH IP或PUSH CS;PUSH IP)。CALL指令应同子程序(过程)返回指令RET搭配使用。
CALL指令与JMP指令类似,也分为段内调用、段间调用、直接调用、间接调用、相对调用、绝对调用等5种调用地址寻址方式,但没有短调用。系统设计中把同一代码段(CS)内调用的过程称为“近过程”,用NEAR表示;而把调用其他代码段(即段间)的过程称为“远过程”,用FAR表示。调用的目标地址通常用“过程名”表示,是一种符号地址。;① 段内直接调用(近过程):是相对调用,位移量在指令中占2个字节。
格式: CALL 有效地址EA
CALL NEAR 过程名
CALL 过程名(过程名是已定义过的近过程名)
操作: SP←SP-2
[SP]←IP
IP←有效地址EA 或 IP←IP±位移量(16位)
说明: 只在堆栈中保护IP,CS保持不变
【例】 CALL NEAR proc1 ;IP←IP+proc1
CALL proc2 ;IP←IP+proc2
CALL 1000H ;IP←1000H;② 段内间接调用(寄存器间接):是绝对调用,子程序地址在16位的寄存器中。
格式: JMP r16
操作: SP←SP-2
[SP]←IP
IP←r16
说明: 只在堆栈中保护IP,CS保持不变
【例】 CALL BX ;IP←BX
CALL SI ;IP←SI;③ 段内间接调用(存储器间接):是绝对调用,子程序地址在存储器中占2个字节。
格式: CALL WORD PTR [mem]
操作: SP←
文档评论(0)