欢迎来到天天文库
浏览记录
ID:40583992
大小:410.10 KB
页数:48页
时间:2019-08-04
《桂林电子科技大学微机原理》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、3.7分支程序的设计分支程序就是根据条件的不同完成不同功能的程序。编写分支程序要用到条件转移指令。执行转移/调用指令时,8086指令队列寄存器原内容(按顺序取出的后续指令)被清除,转向指令的地址(目标地址OPR)→CS、IP。CPU按CS、IP的指示,跳转到目标地址去执行。3.7.1无条件转移指令使程序无条件跳转到目标地址(OPR)去执行。一.段内转移转移指令和待转向指令在同一代码段中,只改变IP的内容。1.段内直接转移格式:JMPOPR;OPR—待转向指令标号操作:IP←标号偏移地址说明:①标号偏移地址=JMP指令的下一条指令的偏移
2、地址+位移量位移量由汇编程序在汇编过程中,根据标号地址与JMP指令所在地址进行计算得到。例::JMPSHORTNEXT;:NEXT:MOVAL,05H;:操作码08H操作码CS:0100H05H0101H0102H010AH010BHJMPSHORTNEXT8位位移量MOVAL,05H由计算机根据转移的相对位置计算得到。②转移范围短转移(位移量为8位)—以JMP为中心的256个单元;近转移(位移量为16位)—以JMP为中心的64KB个单元。③短转移和近转移也可以分别表示为JMPSHORTOPRJMPNEARPTROPR例::JMPNE
3、ARPTRNEXT;:NEXT:MOVAL,05H;由计算机根据转移的相对位置计算得到。操作码07H操作码CS:0100H05H0101H0102H010AH010BHJMPNEXT16位位移量MOVAL,05H00H2.段内间接转移格式:JMPOPR;OPR≡{R,M}操作:IP←(EA)说明:①有效地址EA由OPR的寻址方式确定;②转移范围为以JMP为中心的64KB。例:BUFDW0301H…MOVBX,2C8FHJMPBUF…JMPNEXT…JMPBX…JMPWORDPTR[BX]NEXT:ADDAX,BX…;IP←NEXT偏移
4、地址;IP←2C8FH;IP←0301H;IP←(2C8FH,2C90H)二.段间转移转移指令和待转向指令不在同一代码段中,同时改变CS、IP。转移范围:1MB。1.段间直接转移指令中直接给出不在本代码段中待转向指令标号。格式:JMPFARPTROPR;OPR待转向指令的标号操作:CS←标号段地址,IP←标号偏移地址。例3.20在C1代码段有一条转移到C2代码段的无条件转移指令,如下如示:C1SEGMENT…JMPFARPTRNEXT…C1ENDSC2SEGMENT…NEXT:MOVCL,AL…C2ENDS2.段间间接转移待转向指令的
5、段地址、段内偏移地址放在连续的4个内存单元中(指令中给出访问内存单元的寻址方式—同操作数的寻址方式)。格式:JMPDWORDPTROPR;OPR≡{M}操作:IP←(EA),CS←(EA+2)例3.21JMPDWORDPTR[BP][DI]设SS=5000H,BP=1000H,DI=0050H,存放转向地址的堆栈段中的存储单元物理地址:PA=50000H+1000H+0050H=51050H此时转向地址的存储情况如图3.6所示,JMP指令位于C1代码段,转移到C2代码段,程序形式如下:C1SEGMENT…1000H:1300HJMPD
6、WORDPTR[BP][DI]…C1ENDSC2SEGMENT…2000H:2500HMOVDL,AL…C2ENDS存储单元的内容10000H1000H:1300H20000H2000H:2500H代码段C1段首地址JMP指令MOV指令C2段首地址00H25H00H20H堆栈段偏移地址→IP=2500H段地址→CS=2000H51050H51050H0050H1000H5000HSSBPDI+3.7.2条件转移指令根据标志位来判断测试条件:满足条件则转移到指令指定地址执行(分支);否则顺序执行下一条指令。条件满足否?是否转向转移地址执
7、行顺序执行格式:JXXOPR;OPR≡{标号}操作:当条件XX满足时则转移到OPR执行,否则顺序执行。注意:属于段内直接短转移指令,转移范围为256字节(IP-128~IP+127)。JSOPR;结果为负转移JNSOPR;结果为正转移JP/JPEOPR;结果中“1”的个数为偶转移JNP/JPOOPR;结果中“1”的个数为奇转移JOOPR;结果有溢出转移JNOOPR;结果无溢出转移JCOPR;结果有进位转移JNCOPR;结果无进位转移JZ/JEOPR;结果为零/相等转移JNZ/JNEOPR;结果不为零/不相等转移(1)单条件转移指令JB
8、/JNAEOPR;小于/不大于等于(CF=1)转移JNB/JAEOPR;不小于/大于等于(CF=0)转移JBE/JNAOPR;小于等于/不大于(CF∨ZF=1)转移JNBE/JAOPR;不小于等于/大于(CF∨ZF=0)
此文档下载收益归作者所有