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

下载本文档

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

文档简介

第2章第2章:2.2.2算术运算类指令算术运算类指令用来执行二进制的算术运算:加减乘除。这类指令会根据运算结果影响状态标志,有时要利用某些标志才能得到正确的结果;使用他们时请留心有关状态标志重点掌握加法指令:ADD、ADC、INC减法指令:SUB、SBB、DEC、CMP、NEG第2章:2.2.2加法和减法指令加法指令:ADD,ADC和INC减法指令:SUB,SBB,DEC,NEG和CMP他们分别执行字或字节的加法和减法运算,除INC和DEC不影响CF标志外,其他按定义影响全部状态标志位操作数组合:运算指令助记符reg,imm/reg/mem运算指令助记符mem,imm/reg第2章:1.加和减指令

ADD

dest,src

;加法:dest←dest+src

;ADD指令使目的操作数加上源操作数,和的结果送到目的操作数

SUB

dest,src

;减法:dest←dest-src

;SUB指令使目的操作数减去源操作数,差的结果送到目的操作数第2章:例题2.7加法movax,7348h ;AX=7348Haddal,27h

;AL=48H+27H=6FH,AX=736FH

;OF=0,SF=0,ZF=0,PF=1,CF=0addax,3fffh

;AX=736FH+3FFFH=B36EH

;OF=1,SF=1,ZF=0,PF=0,CF=0第2章:例题2.7减法subah,0f0h

;AH=B3H-F0H=C3H,AX=C36EH

;OF=0,SF=1,ZF=0,PF=1,CF=1movwordptr[200h],0ef00h

;[200H]=EF00H,标志不变sub[200h],ax

;[200H]=EF00H-C36EH=2B92H

;OF=0,SF=0,ZF=0,PF=0,CF=0sub

si,si

;SI=0

;OF=0,SF=0,ZF=1,PF=1,CF=0第2章:2.带进位加和减指令ADC

dest,src

;加法:dest←dest+src+CF

;ADC指令除完成ADD加法运算外,还要加上进位CF,结果送到目的操作数SBB

dest,src

;减法:dest←dest-src-CF

;SBB指令除完成SUB减法运算外,还要减去借位CF,结果送到目的操作数第2章:例2.8无符号双字加法和减法movax,7856h ;AX=7856Hmovdx,8234h ;DX=8234Haddax,8998h ;AX=01EEH,CF=1adcdx,1234h ;DX=9469H,CF=0subax,4491h ;AX=BD5DH,CF=1sbbdx,8000h ;DX=1468H,CF=0DX.AX=82347856H+12348998H-80004491H=1468BD5DH第2章:3.比较指令CMP(compare)CMP

dest,src

;做减法运算:dest-src

;CMP指令将目的操作数减去源操作数,但差值不回送目的操作数比较指令通过减法运算影响状态标志,用于比较两个操作数的大小关系cmp

ax,bxcmpal,100第2章:4.增量和减量指令INC

reg/mem

;增量(加1):reg/mem←reg/mem+1DEC

reg/mem

;减量(减1):reg/mem←reg/mem-1INC指令和DEC指令是单操作数指令与加法和减法指令实现的加1和减1不同的是:INC和DEC不影响CF标志incsi

;si←si+1decbyteptr[si] ;[si]←[si]-1第2章:5.求补指令NEG(negtive)NEGreg/mem

;reg/mem←0-reg/memNEG指令对操作数执行求补运算,即用零减去操作数,然后结果返回操作数求补运算也可以表达成:将操作数按位取反后加1NEG指令对标志的影响与用零作减法的SUB指令一样NEG指令也是一个单操作数指令第2章:例题2.9求补运算movax,0ff64hnegal

;AL=0-64H=9CH,AX=FF9CH

;OF=0SF=1,ZF=0,PF=1,CF=1subal,9dh ;AL=9CH-9DH=FFH,AX=FFFFH

;OF=0,SF=1,ZF=0,PF=1,CF=1negax

;AX=0-FFFFH=0001H

;OF=0,SF=0,ZF=0,PF=0,CF=1decal

;AL=01H-1=0,AX=0000H

;OF=0,SF=0,ZF=1,PF=1,CF=1negax

;AX=0-0=0

;OF=0,SF=0,ZF=1,PF=1,CF=0第2章:2.2.3符号扩展指令符号扩展是指用一个操作数的符号位(最高位)形成另一个操作数,后一个操作数的高位是全0(正数)或全1(负数)符号扩展虽然使数据位数加长,但数据大小并没有改变,扩展的高部分仅是低部分的符号扩展符号扩展指令有两条,用来将字节转换为字,字转换为双字

CBW

;AL符号扩展成AX CWD

;AX符号扩展成DX第2章:例题2.10符号扩展moval,64h

;AL=64H(机器数)

,表示10进制数100(真值)cbw

;将符号0扩展,AX=0064H,仍然表示100movax,0ff00h

;AX=FF00H,表示有符号10进制数-256cwd

;将符号位“1”扩展,DX.AX=FFFFFF00H

;仍然表示-256第2章:2.2.4乘法和除法指令乘法指令分无符号和有符号乘法指令MULreg/mem ;无符号乘法IMULreg/mem ;有符号乘法除法指令分无符号和有符号除法指令DIVreg/mem ;无符号除法IDIVreg/mem ;有符号除法第2章:2.2.4十进制调整指令十进制数调整指令对二进制运算的结果进行十进制调整,以得到十进制的运算结果,以此实现十进制BCD码运算8088指令系统支持两种BCD码调整运算压缩BCD码就是通常的8421码;它用4个二进制位表示一个十进制位,一个字节可以表示两个十进制位,即00~99非压缩BCD码用8个二进制位表示一个十进制位,只用低4个二进制位表示一个十进制位0~9,高4位任意,通常默认为0第2章:编码的比较真值(十进制) 8 64二进制编码 08H 40H压缩BCD码 08H 64H非压缩BCD码 08H 0604HASCII码 38H 3634H压缩BCD码加减法调整指令DAADAS非压缩BCD码加减乘除法调整指令AAAAASAAMAAD第2章:2.2.5位操作类指令位操作类指令以二进制位为基本单位进行数据的操作当需要对字节或字数据中的各个二进制位操作时,可以考虑采用位操作类指令注意这些指令对标志位的影响1.逻辑运算指令AND

OR

XOR

NOT

TEST2.移位指令SHL

SHR

SAR3.循环移位指令ROL

ROR

RCL

RCR第2章:2.2.6逻辑运算指令双操作数逻辑指令AND、OR、XOR和TEST设置CF=OF=0,根据结果设置SF、ZF和PF状态,而对AF未定义;它们的操作数组合与ADD、SUB等一样:运算指令助记符reg,imm/reg/mem运算指令助记符mem,imm/reg

单操作数逻辑指令NOT不影响标志位,操作数与INC、DEC和NEG一样:NOTreg/mem第2章:逻辑与指令AND对两个操作数执行逻辑与运算,结果送目的操作数ANDdest,src

;dest←dest∧src只有相“与”的两位都是1,结果才是1;否则,“与”的结果为0第2章:逻辑或指令OR对两个操作数执行逻辑或运算,结果送目的操作数ORdest,src

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

;dest←dest⊕src只有相“异或”的两位不相同,结果才是1;否则,结果为0第2章:测试指令TEST对两个操作数执行逻辑与运算,结果并不送目的操作数,仅按AND指令影响标志TESTdest,src

;dest∧src

AND与TEST指令的关系,同SUB与CMP指令的关系一样第2章:逻辑非指令NOT对一个操作数执行逻辑非运算NOTreg/mem

;reg/mem←~reg/mem

按位取反,原来是“0”的位变为“1”;原来是“1”的位变为“0”第2章:例2.11逻辑运算moval,75h ;AL=75Handal,32h ;AL=30H

;CF=OF=0,SF=0,ZF=0,PF=1oral,71h ;AL=71H

;CF=OF=0,SF=0,ZF=0,PF=1xoral,0f1h ;AL=80H

;CF=OF=0,SF=1,ZF=0,PF=0notal ;AL=7FH,标志不变第2章:例2.12逻辑运算指令的应用andbl,11110110b

;BL中D0和D3清0,其余位不变orbl,00001001b

;BL中D0和D3置1,其余位不变xorbl,00001001b

;BL中D0和D3求反,其余位不变

AND指令可用于复位某些位(同0相与),不影响其他位

OR指令可用于置位某些位(同1相或),不影响其他位

XOR指令可用于求反某些位(同1相异或),不影响其他位第2章:2.2.6移位指令将操作数移动一位或多位,分成逻辑移位和算术移位,分别具有左移或右移操作移位指令的第一个操作数是指定的被移位的操作数,可以是寄存器或存储单元;后一个操作数表示移位位数:该操作数为1,表示移动一位该操作数为CL,CL寄存器值表示移位位数(移位位数大于1只能CL表示)按照移入的位设置进位标志CF,根据移位后的结果影响SF、ZF、PF第2章:逻辑左移指令SHLSHLreg/mem,1/CL

;reg/mem左移1或CL位

;最低位补0,最高位进入CF演示第2章:逻辑右移指令SHRSHRreg/mem,1/CL

;reg/mem右移1/CL位

;最高位补0,最低位进入CF演示第2章:算术左移指令SALSALreg/mem,1/CL

;与SHL是同一条指令演示第2章:算术右移指令SARSARreg/mem,1/CL

;reg/mem右移1/CL位 ;最高位不变,最低位进入CF演示第2章:例2.13数据移位movdx,6075h

;DX=0110000001110101Bshldx,1

;DX=1100000011101010B

;CF=0,SF=1、ZF=0、PF=0sardx,1

;DX=1110000001110101B

;CF=0,SF=1、ZF=0、PF=0shrdx,1

;DX=0111000000111010B ;CF=1,SF=0、ZF=0、PF=1movcl,4

;CL=4,标志不变sar

dx,cl

;DX=0000011100000011B

;CF=1,SF=0、ZF=0、PF=1第2章:例2.14将AL寄存器中的无符号数乘以10xor

ah,ah

;实现AH=0,同时使CF=0shlax,1

;AX←2×ALmov

bx,ax

;BX←AX=2×ALshlax,1

;AX←4×ALshlax,1

;AX←8×ALaddax,bx

;AX←8×AL+2×AL=

温馨提示

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

评论

0/150

提交评论