微机原理指令系统教材

上传人:我** 文档编号:117151146 上传时间:2019-11-18 格式:PPT 页数:67 大小:1.32MB
返回 下载 相关 举报
微机原理指令系统教材_第1页
第1页 / 共67页
微机原理指令系统教材_第2页
第2页 / 共67页
微机原理指令系统教材_第3页
第3页 / 共67页
微机原理指令系统教材_第4页
第4页 / 共67页
微机原理指令系统教材_第5页
第5页 / 共67页
点击查看更多>>
资源描述

《微机原理指令系统教材》由会员分享,可在线阅读,更多相关《微机原理指令系统教材(67页珍藏版)》请在金锄头文库上搜索。

1、1 算术运算(Arithmetic)指令 二进制运算十进制调整 加 ADD, ADC, INC AAA, DAA 减 SUB, SBB, DEC, NEG, CMPAAS, DAS 乘 MUL, IMULAAM 除DIV, IDIVAAD 符号扩展指令(CBW、CWD) 2 加法运算指令 l ADD (Addition) 加法 用法:ADD dest,src; 执行 (dest)(dest)+(src) 如: ADD WORD PTRBX, 20 l 例: AL=7EH(01111110B) AH=5BH(01011011B) ADD AL,AH AL=D9H(11011001B) SF=1,

2、 OF=1, AF=1; CF=0, ZF=0, PF=0; 3 加法运算指令 l 利用Debug观察add操作中寄存器的变化: Debug中十六进制数末尾不需要加h 4 加法运算指令 l Debug常用命令集 命令含义使用方法 a (Assemble) 逐行汇编a address e (Enter) 修改内存字节 e address list g (Go) 执行程序g =addressaddress. q (Quit) 结束q r (Register) 显示和修改寄存器r register name t (Trace) 跟踪执行t =address value u (Unassemble)

3、反汇编 u address 或range ? 联机帮助 ? 5 加法运算指令 l Debug中标志寄存器的表示: 寄存器含义(A/B)AB OF溢出(是/否) OV NV DF方向(减量/增量)DNUP IF中断(允许/关闭)EIDI SF符号(负/正)NGPL ZF零(是/否)ZRNZ AF辅助进位(是/否)ACNA PF奇偶(偶/奇)PEPO CF进位(是/否)CYNC 6 加法运算指令 l ADC (ADD with Carry) (dest)(dest)+(src)+(CF) 带进位加法, 例: 7 加法运算指令 l INC (Increment by 1) (dest) (dest)

4、+1加一操作 例: 8 CF和OF位举例 (P74) lMOV AL, 7EH lMOV BL, 5BH lADD AL, BL n01111110 + 01011011 = 1101,1011 nCF = 0(无符号数相加结果未超出255) nOF = 1(带符号数相加结果超出了127) lSUB AL, BL n01111110 + 10100101 = 1,0010,0011 nCF = 1(无符号数相加结果超出了255) nOF = 0(带符号数相加结果未超出127) 9 加法运算指令 例: 将buffer为首的4个字节内存内容相加,存放在AX中。 13 18 27 1Abuffer

5、MOV CX, 4 LEA BX, buffer CLC MOV AX, 0 lop1: ADC AL, BX ADC AH,0 INC BX DEC CX JNZ lop1 10 Review 数据传送指令: 1.通用数据传送 MOV PUSH POP XCHG 2.累加器专用传送 IN OUT XLAT 3.地址传送 LEA LDS LES 4.标志传送 PUSHF POPF LAHF SAHF 11 减法运算指令分类 指令格式执行操作 SUB dst, src (dst) (dst) - (src) SBB dst, src (dst) (dst) - (src) - CF DEC op

6、rd (oprd) (oprd) - 1 NEG oprd (oprd) 0 - (oprd) CMP oprd1, oprd2 (oprd1) - (oprd2) 12 减法运算指令 注意点注意点 l SUB、SBB、 CMP为双操作数, DEC、NEG为单操作数。 l SBB为带进位减法。 l 除DEC不影响CF标志外, 对SF、ZF、AF、PF、OF均有影响 l NEG求补运算,等价于用0减去操作数。 其对标志位的影响,由0减去该操作数的过程决定。 13 减法运算指令 l SUB (普通减法) 例: SF=1, AF=1,CF=1 14 减法运算指令 l SBB 带借位减法 SBB ds

7、t, src (dst) (dst) - (src) - CF l DEC 自减1 DEC oprd (oprd) (oprd) - 1 l NEG (Negate) 8位/16位求补(改变符号)绝对值不变 NEG dest; (dest) 0 - (dest) 例: NEG AL NEG BX NEG BYTE PTR DI+20H 15 减法运算指令 l CMP (Compare比较操作) (dest)-(src) 例: 16 乘法指令 乘法:MUL、IMUL(有符号乘) 、AAM l 8位乘法 MUL CL; MUL BYTE PTR BX+1 执行AL*OPRD 积= AX l 16位

8、乘法 MUL CX; MUL WORD PTR BX 执行AX*OPRD 积= DX(高16位)| AX(低16位) 17 除法指令 除法:DIV、IDIV (有符号除) 、AAD l 8位除法 DIV CL; DIV BYTE PTR BX+1 默认被除数: AX 结果 AH=余数 AL=商 l 16位除法 DIV CX; DIV WORD PTR BX 默认被除数: DX(高16位)| AX(低16位) 结果 DX=余数 AX=商 18 AAA加法的ASCII(不压缩的BCD码)调整指令,隐含操作数AL和AH 指令操作为: 加法调整 (AL) (AL)+6 (AH) (AH)+1 (AF)

9、 1 (CF) (AF) (AL) (AL)(AX)=07H09H=003FH AAM ;(AH)=06H,(AL)=03H,(SF)=0,(ZF)=0,(PF)=1 23 除法调整 AAD 除法的ASCII调整指令,隐含操作数AL和AH (AL) (AH)*0AH+(AL) (AH) 0 执行操作 操作的实质是将AX寄存器的不压缩的BCD码转成二进制 ,并存放在AL中。 举例: MOV AX,0703H MOV BL,02H AAD ;(AL)=49H(即十进制数73) DIV BL ;(AL)=24H(商),(AH)=01H(余数) AAM ;(AH)=03H,(AL)=06H 24 符号

10、扩展指令:CBW/CWD 对于无符号数,扩展字长只要在高位添上足够个数的零。 对于带符号数,扩展字长时,正数与负数的处理方法不同。 正数的符号位为0,负数的符号位为1, 扩展字长应分别在高位添上相应符号位。 l CBW/CWD 符号扩展 CBW 将一个字节(8位)转换为 字(16位 ),隐含操作数AL和AH。 如果(AL)80H,则(AH) 0 否则(AH) FFH CWD 将一个字(16位)转换为 双字(32 位) ,隐含操作数AX和DX。 如果(AX)8000H,则(DX) 0 否则(DX) FFFFH 25 符号扩展 l CBW的演示 26 逻辑运算与移位(Logical 该指令重复执行

11、MOVSB直至 CX为0 REPZ CMPSB ;该指令重复执行CMPSB直至 ZF为0 或 CX为0 REPNZ SCASW ;该指令重复执行SCASW直至 ZF不为0 或 CX为0 35 串操作(String Manipulation) 串指令的特点 1. 源串 由DS : SI指向的单元; 目的串 由ES : DI指向的单元。 2. 操作后的地址指针是增量还是减量取决于方向标 志DF。 3. 串操作指令前面可以加REP,则指令将重复进行 ,重复次数由CX决定。 4. 若串操作指令的基本操作影响ZF (CMPS和SCAS) ,则可加重复前缀REPE或REPNE。 5. 串操作指令在助记符后

12、面加上字母B(字节操作)或 者W(字操作)。 36 格式 MOVSB 字节传送 MOVSW 字传送 MOVSB 执行操作 (ES:DI ) (DS:SI ) 字节传送 (SI ) (SI ) 1 修改源串指针 (DI) (DI ) 1 修改目的串指针 其中: DF = 0 ,用 + ; DF = 1 ,用 - MOVSW 执行操作 (ES:DI ) (DS:SI ) 字传送 (SI ) (SI ) 2 修改源串指针 (DI ) (DI ) 2 修改目的串指针 其中: DF = 0 ,用 + ; DF = 1 ,用 - 串传送 37 格式 LODSB 取字节 LODSW 取字 LODSB执行操作

13、 (AL) (DS:SI ) 从源串取入AL (SI) (SI ) 1 修改源串指针 其中: DF = 0 ,用 + ; DF = 1 ,用 - LODSW 执行操作 (AX) (DS:SI ) 从源串取入AX (SI ) (SI ) 2 修改源串指针 其中: DF = 0 ,用 + ; DF = 1 ,用 - 串取 38 格式 STOSB 存入字节 STOSW 存入字 STOSB 执行操作 (ES:DI ) (AL ) 将AL存入目的串 (DI) (DI ) 1 修改目的串指针 其中: DF = 0 ,用 + ; DF = 1 ,用 - STOSW 执行操作 (ES:DI ) (AX ) 将

14、AX存入目的串 (DI ) (DI ) 2 修改目的串指针 其中: DF = 0 ,用 + ; DF = 1 ,用 - 存入串 39 格式 CMPSB 字节比较 CMPSW 字比较 CMPSB执行操作 (DS:SI ) (ES:DI ) 字节比较 (SI ) (SI ) 1 修改源串指针 (DI) (DI ) 1 修改目的串指针 其中: DF = 0 ,用 + ; DF = 1 ,用 - CMPSW执行操作 (DS:SI ) (ES:DI ) 字比较 (SI ) (SI ) 2 修改源串指针 (DI ) (DI ) 2 修改目的串指针 其中: DF = 0 ,用 + ; DF = 1 ,用 - 串比较 40 格式 SCASB 取字节 SCASW 取字 SCASB执行操作 (AL ) (ES:DI ) 从目的串搜索字节 (DI) (DI ) 1 修改目的串指针 其中: DF = 0 ,用 + ; DF = 1 ,用 - SCASW执行操作 (AX ) (ES:DI ) 从目的串搜索字 (DI ) (DI ) 2 修改目的串指针 其中: DF = 0 ,用 + ; DF = 1 ,用 - 两数相减,只影响标志,不影响操作数。 搜索串 41 范例 例 “用REP MOVS 进行数据块传送” 编程步骤如下: 设置传送方向 用CLD 使DF = 0, 地址增加方向(正向) 用STD

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

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

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