- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第3章 80X86指令系统和汇编语言(2) 3.2.5 控制转移指令 在8086程序中,指令执行的顺序是由CS和IP确定的。为了使程序转移到新的地址去执行,可采用改变CS和IP,或者仅改变IP的方法来实现。前者为段间转移(远转移),属性为FAR;后者称为段内转移(近转移或短转移),属性为NEAR或SHORT。无论是段内转移还是段间转移,都有直接转移和间接转移之分。直接转移是转移的目的地址由IP加上指令中的一个8位或16位的位移量形成;间接转移则是转移目的地址间接存储在某一寄存器或内存单元中。 计算转移地址有两种方法: 一种是当前的IP值加一个8位或16位以补码表示的位移量,也就是以当前指令为中心往前或往后转移,称为相对转移; 另一种是以新的值完全代替当前的IP值或CS和IP的值,称为绝对转移。 8086中所有段内直接转移都是相对转移,所有段内和段间的间接转移都是绝对转移。 1. 无条件转移指令 1) 段内直接短转移 格式:JMP SHORT OPR 功能:IP←(IP)+8位位移量,其中8位位移量是CS段内目的地址OPR与JMP指令的下一条指令地址之差,为一个有符号数,只允许在-128~+127字节范围内转移,为相对转移指令。 例如: … JMP SHORT HELLO … … HELLO: … 在此程序段中,若JMP指令的当前地址是CS段内0100H,目的地址是010AH,因为该指令的机器代码是E908H,所以8位位移量为010AH-0102H=08H(其中0102H是JMP指令的下一条指令的地址)。 2) 段内直接近转移 格式:JMP NEAR PTR OPR 功能:IP←(IP)+16位位移量。它也是一种相对转移指令。 汇编格式中的OPR可使用符号地址,地址属性NEAR可省略。由于位移量为16位,所以可转移到段内的任何位置。 例如: … JMP NEXT ;可省略NEAR属性说明 … … NEXT: … 在此程序段中,若JMP指令的当前地址是CS段内0100H,目的地址是1000H,因为该指令的机器代码是EBFD0EH,所以其中16位位移量为1000H-0103H=0EFDH(0103H是JMP指令的下一条指令的地址)。 3) 段内间接转移 格式:JMP WORD PTR OPR 功能:IP←(EA),其中EA的值由OPR的寻址方式确定,它可以使用除立即数寻址以外的任何一种寻址方式。如果指定的是16位寄存器,则把寄存器的内容送到IP中;如果指定的是存储器单元地址,则将该地址单元开始的一个字的内容送到IP中去。 例如: JMP BX JMP WORD PTR [BX+25H] 在上面的指令中,若(DS)=2000H,(BX)=0100H,(20100H)=00H,(20101H=01H),(20125H)=34H,(20126H)=12H, 则第一条指令执行的结果是(IP)=0100H, 而第二条指令执行的结果是(IP)=1234H。 4) 段间直接转移 格式:JMP FAR PTR OPR 功能:IP←OPR的段内偏移地址 CS←OPR所在段的段地址 其中OPR在汇编格式中可使用符号地址,如果用数值表达式则要指定转移目标的偏移地址和段地址。这也是一种绝对转移指令。 【例3.5】 OPR用符号地址表示。 CODE1 SEGMENT … JMP FAR PTR PROG … … CODE1 ENDS CODE2 SEGMENT … PROG:… … CODE2 ENDS 【例3.6】 OPR用数值表达式表示。 JMP 0F000H:005BH ;可省略FAR属性说明 执行本条指令后,(CS)=0F000H,(IP)=005BH。 5) 段间间接转移 格式:JMP DWORD PTR OPR 功能:IP←(EA) CS←(EA+2) 其中EA可采用任何一种存储器寻址方式确定。根据寻址方式求出EA后,把指定存储器单元的字内容送到IP寄存器,并把下一个字的内容送到CS寄存器,这样就实现了段间转移。 例如: JMP DWORD PTR [BX] 在上面的指令中,若(DS)=2000H,(BX)=0100H,以2000H:0100H为首地址的连续四个内存字节单元中存放双字地址指,则该指令将转移到目的地址为1234H:5678H的地方继续执行程序。 2. 条件转移指令 条件转移指令以标志位的状态或标志位的逻辑运算结果作为转移依据,若
文档评论(0)