首页 ch07-指令系统

ch07-指令系统

举报
开通vip

ch07-指令系统nullnull 指令系统一、IBM PC(8086/8088) 指令系统 二、数据传送指令三、算术运算指令 四、逻辑运算指令五、串操作指令六、控制转移指令七、处理机控制指令null一、IBM PC(8086/8088) 指令系统 8086/8088 指令系统可分为六组: 数据传送指令 算术指令 逻辑指令 串处理指令 控制转移指令 处理机控制指令 二、数据传送指令 二、数据传送指令 1. 通用数据传送指令 (1) 基本传送指令 MOV d, s ;ds ...

ch07-指令系统
nullnull 指令系统一、IBM PC(8086/8088) 指令系统 二、数据传送指令三、算术运算指令 四、逻辑运算指令五、串操作指令六、控制转移指令七、处理机控制指令null一、IBM PC(8086/8088) 指令系统 8086/8088 指令系统可分为六组: 数据传送指令 算术指令 逻辑指令 串处理指令 控制转移指令 处理机控制指令 二、数据传送指令 二、数据传送指令 1. 通用数据传送指令 (1) 基本传送指令 MOV d, s ;ds 源操作数s——寄存器、存储器、立即数 目的操作数d—— 寄存器、存储器 执行的操作:d  s Rs(cs不可变)1. 通用数据传送指令Move Copy from d to snullR-R:CPU内部寄存器之间的数据传送 MOV AL,BL MOV DX, DI MOV SI, BP MOV DS, BX MOV AX,DX RData:立即数传送到CPU内部通用寄存器组(AX,BX,CX,DX,BP,SP,DI,SI) MOV CL, 4 MOV DX, 03FFH MOV DI, 04BFH • R-M:CPU内部寄存器(除CS,IP外)与存储器(所有寻址方式)之间的数据传送 MOV BX, BUFFER MOV [DI], CX MOV AL, [2000] MOV SI, BLOCK[BP] MOV AX, [SI] MOV DS, DAT[SI+BX] • M<-Data: 立即数给存储单元赋值 MOV WORD PTR[2000], 10 MOV BYTE PTR[BX+DI], 30 实例:null注意事项: 1. RsX-Data:立即数不能直接送段寄存器,MOV DS, 3000H 2. DataX-.. :目标操作数不允许用立即数方式,MOV 2000H, AL 3. M-X-M:不允许在两个存储单元间传送数据,MOV [2000H],[3000H] 4. Rs-X-Rs:不允许在两个段寄存器之间传送数据,MOV DS, ES 5. MOV 指令不影响标志位Flags。 6. CS不可变: MOV CS, AXMov AL, AREA1 Mov AREA2, AL例1: 把地址为AREA1(段内偏移量)的存储单元的内容,传送至同一段内的地址为AREA2的存储单元中。null例2:若要传送的不是一个字节,而是一个数据块,(例如内有100个字节),如何实现?null (2)堆栈操作指令 PUSH s ;stacks POP d ;dstack d,s = Rc16;Rs;M16 堆栈——按照先进后出的原则组织的一段内存区域。8086中规定堆栈设置在堆栈段(SS段)内,堆栈指针SP的初值决定了堆栈的大小。 SP始终指向堆栈的顶部,即始终指向最后推入堆栈的信息所在的单元。 nullPUSH AX 指令分两步执行: 1. 先SP-1SP,将AH内容送至SP所指单元; 2. 再SP-1SP,将AL内容送至SP所指单元; 例:MOV AX,1234H PUSH AX nullPOP AX 指令分两步执行: 1. 先将SP所指单元内容送至AL, 然后 SP+1SP ; 2. 再SP所指单元内容送至AH, 然后 SP+1 SP 例:MOV AX,5678H POP AX null在寄存器间或寄存器与存储器间交换信息(不允许使用段寄存器)。 源操作数: 寄存器、存储器 目的操作数:寄存器、存储器 执行的操作:d  s 例: XCHG BX, [BP+SI] (BX)=6F30H (BP)=0200H (SI)=0046H (SS)=2F00H (2F246H)=1234H (3)交换指令 XCHG d, s ; ds XCHG s ;AXs Exchange values of two operands null功能: 将AL指向的换码 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 中的一个字节的内容送到AL中。 操作数:隐含的寄存器 BX , AL 操作: AL  [BX+AL] MOV AL, 01H MOV BX, 2000H XLAT (4)换码指令 XLAT ; AL  [BX+AL] XLATB ALM[BX+AL]Translate byte from table null• 该地址常用来设置一个16位的寄存器作为地址指针; • 该指令的执行效果与mov reg , offset src相同。 例:LEA bx, [bx][si] 执行前 (bx)=1000h (si)=2000h 执行后 bx=1000h+2000h=3000h2. 地址传送指令(LEA, LDS, LES) 目的:把地址传送到指定寄存器。Load Effective Address null把源操作数指定的内存的4个相继字节的内容送至指定寄存器及DS中 (1) 该指令完成一个32位地址指针的传送; (2) 该指令通常指定 SI 作寄存器 REG。 例: LDS SI, [0100h] DS=1000h10100h00 02 00 20 0200h 2000hSIDS (2)指针送寄存器及DS指令 LDS d, s ; d [s] , DS[s+2] Load memory double word into word register and DS null把源操作数指定的内存的4个相继字节的内容送至指定寄存器及ES中。 (1) 该指令完成一个32位地址指针的传送; (2) 该指令通常指定 DI 作寄存器 REG。 例: LES DI, [100h]ES=1000h10100h00 02 00 20 0200h 2000hDIES (3)指针送寄存器及ES指令 LES d, s ; d [s] , ES[s+2] Load memory double word into word register and ES null3. I/O传送指令 PC机中,所有I/O端口与CPU之间的通信都有IN, OUT指令完成。Input from port into AL or AX Output from AL or AX To port null4.标志寄存器传送指令 (1)读取标志指令 LAHF ;AH Flags 的低字节 (2)设置标志指令 SAHF ;Flags 的低位字节 AH注:该指令影响标志位 Z、A、P、CLoad AH from 8 low bits of Flags register Store AH register into low 8 bits of Flags register null (3)标志寄存器入栈指令 PUSHF ;stack  Flags (4)标志寄存器出栈指令 POPF ;Flags  stack将标志寄存器 Flags 的内容压入堆栈保存。16位Flags入栈。把栈中内容弹出至标志寄存器 Flags。出栈到Flags 16位。注:该指令影响标志位 O、S、Z、A、P、C 。Store flags register in the stack Get flags register from the stack null (3)所有Rc16入栈指令 PUSHA ;stack  all Rc16 (4)所有Rc16出栈指令 POPA ;all Rc16 stackPUSH AX PUSH CX PUSH DX PUSH BX PUSH SP PUSH BP PUSH SI PUSH DI POP DI POP SI POP BP POP xx (SP value ignored) POP BX POP DX POP CX POP AX Push all general purpose registers AX, CX, DX, BX, SP, BP, SI, DI in the stack. Original value of SP register (before PUSHA) is used. Pop all general purpose registers DI, SI, BP, SP, BX, DX, CX, AX from the stack. SP value is ignored, it is Popped but not set to SP register). 80186 以后的CPU有: 三、算术运算指令三、算术运算指令null 注: 该指令影响标志位 该指令适合有符号数和无符号数的运算。 d+s O S Z A P C0 0 1 0 0 1 0 0 0 1.加法指令(1)加法 ADD d, s ;dd + s ADDnull例1:MOV DX, 4652H ADD DX, 0f0f0h 4 6 5 2 + f 0 f 0 3 7 4 2 1 0 1 0 0 0 1 1 0 0 1 0 1 0 0 1 0 + 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 0 0 1 1 0 1 1 1 0 1 0 0 0 0 1 1 1执行后: (DX) = 3742H z=0 s = 0 c= 1 o = 0 对无符号数 溢出 结果错 对有符号数 不溢出 结果正确 问: 对带符号数和无符号数怎样判断是否溢出? 无符号数的溢出用进位标志 c 判断。null 注: 该指令影响标志位 该指令适合有符号数和无符号数的运算。 d+s+C O S Z A P C0 0 1 0 0 1 0 0 0 (2)带进位加 ADC d, s ;dd+s+C 功能: 主要用于多字节运算Add with Carrynull例:在内存的First和Secontd开始的区域中分别 存放着2F365H和 5E024 H两个数,要求求 其和,并存入Third中。 2 F 3 6 5 + 5 E 0 2 4 8 D 3 8 9 nullMOV AX, First ADD AX, Second MOV Third, AX MOV AX, First+2 ADC AX, Second+2 MOV Third+2, AX 2 F 3 6 5 F 3 6 5 + 5 E 0 2 4 + E 0 2 4 8 D 3 8 9 D 3 8 9 1 0 0 0 2 + 0 0 0 5 0 0 0 821First Second Third65 F3 02 00 24 E0 05 00 89 D3 08 00 null 用于在循环中修改地址指针及循环次数等。 注:该指令影响标志位 例: INC BX INC [SI] 注意: (1) 该指令将操作数视为无符号数; (2) 该指令不影响 进位标志 C OPRD + 1 O S Z A P0 0 1 0 0 1 0 0 0 (3)加1 INC d ;dd+1 Increment null 注: 该指令影响标志位 该指令适合有符号数和无符号数的运算。 d+s O S Z A P C0 0 1 0 0 1 0 0 0 2.减法指令(1)减法 SUB d, s ;dd - s Subtractnull 注: 该指令影响标志位 该指令适合有符号数和无符号数的运算。 d+s+C O S Z A P C0 0 1 0 0 1 0 0 0 (2)带借位减法 SBB d, s ;dd - s- C 功能: 主要用于多字节运算Subtract with Borrownull注意: 同加法指令 有符号数的溢出用溢出标志 O判断; 无符号数的溢出用进位标志 C 判断。 例: SUB DH, [BP+4] (DH)=41H (SS)= 0000H (BP)=00E0H (00E4H)= 4AH结果: (DH)=0E7H S=1 Z=0 C=1 O=0 如果为有符号数则结果正确(无溢出) 如果为无符号数则结果错误(有溢出) 4 1 - 4 A E 7 0 1 0 0 0 0 0 1 - 0 1 0 1 1 0 1 0 1 1 1 0 0 1 1 1 11null例3: 双精度数运算 W=X+Y+24-ZX Y Z W65 F3 02 00 24 E0 05 00 89 D3 08 00 null 用于在循环中修改地址指针及循环次数等。 注:该指令影响标志位 例: DEC BX DEC [SI] 注意: (1) 该指令将操作数视为无符号数; (2) 该指令不影响 进位标志 C OPRD + 1 O S Z A P0 0 1 0 0 1 0 0 0 (3)减1 DEC d ;dd-1 Decrement null 注意: 该指令影响 标志位 OPRD + 1 O S Z A P0 0 1 0 0 1 0 0 0 (4)取反加1 NEG d ;d/d+1 Negate null 该指令影响标志位 (1)该指令同SUB , 但其不保存运算结果; (2) 该指令后面通常跟一条转移指令,根据标志位产生不同的程序分支。 d+s+C O S Z A P C0 0 1 0 0 1 0 0 0 (5)比较 CMP d, s ; d – s Compare null比较指令主要用于两个数之间的关系:大、小、相等。 如:A, B 1. 比较相等。 只要看Z 标志。Z=1——相等 Z=0——不相等。 2. 比小大小。 分两种情况。 • 无符号数 看进(借)位C 标志。C=1,有借位,则 AB A=A0H 1 0 1 0 0 0 0 0 A=53H 0 1 0 1 0 0 1 1 B=53H - 0 1 0 1 0 0 1 1 B=A0H - 1 0 1 0 0 0 0 0 0 1 0 0 1 1 0 1 0 0 1 1 0 0 1 1 A>B AB S=1 AB S=0 AB S=1 AB O⊕ S =1 ACXCX=0?结束流程图null MOV SI, Offset BCDBUF MOV DI, Offset ASCⅡ BUF MOV CH, Count Again: MOV AL, [SI] INC SI MOV BL, AL AND
本文档为【ch07-指令系统】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_184083
暂无简介~
格式:ppt
大小:1MB
软件:PowerPoint
页数:0
分类:互联网
上传时间:2012-10-28
浏览量:18