微型计算机3-2
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
5、BCD码运算(十进制调整)指令 、 码运算( 码运算 十进制调整)
• BCD码的两种形式:压缩和非压缩 码的两种形式: 码的两种形式 压缩和非压缩BCD码。 码 • 压缩 压缩BCD码指令:DAA(加法调整)、 码指令: )、DAS(减法调整) 码指令 (加法调整)、 (减法调整) )、AAS(减法调整) • 非压缩 非压缩BCD码指令:AAA(加法调整)、 码指令: 码指令 (加法调整)、 (减法调整) AAM(乘法调整)、 )、AAD(除法调整) (乘法调整)、 (除法调整) 1、这类指令都是无操作数指令,隐含的源操作数是AL(AX),目的是 、这类指令都是无操作数指令,隐含的源操作数是 ( ), ),目的是 AL(AX),即对 的内容调整,调整的结果再放 。 ),即对 的内容调整, ( ),即对AL的内容调整 调整的结果再放AL。 2、先执行二进制运算指令如 ),并将结 、先执行二进制运算指令如ADD、SUB、MUL等(除法除外),并将结 、 、 等 除法除外), 果放AL( ),然后紧接着执行BCD码指令。 ),然后紧接着执行 码指令。 果放 (AX),然后紧接着执行 码指令 例:MOV AL,56H , ADD AL,34H , DAA MOV AL,09H , SUB AL,04H , AAS MOV AL,05 , MOV BL,04 , MUL BL AAM
16位数据传送
• 立即数送通用 立即数送通用REG或存储器 或存储器
MOV MOV MOV MOV CL ,4 AX ,03FFH WORD PTR [100H] ,5678H MEM ,5 ;MEM是以定义的变量(符号地址) 是以定义的变量( 是以定义的变量 符号地址)
• 寄存器(除CS、IP)与存储器之间传送 寄存器( 、 )
外 I/O 设
三、算术运算指令1、加法指来自 、• 不带进位的加法 ADD DEST,SRC ;DEST+SRC →DEST , • 带进位的加法 ADC DEST,SRC ;DEST+SRC+CF → DEST , • 加 1 指令 INC DEST ;DEST+1 → DEST (不影响CF) 不影响 )
二、输入/输出指令 输入 输出指令
外 I/O 设 • • • 输入 IN AL/AX ,OPRT 输出 OUT OPRT ,AL/AX CPU 直接IN/OUT指令(口地址只能 8 位) 直接 指令( 指令 IN AL ,50H IN AX ,80H OUT 44H , AL OUT 70H , AX • 间接IN/OUT指令(口地址是16 位,也可8 位。) 间接 指令(口地址是 也可 指令 MOV DX,0FFF2H IN AL ,DX MOV DX,87FEH MOV AL ,40H OUT DX ,AL OUT DX ,AL MOV DX ,80H
4、除法指令(无符号DIV,带符号 、除法指令(无符号 ,带符号IDIV) ) DIV(IDIV) SRC; ( ) ; SRC字节:( )÷ SRC 字节:( AL(商) … AH(余数) 余数) 字节:(AX) ( SRC字: (DX:AX)÷ SRC AX(商)… DX(余数) 字 : ) ( (余数) • SRC不能是立即数 不能是立即数 • 若商超出字或字节表示的范围,自动产生 0 号中断 若商超出字或字节表示的范围, • IDIV规定余数和被除数的符号相同 规定余数和被除数的符号相同 • 只能字除以字节,双字除以字,不满足需扩展。 只能字除以字节,双字除以字,不满足需扩展。 无符号扩展用 SUB AH,AH; 字节 → 字 , ; SUB DX,DX; 字 → 双字 , ; 字节( ) 带符号数扩展用 CBW ;字节(AL) → 字(AX) ) CWD ;字(AX) → 双字(DX:AX) 双字( : ) ) CWDE ; AX →EAX CDQ ; EAX →EDX:EAX :
4、 累加器专用传送指令(查表指令) 、 累加器专用传送指令(查表指令)
1、换码指令 XLAT 、 XLAT 无操作数指令,隐含) (无操作数指令,隐含) 功能: ( ) ( ) 功能: [(BX)+(AL)] → A L) ) 源 目的
5、地址传送指令LEA、LDS、LES 、地址传送指令 、 、 1)、取有效地址指令 LEA
注意:目的操作数不允许位 以及立即数 以及立即数。 注意:目的操作数不允许位CS以及立即数。
3、交换指令 XCHG、BSWAP 、 、
• XCHG DEST , SRC 通用REG 通用REG ;将源操作数与目的操作数的
M M 内容互换。 没有段REG和立即数,存储器之间不能交换。 XCHG AL,BL XCHG BX,CX XCHG [2530H] ;(CX)和2530H,2531H两单元内容交换。 • BSWAP REG 功能: 功能:将32位通用寄存器中的第1个字节和第4个字节交换,第2个字节 位 和第3个字节交换。 见p77 例题 3.18
立即数不能做目的操作数,DEST,SRC不能同为存储 立即数不能做目的操作数, , 不能同为存储 器寻址方式,类型要一致,段寄存器不能做操作数。 器寻址方式,类型要一致,段寄存器不能做操作数。
2、减法指令 、
• • • • • 不带借位减法 SUB DEST,SRC; DEST - SRC → DEST , ; 带借位减法 SBB DEST,SRC; DEST - SRC - CF → DEST , ; 减 1 指令 DEC DEST ; DEST - 1 → DEST 求补指令 NEG DEST; 0 - DEST → DEST ; 比较指令 CMP DEST,SRC;DEST - SRC(不回送结果) , ; (不回送结果) SRC与DEST的要求同加法指令。 的要求同加法指令。 与 的要求同加法指令
5、操作数类型要匹配,字对字,字节对字节传送 MOV AX ,BL 6、MOV指令不影响标志寄存器的值。
例题: 开始的200个字节的数据移动到由 个字节的数据移动到由buffer2指示的位置。 指示的位置。 例题:将buffer1开始的 个字节的数据移动到由 开始的 指示的位置
BUFFER1 MOV SI ,OFFSET BUFFER1 MOV DI ,OFFEST BUFFER2 200 MOV CX,200 NEXT: MOV AL ,[SI] MOV [DI] ,AL INC SI INC DI DEC CX JNZ NEXT HLT
…...
BUFFER2
BUFFER1、BUFFER2是符号地址(变量)先定义后使用。在这是字 、 是符号地址(变量)先定义后使用。 是符号地址 节传送定义字节变量
…...
扩展传送指令
• 格式: MOV SX DEST, SRC 格式: MOV ZX DEST, SRC • 功能:将源操作数由 位扩展到 位,送目的操作数;或将源操 功能:将源操作数由8位扩展到 位扩展到16位 送目的操作数; 作数由16位扩展到 位扩展到32位 送目的操作数。其中SX表示带符号扩展 表示带符号扩展, 作数由 位扩展到 位,送目的操作数。其中 表示带符号扩展, ZX表示无符号扩展。 表示无符号扩展。 表示无符号扩展
(32位, 4字节)
高 16 位 低 16 位
DS(隐含) DEST的REG
SRC 3)、取指示器到ES的指令LES
6、标志传送指令 、
• • • • • • 读取标志 LAHF ; (FR)低 8 位 → AH ) 设置标志 SAHF ; AH → (FR)低 8 位 ) 标志进栈 PUSHF ;(FR 16位) → (SP) 位 ) 标志出栈 POPF ; (SP) → (FR 16位) ) 位 标志进栈 PUSHFD ;(EFR 32位)→ SP) 位 ) 标志出栈 POPFD ; (SP) → (EFR 32位) ) 位 例:将标志寄存器的 TF 置 1 。 PUSHF POP AX OR AX ,0100H PUSH AX POPF
LEA DEST , SRC ;EA(M寻址) 寻址) 16位通用 位通用REG ( 寻址 位通用 LEA BX ,[2728H];将(相对于DS)偏移地址2728H送BX。 LEA DX ,BETA[BX][SI]; LEA BX,VAR; 2)、取指示器到DS的指令LDS LDS DEST,SRC ;(SRC是 32 位的逻辑地址指针,低 字节的地址DEST是 16 位的通用REG)
SRC: n,通用REG,M三种寻址方式 DEST: 通用REG,M两种寻址方式
ADD CL ,10 ; ADC AX,BX ; INC SI ; ADD AL,[1000H] ; ADD [BX + DI],SI ADC [BX + 200H],CL ; ADC SI,2 INC WORT PTR [BP + DI + 500]
第三节 80X86指令系统 指令系统 一、数据传送指令
1、通用数据传送指令(MOV、PUSH、POP、 、通用数据传送指令( 、 、 、 HCXG等)。 等
(1)最基本的传送指令: MOV DEST,SRC ;(SRC) (DEST)
• 寄存器之间传送(除CS 和 IP) 寄存器之间传送( )
MOV AL ,BL MOV MOV MOV MOV DL,CH DX,BX AX,ES DS,AX 8位数据传送 通用REG 段REG 通用REG 通用REG
3、乘法指令(无符号MUL,带符号 、乘法指令(无符号 ,带符号IMUL) )
MUL(IMUL) SRC;SRC字节:( )× SRC → AX ( 字节:( ) ; 字节:(AL) SRC字:( )× SRC → DX:AX 字:(AX) : • SRC只能是通用 只能是通用REG或M寻址,不能是立即数。 寻址, 只能是通用 或 寻址 不能是立即数。 • 只能是字节乘字节或字乘字 • 存储器寻址时加类型说明,如MUL BYTE PTR [BX], 存储器寻址时加类型说明, , MUL WORD PTR [BX]
MOV MOV MOV MOV MOV AX ,[SI] [DI] ,CX [1000H] ,AL DS,DATA[SI+BX] , DEST[BP+DI] ,ES
存储器与通用寄存器
存储器与段寄存器
• 注意的问题: 注意的问题:
1、不能在两个存储单元之间传送。MOV [1000H] ,[2000H] 2、立即数不能送段寄存器。 MOV DS ,300H 3、段寄存器之间不能传送。 MOV DS ,ES 4、CS不能做目的但可做源操作数。MOV CS ,AX MOV AX ,CS
四、逻辑运算和移位指令
1、逻辑运算指令 、
• 与 • 或 • 异或 • 求反 • 測试 AND DEST,SRC ;两位都是 1 ,结果为 1,否则为 0。用于屏蔽。 , 用于屏蔽。 , OR DEST,SRC;两位都是 0 ,结果为 0 ,否则为 1 。用于置位。 , ; 用于置位。 XOR DEST,SRC;两位相同为 0 ,两位不同为 1 。指定位取反, , 指定位取反,
例题3.15和 见p76 例题 和 例题3.16 例题
2、堆栈指令 、
• PUSH SRC (源操作数可 源操作数可REG、M、立即数,目的隐含 ) 、 、立即数,目的隐含SP) PUSH AX ;通用REG PUSH DS ;段REG PUSH [1000H] ;直接寻址,字单元。 PUSH DATA ;直接寻侄(字变量) PUSH EBX PUSH DWORD PTR [DI] PUSHW 0A123H ; 立即数入栈(16位) PUSHD 20H ; 立即数入栈(32位) 立即数入栈(32位 • PUSHA ;将16位通用寄存器圧入堆栈 将 位通用寄存器圧入堆栈 • PUSHAD ;将32位通用寄存器圧入堆栈 将 位通用寄存器圧入堆栈 • POP DEST (目的可 目的可REG、M,源隐含 ) 、 ,源隐含SP) 关系与入栈对应]