第3章 8086的寻址方式和指令系统(3)_第1页
第3章 8086的寻址方式和指令系统(3)_第2页
第3章 8086的寻址方式和指令系统(3)_第3页
第3章 8086的寻址方式和指令系统(3)_第4页
第3章 8086的寻址方式和指令系统(3)_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

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

文档简介

1、第三章第三章 80868086的寻址方式的寻址方式和指令系统(和指令系统(3 3)3.4.2 算术运算指令(算术运算指令(Arithmetic)8086提供的算术运算指令可分为以下几类:1、加法指令:ADD ADC INC2、减法指令:SUB SBB DEC3、乘法指令:MUL IMUL4、除法指令:DIV IDIV5、变补指令、比较指令:NEG CMP6、十进制调整指令:DAA DAS AAA AAS AAM AAD7、符号扩展指令:CBW CBD特点:特点: 大部分都影响标志位大部分都影响标志位,不同指令影响不同不同指令影响不同: (1) 加、减法指令影响 SF,ZF,AF,PF,CF,O

2、F; (2) 加1和减1指令不影响CF; (3) 乘法指令影响CF,OF; (4) 除法指令使大部分标志位的状态不确定; (5) 对BCD码调整指令对标志位的影响不同; (6) 转换指令对标志位无影响 都可以用于字节、字的运算都可以用于字节、字的运算; 双操作数指令除源操作数为立即数外,其余必须有一个操双操作数指令除源操作数为立即数外,其余必须有一个操作数为寄存器;单操作数指令不能为立即数。作数为寄存器;单操作数指令不能为立即数。指令格式指令格式:ADD dst ,src ;(dst) (dst)+(src)指令功能指令功能:两个操作数相加,结果送至目的操作数dst src :立即数,寄存器,

3、存储器。立即数,寄存器,存储器。 dst:寄存器,存储器。寄存器,存储器。注:注:不能两个操作数都是存储器数,且寄存器不能为段寄存器。例:例:ADD CL,10H;寄存器+立即数ADD DX,SI;寄存器+寄存器ADD AX, MEM;寄存器+存储器ADD BX+DATA, AL;存储器+寄存器ADD DI+DATA,30H ;存储器+立即数1、ADD 不带进位的加法指令一、加法指令一、加法指令指令格式指令格式:ADC dst,src ;(dst)(dst)+(src)+ 进位标志CF的现行值()指令功能指令功能:两个操作数相加再加上进位标志CF,结果送至目的操作数dst用途用途:主要用于多字

4、节运算中。例:ADC CX, 300 ;寄存器+立即数+CFADC AL, BL ;寄存器+寄存器+CFADC DX, SI+COUNT ;寄存器+存储器CFADC DI+1234H, BX ;存储器+寄存器+CF ADC MEM, 1234H ;存储器+立即数+CF2、ADC(Add With Carry) 带进位加法指令MOV SI, 2000H ;第一个数的首址MOV DI,3000H ;第二个数的首址MOV AX,SI ;第一个数的低16位取到AX ADD AX,DI ;两个数的低16位相加MOV SI,AX ;低16位相加的结果送到2000H字单元MOV AX,SI+2 ;取第一个数

5、的高16位到AX中ADC AX,DI+2 ;两个高16位数相加,再加CFMOV SI+2,AX ;高16位的结果送到2002H和2003H单元例:将两个四字节的无符号数相加,两个数分别放在2000H、3000H开始的单元,要求结果放在2000H开始的单元指令格式指令格式: INC dst ;(B/W), (dst)(dst)+1 dst : 指令功能指令功能:对指定的目标操作数+1 。用途用途:用于在循环程序中修改地址指针和循环次数。标志位影响情况:影响SF,ZF,AF,PF,OF,3、INC (Increment by 1 ) 加1指令例:例: INC DL; 8位寄存器1 INC SI ;

6、16位寄存器1 INC BYTE PTR BXSI ;存储器1(字节操作) INC WORD PTR DI;存储器1(字操作) INC DS; 错例:MOV AL,7EH;(AL)=7EHMOV BL, 5BH;(BL)=5BHADD AL,BL;(AL)=7EH+5BH=D9H影响标志位的情况:SF=1, 结果最高位1ZF=0 ,结果不等于0AF=1 ,D3 位向D4 有进位PF=0,”1”的个数为奇数CF=0 ,无进位OF=1 ,和超过1271 11 11 11 11 11 10 00 00 01 10 01 11 10 01 11 1+ +1 11 10 01 11 10 00 01 1

7、AF=1AF=1指令格式指令格式:SUB dst,src ;(dst)(dst)-(src)Src:立即数,寄存器,存储器。dst:寄存器,存储器。例:SUB AL,37H;寄存器-立即数SUB BX,DX;寄存器-寄存器SUB CX, VAR1;寄存器-存储器SUB SI, AX ;存储器-寄存器SUB DI,0512H ;存储器减立即数这种指令影响标志位: AF、CF、OF、PF、SF、ZF标志。CF=1,无符号数小减大,运算结果溢出;OF=1,带符号数运算溢出。1、SUB 减法指令二、减法指令二、减法指令指令格式指令格式:SBB dst,src ;(dst)(dst)-(src)-CFC

8、F: 借位标志CF的现行值(上条指令CF值)指令影响标志位、B/W数运算情况同SUB。用途用途:用于多字节数相减。例:SBB BX,100H;寄存器-立即数 -CFSBB CX,DX;寄存器-寄存器-CFSBB AL, DATA1SI ;寄存器-存储器-CFSBB DISPBP, BL;存储器-寄存器-CF SBB BYTE DISPSI+6, 96H;存储器-立即数-CF2、SBB 带借位减法指令指令格式指令格式: DEC dst ;(B/W) (dst)(dst)-1 指令功能指令功能:对指定的目标操作数-1 操作数单元。用途用途:用于在循环程序中修改地址指针和循环次数。标志位影响情况:影

9、响SF,ZF,AF,PF,OF。 不影响CF。3、DEC 减1指令指令格式指令格式: NEG dst ;B/W, (dst) 0 - (dst) dst : 寄存器、存储器。指令功能指令功能:对操作数取补码。即相当于用0减去目的操作数,并将结果再送回目的操作数。可利用NEG指令得到补码表示的负数的绝对值。操作操作: 把操作数按位求反后末位+1。影响标志影响标志:AF、CF、OF、PF、SF、ZF。1、NEG (Negate) 求补指令三、取补指令三、取补指令NEG、比较指令、比较指令CMP指令格式指令格式:CMP dst,src ; B/W src:立即数,寄存器,存储器。 dst:寄存器,存

10、储器。指令功能指令功能 将dst减src,执行完后dst、src保持不变,结果不送回,只置标志。影响标志影响标志: AF、CF、OF、PF、SF、ZF 。例: CMP AL,0AH;寄存器与立即数比较CMP CX, DI ;寄存器与寄存器比较CMP AX, AREA1;寄存器与存储器比较CMP BX+1234H, SI;存储器与寄存器比较 CMP DI, 10H ;存储器与立即数比较2、CMP(Compare) 比较指令用途:用途: 用比较指令来比较两个数之间的关系:两者是否相等,两个数中哪个大。(1) 根据ZF标志,判断两者是否相等;(2) 根据CF标志, 判断两个无符号数的大小;(3) 用

11、SF、OF标志,判断二个带符号数的大小。 例: CMP AX, BXZF=1, (AX) = (BX),两者相等ZF=0, (AX) (BX),两者不相等CF=0 ,(AX) (BX); CF=1, (AX) (BX)F,(AX) (BX); F1, (AX) 9,则(AL)加06H,且自动置AF=1;若CF=1 or (AL)高4位9,则(AL)加60H,且自动置CF=1。若(AL)高低4位均9,则(AL)加66H,且置AF=1,CF=1.例:计算1+8的值 0 0 0 1+ 1 0 0 0 1 0 0 11+8=9正确例:计算5+7的值 0 1 0 1+ 0 1 1 1 1 1 0 0+

12、0 1 1 01 0 0 1 0 结果大于9加6修正5+7=12正确 0100 1000 48H MOV AL,48H + 0111 0100 74H MOV BL,74H 1011 1100 BCH ADD AL,BL + 0110 0110 66H DAA 1 0010 0010 1 22H 最后结果为: (AL)=22H, CF=1, AF=1例: DAS (decimal adjust for subtraction)减法的十进制调整指令指令格式指令格式:DAS指令功能指令功能:该指令之前必须先执行SUB或SBB指令,减法指令将两个压缩的BCD码相减,并将结果存放在AL寄存器中,而后D

13、AS将AL中的差调整到压缩的BCD格式。方法:检测CPU中AL的高4位、低4位是否为有效的BCD码。若AF=1 or (AL)低4位9,则(AL)减06H,且自动置AF=1;若CF=1 or (AL)高4位9,则(AL)减60H,且自动置CF=1。若(AL)高低4位均9,则(AL)减66H,且置AF=1,CF=1. 1000 0011 83H MOV AL,83H - 0011 1000 38H MOV BL,38H 0100 1011 4BH SUB AL,BL - 0000 0110 06H DAS 0100 0101 45H 最后结果为: (AL)=45H, CF=0, AF=1例:完成

14、BCD码83H-38H=?的减法计算。2) 非压缩BCD码调整指令AAA (ASCII adjust for addition)加法的ASCII码调整指令指令格式指令格式:AAA指令功能指令功能:将两个ASCII码或非压缩BCD码相加之和存放在AL中,而后进行调整,形成一个扩展的非压缩BCD码,调整后的结果低位在AL中,高位在AH中。执行指令时,CPU对AL中的低4位进行检测。如果AL中低4位大于9或AF=1,则将AL寄存器的内容加6,AH寄存器的内容加1,并将AF置1,CF置1,同时将AL中的高4位清零。AAS (ASCII adjust for subtraction)减法的ASCII码调

15、整指令指令格式指令格式:AAS指令功能指令功能:将两个ASCII码或非压缩BCD码相减之差存放在AL中,而后进行调整,形成一个扩展的非压缩BCD码,调整后的结果低位在AL中,高位在AH中。执行指令时,CPU对AL中的低4位进行检测。如果AL中低4位大于9或AF=1,则将AL寄存器的内容减去06H,AL寄存器的内容减去01H,并将AF置1,CF,同时将AL中的高4位清零置1。 AAM(ASCII adjust for multiplication)BCD码乘法调整指令指令格式指令格式:AAM指令功能指令功能:将存放在AL寄存器中两个一位非压缩BCD码相乘之积调整为非压缩BCD码。 AAD (AS

16、CII adjust for division)BCD码除法调整指令指令格式指令格式:AAD指令功能指令功能:将AX中存放的两位非压缩BCD码调整为二进制数。七、符号扩展指令七、符号扩展指令符号扩展指令为无操作数指令。隐含的操作数为累加器AL、AX。1、CBW(Convert Byte to Word)字节转换为字指令指令格式指令格式:CBW 指令功能指令功能:将(AL)的符号扩展到(AH)中所有位,由字节扩展成字。0 00 AHALD7D0D7D0正数正数1 11 AHALD7D0D7D0负数负数* *指令执行后不影响标志位指令执行后不影响标志位2、CWD(Convert Word to D

17、ouble Word)字转换为双字指令指令格式指令格式:CWD指令功能指令功能:将(AX)的符号扩展到(DX)的所有位,由字扩展为双字。0 00 DXAXD15D0D15D0正数正数1 11 DXAXD15D0D15D0负数负数* *指令执行后不影响标志位指令执行后不影响标志位1、逻辑运算指令、逻辑运算指令 AND逻辑“与” TEST测试指令 OR逻辑“或” XOR逻辑“异或” NOT逻辑“非”3.4.3 逻辑运算和逻辑运算和移位指令移位指令8086可以对8位,或16位操作数执行逻辑操作。影响标志位: (NOT指令除外,其他指令同) , AF未定义 , 1)AND指令格式指令格式: AND d

18、st,src指令功能指令功能:两个操作数进行按位的逻辑“与”运算,结果送到目的操作数dst“有0则0,全1才1”用途用途:常用于屏蔽某些不关心的为(使该位置0),保留一些有用的位。AND AL,0AFH 10101111B例例 若(AL)=4 H ,要求屏蔽高4位,保留低四位。 AND AL, 0 H ; (AL)=03H, ; ;。例例 要求屏蔽AL寄存器中的第6位和第4位2)OR指令格式指令格式: OR dst,src指令功能指令功能:两个操作数进行按位的逻辑“或”运算,结果送到 目的操作数dst“有1则1,全0才0”用途用途:常用于将某些指定位置置“1”,其余位保持不变。3) NOT指令

19、格式指令格式: NOT dst指令功能指令功能:把操作数dst按位取反,结果送回dst例例: 若(AL)=4 H ,执行NOT指令后,(AL)=? NOT AL;执行指令后, (AL)=BCH 4)XOR指令格式指令格式:XOR dst,src指令功能指令功能:两个操作数进行按位的逻辑“异或”运算,结果送到目的操作数dst“相同为0,不同为1”用途用途:常用于将寄存器内容清0,测试两个数是否相等,或者对某些特定位求反。例例 要求将AX内容清0. XOR AX, AXXOR AL,03H 00000011B例例 要求AL寄存器中的第0位和第1位变反指令格式指令格式:TEST dst,src指令功

20、能指令功能:两个操作数进行按位的逻辑“与”运算,结果不送到目的操作数dst,仅仅影响标志位用途用途:常用于检测某位是否为1,但不改变原来值的场合。例例 检查AL中的D6位或D2位是否有一位为1TEST AL,01000100B执行指令后,如果6、2位都为0,ZF=1,否则ZF=0TEST AL,44H5)TEST8086有有8条移位指令:条移位指令:( 4条 ): 。 SHL/SAL(Shift logical left/shift arithmetic left) 逻辑左移/算术左移指令 SHR (Shift logical right ) 逻辑右移指令 SAR (Shift arithme

21、tic right ) 算术右移指令( 4条): 。 ROL (Rotate left ) 不含CF循环左移指令 ROR (Rotate right ) 不含CF循环右移指令 RCL (Rotate left through carry )含CF循环左移指令 RCR (Rotate right through carry )含CF循环右移指令2、移位指令、移位指令共同点:共同点:所有移位指令都可以作B/W操作。 指令中的 源操作数: 表示移位次数 op1=1,1可写在指令中,不能是1以外的常数。 op11,用CL存放移位次数 ,不能是其他寄存器。 利用移位指令编制乘除程序,执行时间比直接用乘除

22、指令快, 速度可提高5-6倍。 SHL/SAL(Shift logical left/shift arithmetic left)逻辑左移/算术左移指令指令格式指令格式: SHL dst ,cnt ;逻辑左移指令, SAL dst ,cnt ;算术左移指令, 执行操作执行操作:相当于无符号数*2功能指令操作示意图如下所示:1) 算术/逻辑移位指令0CF高 低操作数指令格式举例: SHL AH,1 SAL SI, CL SHR (Shift logical right )逻辑右移指令指令格式指令格式: SHR dst ,cnt 执行操作执行操作:相当于无符号数2功能。SHR指令操作示意图如下图所示:指令格式举例:SHR BL , 1SHR AX , CLSHR MEM,CLCF高 低0SAR (Shift arithmetic right )指令格式指令格式: SAR dst ,cnt ;执行操作执行操作:相

温馨提示

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

评论

0/150

提交评论