第3章 指令系统3-2(2)_第1页
第3章 指令系统3-2(2)_第2页
第3章 指令系统3-2(2)_第3页
第3章 指令系统3-2(2)_第4页
第3章 指令系统3-2(2)_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1第三章第三章 8086寻址方式和寻址方式和指令指令系统系统(3)2测试测试TEST带进位循环右移带进位循环右移RCR算术右移算术右移SAR异或异或XOR带进位循环左移带进位循环左移RCL逻辑右移逻辑右移SHR逻辑加逻辑加(或或)OR循环右移循环右移ROR算术左移算术左移SAL逻辑乘逻辑乘(与与)AND循环左移循环左移ROL逻辑左移逻辑左移SHL取反取反NOT循环移位循环移位算术逻辑移位算术逻辑移位逻辑运算逻辑运算表表3-7 逻辑运算和位移指令逻辑运算和位移指令3例例3-53 NOT指令的几种用法。指令的几种用法。 NOT AX ; NOT BL ; NOT BYTE PTRBX说明:指令执行

2、后,对标志位无影响。说明:指令执行后,对标志位无影响。4例例3-54 假设假设AX中存有数字中存有数字5和和8的的ASCII码,码,AX =3538H,要将它们转换,要将它们转换BCD码,结果放回码,结果放回AX。 AND AX,0F0FH 它将它将AH和和AL中的高中的高4位用全位用全0屏蔽掉,保留低屏蔽掉,保留低4为,结果为,结果AX=BCD 0508H。例例3-55 假设假设AX中存有两个中存有两个BCD数数0508H,要将它,要将它分别转换成分别转换成ASCII码,结果放回码,结果放回AX。 OR AX,3030H 5例例3-56 若若AL中存有某外设端口的状态信息,其中中存有某外设端

3、口的状态信息,其中D1位控制扬声器发声,要求该位在位控制扬声器发声,要求该位在0、1之间来回变之间来回变化,其余各位保留不变,实现如下:化,其余各位保留不变,实现如下: XOR AL,0000 0010B6 例例3-57 设设AL中存有报警标志。中存有报警标志。 若若D7=1,表示温度报警表示温度报警,程序要转到温度报警处理程序要转到温度报警处理程序程序T_ ALARM;D6=1,则转压力报警程序,则转压力报警程序P_ALARM,可用,可用TEST指令实现:指令实现: TEST AL,80H ;查查AL的的D7=1? JNZ T_ALAM ;是是1,则转温度报警程序则转温度报警程序 TEST

4、AL,40H ;D7=0,D6=1? JNZ P_ALRM ;是是1,转压力报警。,转压力报警。其中其中JNZ为条件转移指令,表示结果非为条件转移指令,表示结果非0则转移。则转移。7 图图3-17是对字节或字的算术或逻辑移位示意图。是对字节或字的算术或逻辑移位示意图。CFMSB-LSB0 SHL/SAL逻辑逻辑/算术左移算术左移CFMSB-LSBSHR逻辑右移逻辑右移0CFMSB-LSBSAR算术右移算术右移8 例例3-58 MOV AH,06H SAL AH,1 MOV CL,03H SHL DI,CL SAL BYTE PTRBX,1CFMSB-LSB0 SHL/SAL逻辑逻辑/算术左移算

5、术左移9 例例3-59 用右移的方法作除法如用右移的方法作除法如:133/8=16.5,即,即 MOV AL,1000 0101B ;AL=133 MOV CL,03H ;CL=移位次数移位次数 SHR AL,CL ;右移;右移3次次指令执行后,指令执行后,AL=10H=16,余数,余数5被丢失。被丢失。CFMSB-LSBSHR逻辑右移逻辑右移010 例例3-60 用用SAR指令计算指令计算-128/8=-16的程序如下:的程序如下: MOV AL,1000 0000B ;AL=-128 MOV CL,03H ;右移位次数;右移位次数3 SAR AL,CL ;右移;右移3次次指令执行后,指令执

6、行后,AL=0F0H=-16。CFMSB-LSBSAR算术右移算术右移11CFMSB-LSBROL循环左移循环左移CFMSB-LSBROR循环右移循环右移RCL带进位位循环左移带进位位循环左移CFMSB-LSBRCR带进位位循环右移带进位位循环右移CFMSB-LSB12例例3-61 ROL BX,CL ; ROR WORD PTRSI ,1 ;例例3-62 设设CF=1,AL=1011 0100B若执行若执行 ROL AL,1,则,则AL=0110 1001B, CF=1,OF=1,若执行若执行 ROR AL,1,则,则AL=0101 1010B, CF=0,OF=1,CFMSB-LSBROL

7、循环左移循环左移CFMSB-LSBROR循环右移循环右移13例例3-63 设设CF=1,AL=1011 0100B若执行若执行 RCR AL,1,则,则AL=1101 1010B, CF=0,OF=0,若执行若执行 MOV CL,3和和 RCL AL,CL, 则则AL=1010 0110B,CF=1,OF不确定。不确定。RCL带进位位循环左移带进位位循环左移CFMSB-LSBRCR带进位位循环右移带进位位循环右移CFMSB-LSB14CX=0则转移则转移JCXZ中断返回中断返回IRETCX0 ZF=0循环循环LOOPNE/LOOPNZ溢出中断溢出中断INTOCX0 ZF=1循环循环LOOPE/

8、LOOPZ中断中断INTCX0则循环则循环LOOP中断中断条件循环控制条件循环控制过程返回过程返回RET间接标志转移间接标志转移JA/JNBE等等8条条过程调用过程调用CALL直接标志转移直接标志转移JZ/JE等等10条条无条件转移无条件转移JMP条件转移条件转移无条件转移和过程调用指令无条件转移和过程调用指令表表3-9 控制转移指令控制转移指令15JMP DWORD PTRDI存储器存储器(32位位)间接间接JMP FAR PTR PROG_F立即转移立即转移(32位位)直接直接段间段间转移转移JMP WORD PTR 5BX存储器存储器(16位位)间接间接JMP BX寄存器寄存器(16位位

9、)间接间接JMP NEAR PTR PROG_N立即近转移立即近转移(16位位)直接直接JMP SHORT PROG_S立即短转移立即短转移(8位位)直接直接段内段内转移转移指令举例指令举例寻址目标寻址目标方式方式类型类型表表3-10 无条件转移指令的类型和方法无条件转移指令的类型和方法16 段内直接转移段内直接转移例:例:JMP0120H ;直接转向;直接转向0120H JMPSHORT LP ;转向;转向LP JMPNEAR PTR BBB;转向;转向BBB17段内间接转移段内间接转移 例例3-64 JMP BX 若若BX=4500H,则指令执行后,则指令执行后,IP=4500H,于是转向

10、代码段于是转向代码段的偏移地址的偏移地址4500H处开始执行。处开始执行。 例例3-65 JMP WORD PTR 5BX 若若DS=2000H,BX=100H,(20100H)=4F0H 则指令执行后则指令执行后,IP=(20000H+100H+5H)=(20105)=4F0H,即转即转移到代码段内偏移地址为移到代码段内偏移地址为4F0H处开始执行。处开始执行。18段间直接转移段间直接转移 例例3-66 JMP3500H:080AH 执行时,执行时,(IP)080AH,(CS)3500H,程序从,程序从3500H:080AH开始执行。开始执行。 注:直接地址为符号地址时,段间直接转移指令注:

11、直接地址为符号地址时,段间直接转移指令中的符号地址前应加操作符中的符号地址前应加操作符FAR PTR。 例:例:JMP FAR PTR far_label其中的其中的far_label为远类型的标号。为远类型的标号。19段间间接转移段间间接转移JMP DWORD PTRSI 设指令执行前设指令执行前:(DS)=4000H,(SI)=1212H, (41212H)=1000H,(41214H)=4A00H 则指令执行后则指令执行后:(IP)=1000H,(CS)=4A00H 于是转到于是转到4B000H处开始执行指令。处开始执行指令。例中的例中的DWORD PTR表示转移地址是一个双字。表示转移

12、地址是一个双字。2040001212+) 41212DSSI0010004A 4121241213412144121510004A00IPCS段间间接转移操作示意图段间间接转移操作示意图1111111111101100JMP DWORD PTR SI的机器码的机器码DS:SI21例:例:CALL 0120H ;CALL 0120H ;子程序偏移地址由指令子程序偏移地址由指令给出给出位移量由汇编程序在汇编时进行计算位移量由汇编程序在汇编时进行计算,如下例如下例: CS:0102 CALL 0120H;3字节字节 CS:0105 则位移量为则位移量为: 0120-0105H=001BH22段内间接

13、调用段内间接调用 例例3-67 CALL BX ;子程序地址由子程序地址由BX给出给出 CALL WORD PTRSI ;子程序地址在存储器中子程序地址在存储器中23操作图示:操作图示:CALL IPH IPL81200H81201H24段间直接调用段间直接调用例:例:CALL 2000H:1000H CALL TIMER ;TIMER为远过程为远过程25段间间接调用段间间接调用例:例:CALL DWORD PTRDI 调用地址在调用地址在DI,DI+1,DI+2,DI+3四个存储单元中。四个存储单元中。低字内容为偏移地址低字内容为偏移地址,高字内容为段地址高字内容为段地址。26CALL IP

14、H IPL CSH CSLDIDI+1DI+2DI+3段间间接调用示意图段间间接调用示意图27例:下面的程序执行后,例:下面的程序执行后,AX=? DX=? CS:2000H MOV AX, 2012H 2003H MOV CX, 200CH 2006H PUSH CX 2007H CALL 4000H 200AH ADD AX, BX 200CH ADD AX, DX 200EH HLT CS:4000H MOV BX, 200AH POP DX RET28奇偶位为奇偶位为0/为奇为奇 转移转移PF=0JNP/JPO奇偶位为奇偶位为1/为偶为偶 转移转移PF=1JP/JPE无溢出无溢出 转移

15、转移OF=0JNO溢出溢出 转移转移OF=1JO符号为正符号为正 转移转移SF=0JNS符号为负符号为负 转移转移SF=1JS结果不为零结果不为零/不相等不相等 转移转移ZF=0JNZ/JNE结果为零结果为零/相等相等 转移转移ZF=1JZ/JE无进位无进位 转移转移CF=0JNC有进位有进位 转移转移 CF=1JC指令功能指令功能测试条件测试条件指令助记符指令助记符表表3-11 直接标志条件转移指令直接标志条件转移指令29例例3-68 求求AL和和BL寄存器中的两个数之和,若有进寄存器中的两个数之和,若有进位,则位,则AH置置1,否则,否则AH清清0。可用如下程序来实现。可用如下程序来实现该

16、操作:该操作: ADD AL,BL JC NEXT ;有进位转;有进位转 MOV AH,0 ; JMP EXIT ;NEXT: MOV AH,1EXIT .AL+BL有进位有进位AH1AH0NY30小于等于小于等于/不大于不大于 转移转移(SF OF)ZF=1JLE/JNG小于小于/不大于等于不大于等于 转移转移SF OF=1JL/JNGE大于等于大于等于/不小于不小于 转移转移SF OF=0JGE/JNL大于大于/不小于等于不小于等于 转移转移(SF OF)ZF=0JG/JNLE带符带符号数号数比较比较测试测试低于等于低于等于/不高于不高于 转移转移CFZF=1JBE/JNA低于低于/不高于

17、等于不高于等于 转移转移CF=1JB/JNAE高于等于高于等于 /不低于不低于 转移转移CF=0JAE/JNB高于高于/不低于等于不低于等于 转移转移CFZF=0JA/JNBE无符无符号数号数比较比较测试测试指令功能指令功能测试条件测试条件指令助记符指令助记符类别类别表表3-12 间接标志条件转移指令间接标志条件转移指令31例例3-69 设某个学生的英语成绩已放在设某个学生的英语成绩已放在AL寄存寄存器中,若低于器中,若低于60分,则打印分,则打印F;若高于或等于;若高于或等于85分,则打印分,则打印G;当在;当在60分和分和84分之间时,打分之间时,打印印P。可用下面程序实现。可用下面程序实

18、现 CMP AL,60 ;AL-60 JB FAIL CMP AL,85 JAE GOOD MOV AL,P JMP PRINTPAIL:MOV AL,F JMP PRINTGOOD:MOV AL,GPRINT: .NY打印打印小于小于60?ALF大于大于85?ALGALPYN32例例3-70 假商店里有假商店里有8种商品,价格分别为种商品,价格分别为83元,元,76元,元,65元,元,84元,元,71元,元,49元,元,62元和元和58元,元,现要将每种商品提价现要将每种商品提价7元,编程计算每种商品元,编程计算每种商品提价后的价格。提价后的价格。OLD DB 83H,76H,65H,84H DB 71H,49H,62H,58HNEW DB 8 DUP(?)(?) MOV CX,08H MOV BX,00HNEXT:MOV AL,OLDBX ADD AL,7 DAA MOV NEWBX,AL INC BX LOOP NEXT 33例例3-71 设有一个由设有一个由50个字节组成的数字存放在个字节组成的数字存放在ARRAY开始的内存单元中,现要对该数组中开始的内存单元中,现要对该数组中的元素进行测试,若元素为的元素进行测试,若元素为0,而且不是最后,而且不是最后一个元素,便继续进行下一个元素的测试,直一个元素,便继续进行

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论