微机原理及应用03_2

上传人:我** 文档编号:116900969 上传时间:2019-11-17 格式:PPT 页数:34 大小:176.50KB
返回 下载 相关 举报
微机原理及应用03_2_第1页
第1页 / 共34页
微机原理及应用03_2_第2页
第2页 / 共34页
微机原理及应用03_2_第3页
第3页 / 共34页
微机原理及应用03_2_第4页
第4页 / 共34页
微机原理及应用03_2_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《微机原理及应用03_2》由会员分享,可在线阅读,更多相关《微机原理及应用03_2(34页珍藏版)》请在金锄头文库上搜索。

1、第3章 80x86指令系统 3.4 8086/8088指令系统 3.4.1数据传送类指令(续) 2. 累加器专用传送指令 操作数 类型 IN AL,nAL(n) IN AX,nAX(n+1)(n) IN AL,DXAL(DX) IN AX,DX AL(n) AX(n+1)(n) AL(DX) TranslateTableXLAT In Out OUT n,AL OUT n,AX OUT DX,AL OUT DX,AX B B B B B W W W W 操作说明 助记符指令名称 AL(DX+1)(DX) AX(DX+1)(DX) AL(BXAL) (1)I/O指令 长格式:IN AL,PORT

2、 IN AX,PORT OUT AL,PORT OUT AX,PORT 这里PORT对应的端口范围0FFH。 短格式:IN AL,DX和IN AX,DX OUT AL,DX和OUT AX,DX 使用短格式时,应先将端口地址赋给DX。例如 : MOV DX,02F0H INAX,DX (2)换码(Translate)指令 格式:XLAT;(AL)(BX)(AL) 或:XLATTABLENAME 。 换码指令可用于码制转换,不论码有无规律。 例如数字09 的格雷码为02H,06H,07H, 05H,04H,0CH,0DH,0FH,0EH,0AH 。可用如下程序实现。 LEABX,TABLE INA

3、L,10 XLATTABLE OUT10,AL 02H 06H 07H 05H 04H 0CH 0DH 0FH 0EH 0AH M (DS) (BX)TABLE (BX)(AL) (AL)=7 0FHAL 3.地址目标传送指令 助记符指令操作类型操作说明 Load Effective Address Load Pointer into DS Load Pointer into ES 名称 LEA r,src LDS r,src LES r,src DW DW rADR(src) r(EA), DS(EA2) r(EA), ES(EA2) (1)有效地址送寄存器指令 例:把100个字节从AREA

4、1搬移到AREA2的操作。 LEASI,AREA1 LEADI,AREA2 MOVCX,64H AGAIN:MOVAL,SI MOVDI,AL INCSI INCDI DECCX JNZAGAIN (2)指针送寄存器和DS的指令 例如:LDSSI,2130;通常r用SI,非seg 1FH 3CH 00H 20H M (DS)=3000H 32130H EA=2130 3C1FH 2000H SI DS (3)指针送寄存器和ES的指令 格式:LES r,src;与LDS 类似,r常用DI,用ES 代替DS。 (DI) (ES) (BP) ROUT的返回地址 字符串首趾的段地址 字符串首趾的偏移量

5、 M BP ROUT进入时 ,(SP) ROUT进入前 (SS) ROUT:PUSH BP MOV BP,SP PUSH ES PUSH DI LESDI,BP+4 CALL DISP 例如:子程序 DI ES 4. 标志传送指令 名称助记符指令 操作类型操作说明 Load AH from Flags Store AH into Flags AHF,AF,CF, PF,SF和ZF受影响 PUSHFW F(SP),SPSP2, 所有标志均受影响 LAHF SAHF B B AHF (SP)F,SPSP2 Push Flags Pop Flags POPFW OFDFIFTFSFZFAFPFCFF

6、LAGS 780 15 D7D6D4D2D0 3.4.2 算术运算(Arithmatic)类指令 算术运算指令包括加、减、乘、除4种基本运 算指令,以及为适应BCD码十进制数运算而 设置的各种校正指令,共20条。 除1指令外,都有两个操作数,且对CF、 OF、ZF、SF、PF、和AF等6位标志均可产 生影响。 无符号数运算产生溢出时,CF1; 有符号数运算产生溢出时,OF1。 1. 加法类指令(ADD) 操作数 类型 ADD dst,src ADD dst,im dstdst+src dstdst+im ADC dst,src ADC dst,im INC r INC src B B ,W r

7、r+1 srcsrc+1 ASCII Adjust for Addition Increment Add with carry Add AAA DAA Decimal Adjust for Addition B,W B,W B B 名称助记符指令操作说明 dstdst+src+CF dstdst+im+CF 当(AL&0FH)9, 或AF1,+6调整 当(AL&0FH)9, 或AF1,+6调整 (1)加法指令ADD dst,src 假如(AX)5463H,则执行:ADD AX,0F0F0H 之后(AX)4553,CF1、ZF0、SF0, OF0 ADD 指令可采用多种寻址方式,例如: ADDD

8、I,SI ADDAX,BX+2000H ADDBX+DI,CX ADDAL,5FH ADDBP,3AH。 堆栈段 (2)带进位位的加法指令 ADC dst,src ADC 与 ADD类似,区别是计算源与目的之和时 ,末位应再加上原CF的值。这两种指令结合可实现 多倍精度运算。例如: MOV SI,1000H MOV AX,SI MOV DI,2000H ADDAX,DI MOV SI,AX MOV AX,SI+1 ADCAX,DI+1 MOV SI+1,AX (3)加1指令 INC src INC指令只有一个操作数src。src可为寄存 器或存储器。例如: INCCX INCBYTE PTRB

9、X+100H 注意:INC 指令不影响CF位,只可能影响OF 、SF、ZF和PF。 (4)组合十进制加法调整指令DAA 此指令必须在加法指令之后,而且加法运算后 ,结果必须放在AL中。例如,(AL)=89H。则 执行下例程序段: ADDAL,75H;执行后(AL)FEH DAA ;执行后(AL)64H 非BCD码 调整后变 为BCD码 (5)非组合十进制加法调整指令AAA 此指令与DAA类似,也应在加法指令之后。不同 的时,所处理的是09个位非组合十进制数。AAA 操作如下: 若(AL)& 0FH9(或AF1)则 (AL)(AL)6 (AF)1 (CF)(AF) (AH)(AH)1 (AL)(

10、AL)& 0FH 例如:(AX)=0007H ADDAL,06H AAA 执行调整后 (AX)0103H 执行加法后 (AL)0DH (AH)=0 2. 减法类指令(Subtract) 名称操作说明 dstdstsrc dstdstim B,W B,W NegateNEG srcsrcsrc的2补码 B,W B,W ASCII Adjust for sub AASB DASB Subtract Subtract with Borrow Decrement Compare Decimal Adjust for sub 助记符指令 SUB dst,src SUB dst,im SBB dst,sr

11、c SBB dst,im DEC r DEC src CMP dst,src CMP dst.im 操作数类型 B,W B,W B,W dstdstsrcCF dstdstimCF rr-1 srcsrc-1 B,W B,W dstsrc ,只影响标志位 dst-im只影响标志位 和AAA类似用于减法 和DAA类似用于减法 (4)求补指令NEG src 对src求2的补码后再送回src,实际就是:(src )0(src)。 注: NEG 指令执行后,CF恒为1,对OF、SF 、ZF、AF和PF也均产生影响。 如果src为128(80H)或32768( 8000H)时,执行NEG 指令后值不变。

12、 ( 5)比较指令CMP dst,src CMP与SUB类似,也执行两个操作数相减, 但操作结果不送会dst。其结果只会影响标志 位OF、SF、ZF、PF、和CF。 例如:比较A与B(AB): 若AB,ZF1,否则ZF0; 若AB;分A、B是否为有符号数: A、B无符号时:若CF0,则AB;否则 A0,b0,则AB不会溢出,OF必为0,若 SF0,表示结果为正(AB),否则AB 4. 乘法类指令(Mutiplication) 名称助记符指令 操作类型操作说明 MUL src MUL src IMUL src IMUL src ASCII Adjust for Mutiplay 和AAA相似,不

13、同 的是对乘法调整 Multiply, unsingnet Integer Mutiplay, singet AAM B W B W B AXALsrc(无符号) DX,AXAXsrc(无符号) AXALsrc(带符号) DX,AXAXsrc(带符号) (1)无符号乘法指令 MULsrc 例如:MULBL MULCX MULBYTE PTRDI NULWORD PTRSI (2)带符号乘法指令IMULsrc 例如:IMULCL IMULAX IMULBYTE PTRBX INULWORD PTRDI (3)非组合十进制乘法调整指令AAM 该指令要求跟着MUL指令之后,而不能跟着 IMUL指令之

14、后。 AAM指令的操作是: (AH)(AL)/0AH (AL)(AL)% 0AH 例如:08090702的程序为: MOVAL,08 MOVBL,09 MULBL AAM 注:乘法类指令执行后标志位无意义 4. 除法类指令(Division) 助记符 指令 操作数 类型 Division, unsigned DIV src DIV src B W Integer Division, signed IDIV src IDIV src B W 与DIV类似,不同 的是对带符号数 ASCII Adjust for Division B 对非组合十进制数进行 调整 Conver Byte to Wor

15、d CBWB 将AL中的字节按符号扩 展成AX中字 Conver Word to Double Word CWDW AX中字按符号扩展成DX ,AX中的双字 AAD 名称 操作说明 ALAX/src(无符号) AH余数 AXDX,AX/src(无符号) DX余数 8086除法运算时,被除数必须为除数的双倍 字长。如果不满足此条件应用符号扩展指令 ,或AH0,(DX0)类指令扩展被除数 。 除法运算后,标志位AF、OF、ZF、SF、PF 和CF(无意义)。 IDIV执行后,若为双字,商范围32768 32767,单字商范围128127,如果超 过范围,作除数为0除法错中断。规定余数与 被除数符号相同。 (3)非组合十进制除法指令AAD 该指令操作为: (AL)(AH)0AH(AL) (AH) 0 与、不同,该指令要在除法指令之前 执行,例如01030602 余01,程序如下 : MOVAX,0103 MOVBL,06 AAD DIVBL (4)将字节扩展成字的指令CBW 遇到两个带符号字节数相除,应该先把AL中 8位数用CBW扩展成AX中的16位数(例如AL 中数80H,CBW后AX变为FFH),然后再作 IDIV指令运算。 (5)将字 扩展成双字的指令CWD 遇到两个带符号字相除,应该先把AX

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号