微机原理第02章4_第1页
微机原理第02章4_第2页
微机原理第02章4_第3页
微机原理第02章4_第4页
微机原理第02章4_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

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

文档简介

1、第第2 2章章第第2章:章:2.4 算术运算类指令算术运算类指令算术运算类指令用来执行二进制的算术运算术运算类指令用来执行二进制的算术运算:算:加减乘除加减乘除。这类指令会根据运算结果影响这类指令会根据运算结果影响状态标志状态标志,有时要利用某些标志才能得到正确的结果;有时要利用某些标志才能得到正确的结果;使用他们时请留心有关状态标志使用他们时请留心有关状态标志重点掌握重点掌握加法指令:加法指令:ADD、ADC、INC 减法指令:减法指令:SUB 、SBB、DEC、CMP、NEG第第2章:章:2.4.1 加法和减法指令加法和减法指令加法指令加法指令:ADD, ADC和和INC减法指令减法指令:

2、SUB, SBB, DEC, NEG和和CMP他们分别执行字或字节的加法和减法运算,他们分别执行字或字节的加法和减法运算,除除INC和和DEC不影响不影响CF标志外,其他按定标志外,其他按定义影响全部状态标志位义影响全部状态标志位操作数组合:操作数组合:运算指令助记符运算指令助记符 reg, imm/reg/mem运算指令助记符运算指令助记符 mem, imm/reg第第2章:章:1. 加和减指令加和减指令 ADD dest,src;加法:加法:destdestsrc;ADD指令使目的操作数加上源操作数,和指令使目的操作数加上源操作数,和的结果送到目的操作数的结果送到目的操作数SUB dest

3、,src;减法:减法:destdestsrc;SUB指令使目的操作数减去源操作数,差指令使目的操作数减去源操作数,差的结果送到目的操作数的结果送到目的操作数第第2章:例题章:例题2.7 加法加法mov ax,7348h;AX7348Hadd al,27h;AL48H27H6FH,AX736FH;OF0,SF0,ZF0,PF1,CF0add ax,3fffh;AX736FH3FFFHB36EH;OF1,SF1,ZF0,PF0,CF0第第2章:例题章:例题2.7 减法减法sub ah,0f0h;AHB3HF0HC3H,AXC36EH;OF0,SF1,ZF0,PF1,CF1mov word ptr2

4、00h,0ef00h;200HEF00H,标志不变,标志不变sub 200h,ax;200HEF00HC36EH2B92H;OF0,SF0,ZF0,PF0,CF0sub si,si;SI0;OF0,SF0,ZF1,PF1,CF0第第2章:章:2. 带进位加和减指令带进位加和减指令 ADC dest,src;加法:;加法:destdestsrcCF;ADC指令除完成指令除完成ADD加法运算外,还要加加法运算外,还要加上进位上进位CF,结果送到目的操作数,结果送到目的操作数SBB dest,src;减法:减法:destdestsrcCF;SBB指令除完成指令除完成SUB减法运算外,还要减减法运算外

5、,还要减去借位去借位CF,结果送到目的操作数,结果送到目的操作数第第2章:例章:例2.8 无符号双字加法和减法无符号双字加法和减法mov ax,7856h;AX7856Hmov dx,8234h;DX8234Hadd ax,8998h ;AX01EEH,CF1adc dx,1234h ;DX9469H,CF0sub ax,4491h ;AXBD5DH,CF1sbb dx,8000h ;DX1468H,CF0DX.AX8234 7856H1234 8998H8000 4491H1468 BD5DH第第2章:章:3. 比较指令比较指令CMP(compare)CMP dest,src;做减法运算:;

6、做减法运算:destsrc;CMP指令将目的操作数减去源操作数,但指令将目的操作数减去源操作数,但差值差值不回送不回送目的操作数目的操作数比较指令通过减法运算影响比较指令通过减法运算影响状态标志状态标志,用,用于比较两个操作数的大小关系于比较两个操作数的大小关系cmp ax,bxcmp al,100第第2章:章:4. 增量和减量指令增量和减量指令INC reg/mem;增量(加;增量(加1):):reg/memreg/mem1DEC reg/mem;减量(减;减量(减1):):reg/memreg/mem1INC指令和指令和DEC指令是单操作数指令指令是单操作数指令与加法和减法指令实现的加与加

7、法和减法指令实现的加1和减和减1不同的是:不同的是:INC和和DEC不影响不影响CF标志标志inc si;sisi1dec byte ptr si;sisi1第第2章:章:5. 求补指令求补指令NEG(negtive)NEG reg/mem;reg/mem0reg/memNEG指令对操作数执行指令对操作数执行求补运算求补运算,即用零,即用零减去操作数,然后结果返回操作数减去操作数,然后结果返回操作数求补运算也可以表达成:求补运算也可以表达成:将操作数按位取将操作数按位取反后加反后加1NEG指令对标志的影响与用零作减法的指令对标志的影响与用零作减法的SUB指令一样指令一样NEG指令也是一个单操作

8、数指令指令也是一个单操作数指令第第2章:例题章:例题2.9 求补运算求补运算mov ax,0ff64hneg al;AL064H9CH,AXFF9CH;OF0SF1,ZF0,PF1,CF1sub al,9dh ;AL9CH9DHFFH,AXFFFFH;OF0,SF1,ZF0,PF1,CF1neg ax;AX0FFFFH0001H;OF0,SF0,ZF0,PF0,CF1dec al;AL01H10,AX0000H;OF0,SF0,ZF1,PF1,CF1neg ax;AX000;OF0,SF0,ZF1,PF1,CF0第第2章:章:2.4.2 符号扩展指令符号扩展指令符号扩展是指用一个操作数的符号位

9、(最高位)符号扩展是指用一个操作数的符号位(最高位)形成另一个操作数,后一个操作数的高位是全形成另一个操作数,后一个操作数的高位是全0(正数)或全(正数)或全1(负数)(负数)符号扩展虽然使数据位数加长,但数据大小并没符号扩展虽然使数据位数加长,但数据大小并没有改变,扩展的高部分仅是低部分的符号扩展有改变,扩展的高部分仅是低部分的符号扩展符号扩展指令有两条,用来将字节转换为字,字符号扩展指令有两条,用来将字节转换为字,字转换为双字转换为双字CBW;AL符号扩展成符号扩展成AXCWD;AX符号扩展成符号扩展成DX第第2章:例题章:例题2.10 符号扩展符号扩展mov al,64h;AL64H (

10、机器数)(机器数) ,表示,表示10进制数进制数100(真值)(真值)cbw;将符号将符号0扩展,扩展,AX0064H,仍然表示,仍然表示100mov ax,0ff00h;AXFF00H,表示有符号,表示有符号10进制数进制数256cwd;将符号位将符号位“1”扩展,扩展,DX.AXFFFFFF00H;仍然表示;仍然表示256第第2章:章:2.4.3 乘法和除法指令乘法和除法指令乘法指令分乘法指令分无符号无符号和和有符号有符号乘法指令乘法指令MUL reg/mem;无符号乘法;无符号乘法IMUL reg/mem;有符号乘法;有符号乘法除法指令分除法指令分无符号无符号和和有符号有符号除法指令除法

11、指令DIV reg/mem ;无符号除法;无符号除法IDIV reg/mem;有符号除法;有符号除法第第2章:章:2.4.4 十进制调整指令十进制调整指令 十进制数调整指令对二进制运算的结果进十进制数调整指令对二进制运算的结果进行十进制调整,以得到十进制的运算结果,行十进制调整,以得到十进制的运算结果,以此实现十进制以此实现十进制BCDBCD码运算码运算80888088指令系统支持两种指令系统支持两种BCDBCD码调整运算码调整运算q压缩压缩BCD码码就是通常的就是通常的8421码;它用码;它用4个二进个二进制位表示一个十进制位,一个字节可以表示两制位表示一个十进制位,一个字节可以表示两个十进

12、制位,即个十进制位,即0099q非压缩非压缩BCD码码用用8个二进制位表示一个十进制个二进制位表示一个十进制位,只用低位,只用低4个二进制位表示一个十进制位个二进制位表示一个十进制位09,高,高4位任意,通常默认为位任意,通常默认为0第第2章:编码的比较章:编码的比较真值(十进制)真值(十进制)864二进制编码二进制编码08H 40H压缩压缩BCD码码08H 64H非压缩非压缩BCD码码 08H 0604HASCII码码38H 3634H压缩压缩BCD码加减法调整指令码加减法调整指令DAA DAS非压缩非压缩BCD码加减乘除法调整指令码加减乘除法调整指令AAA AAS AAM AAD第第2章:

13、章:2.5 位操作类指令位操作类指令 位操作类指令以位操作类指令以二进制位二进制位为基本单位进行数据的为基本单位进行数据的操作操作当需要对字节或字数据中的各个二进制位操作时,当需要对字节或字数据中的各个二进制位操作时,可以考虑采用位操作类指令可以考虑采用位操作类指令注意这些指令对标志位的影响注意这些指令对标志位的影响1. 逻辑运算指令逻辑运算指令AND OR XOR NOT TEST2. 移位指令移位指令SHL SHR SAR3. 循环移位指令循环移位指令ROL ROR RCL RCR第第2章:章:2.5.1 逻辑运算指令逻辑运算指令双操作数逻辑指令双操作数逻辑指令AND、OR、XOR和和TE

14、ST设置设置CFOF0,根据结果设置,根据结果设置SF、ZF和和PF状态,而对状态,而对AF未定义;它们的操作未定义;它们的操作数组合与数组合与ADD、SUB等一样:等一样:运算指令助记符运算指令助记符 reg, imm/reg/mem运算指令助记符运算指令助记符 mem, imm/reg 单操作数逻辑指令单操作数逻辑指令NOT不影响标志位,操不影响标志位,操作数与作数与INC、DEC和和NEG一样:一样:NOT reg/mem第第2章:逻辑与指令章:逻辑与指令AND对两个操作数执行逻辑与运算,结果送目的操作数对两个操作数执行逻辑与运算,结果送目的操作数AND dest,srcAND dest

15、,src;destdestdestdestsrcsrc 只有相只有相“与与”的两位都的两位都是是1,结果才是,结果才是1;否则,;否则,“与与”的结果为的结果为0第第2章:逻辑或指令章:逻辑或指令OR对两个操作数执行逻辑或运算,结果送目的操作数对两个操作数执行逻辑或运算,结果送目的操作数OR dest,srcOR dest,src;destdestdestdestsrcsrc只要相只要相“或或”的两位的两位有一位是有一位是1,结果就是,结果就是1;否则,结果为;否则,结果为0第第2章:逻辑异或指令章:逻辑异或指令XOR对两个操作数执行逻辑异或运算,结果送目的操作数对两个操作数执行逻辑异或运算,

16、结果送目的操作数XOR dest,srcXOR dest,src;destdestdestdestsrcsrc只有相只有相“异或异或”的两的两位不相同,结果才是位不相同,结果才是1;否则,结果为否则,结果为0第第2章:测试指令章:测试指令TEST对两个操作数执行逻辑与运算,结果并不送对两个操作数执行逻辑与运算,结果并不送目的操作数,仅按目的操作数,仅按AND指令影响标志指令影响标志TEST dest,srcTEST dest,src;destdestsrcsrc AND与与TEST指令的关系,指令的关系,同同SUB与与CMP指令的关系一样指令的关系一样第第2章:逻辑非指令章:逻辑非指令NOT对

17、一个操作数执行逻辑非运算对一个操作数执行逻辑非运算NOT reg/memNOT reg/mem;reg/memreg/memreg/memreg/mem 按位取反,原来是按位取反,原来是“ 0 ” 的 位 变 为的 位 变 为“1”;原来是;原来是“1”的位变为的位变为“0”第第2章:例章:例2.6 逻辑运算逻辑运算mov al,75h;AL75Hand al,32h;AL30H;CFOF0, SF0,ZF0,PF1or al,71h;AL71H;CFOF0,SF0,ZF0,PF1xor al,0f1h;AL80H;CFOF0,SF1,ZF0,PF0not al;AL7FH,标志不变,标志不变

18、第第2章:章: 例例2.17 逻辑运算指令的应用逻辑运算指令的应用and bl,11110110b;BL中中D0和和D3清清0,其余位不变,其余位不变or bl,00001001b;BL中中D0和和D3置置1,其余位不变,其余位不变xor bl,00001001b;BL中中D0和和D3求反,其余位不变求反,其余位不变 AND指令可用于复位某些位(同指令可用于复位某些位(同0相与),不影响其他位相与),不影响其他位 OR指令可用于置位某些位(同指令可用于置位某些位(同1相或),不影响其他位相或),不影响其他位 XOR指令可用于求反某些位(同指令可用于求反某些位(同1相异或),不影响其他位相异或)

19、,不影响其他位第第2章:章:2.5.2 移位指令移位指令将操作数移动一位或多位,分成逻辑移位将操作数移动一位或多位,分成逻辑移位和算术移位,分别具有左移或右移操作和算术移位,分别具有左移或右移操作移位指令的移位指令的第一个操作数第一个操作数是指定的被移位是指定的被移位的操作数,可以是寄存器或存储单元;的操作数,可以是寄存器或存储单元;后后一个操作数一个操作数表示移位位数:表示移位位数:该操作数该操作数为为1,表示移动一位,表示移动一位该操作数该操作数为为CL,CL寄存器值表示移位位数寄存器值表示移位位数 (移位位数(移位位数大于大于1只能只能CL表示表示)按照移入的位设置进位标志按照移入的位设

20、置进位标志CF,根据移位,根据移位后的结果影响后的结果影响SF、ZF、PF第第2章:逻辑左移指令章:逻辑左移指令SHLSHL reg/mem,1/CL;reg/mem左移左移1或或CL位位;最低位补;最低位补0,最高位进入,最高位进入CF演示演示第第2章:逻辑右移指令章:逻辑右移指令SHRSHR reg/mem,1/CL;reg/mem右移右移1/CL位位;最高位补;最高位补0,最低位进入,最低位进入CF演示演示第第2章:算术左移指令章:算术左移指令SALSAL reg/mem,1/CL;与;与SHL是同一条指令是同一条指令演示演示第第2章:算术右移指令章:算术右移指令SARSAR reg/m

21、em,1/CL;reg/mem右移右移1/CL位位;最高位不变,最低位进入;最高位不变,最低位进入CF演示演示第第2章:例章:例2.18 数据移位数据移位mov dx,6075h;DX01100000 01110101Bshl dx,1;DX11000000 11101010B;CF0,SF1、ZF0、PF0sar dx,1;DX11100000 01110101B;CF0,SF1、ZF0、PF0shr dx,1;DX01110000 00111010B;CF1,SF0、ZF0、PF1mov cl,4;CL4,标志不变,标志不变sar dx,cl;DX00000111 00000011B;CF1,SF0、ZF0、PF1第第2章:例章:例2.19 将将AL寄存器中的无符号数乘以寄存器中的无符号数乘以10 xor ah,ah;实现;实现AH0,同时使,同时使CF0shl ax,1;AX2ALmov bx,ax;BXAX2ALshl ax,1;AX4ALshl ax,1;AX8ALadd ax,bx;AX8AL2AL10ALsub ah,ahand ah,0 逻辑左移一位相当于无符号数乘以逻辑左移一位相当于无符号数乘以2 逻辑右移一位相当于无符号数除以逻辑右移一位相当于无符号数除以2第第2章:章:2

温馨提示

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

评论

0/150

提交评论