第3章微处理器和其系统-4-1.pptVIP

  • 1
  • 0
  • 约6.52千字
  • 约 45页
  • 2017-07-29 发布于湖北
  • 举报
3.4.4 指令的分类 指令的分类 一 数据传送指令 二 算术运算指令 三 逻辑运算和移位循环类指令 四 串操作指令 五 程序控制指令 六 处理器控制指令 一 数据传送指令 1 通用数据传送 2 目标地址传送 3 标志位传送 4 I/O数据传送 1)源操作数可以是8/16位的立即数、寄存器操作数、内存操作数。目标操作数不允许为立即数,其余同源操作数。源、目不能同时为内存操作数。 2)源、目操作数类型必须匹配 例如:MOV BYTE PTR [BX], 12H 3) 不能向段寄存器写立即数 例如:MOV AX, 2000 MOV DS, AX 4) 以CS为目标的一切传送指令都是非法的 5)不影响标志位 PUSH 源 1) 两个操作数必须有一个在寄存器中。 2)可以在寄存器之间或寄存器和存储器之间交换数据。不允许在两个存储单元之间进行交换。 3) 不允许使用段寄存器 4) 两操作数等长,可以是字或字节。 例: XLAT 例 LDS DI,[1200H] MOV AX,[DI] ( 1) LAHF 功能:将标志寄存器FR的低字节传送到AH (2) SAHF 功能:将AH寄存器内容送到标志寄存器FR的低字节 (3) PUSHF 功能:先将SP的值减2,再将16位的FR入栈 (4) POPF 功能:将当前栈顶和次栈顶的数据弹出到FR,再将SP的值加2,以指向新的栈顶 1)以上指令的累加器可为AL或AX 2)当端口地址在0-255之间时可用立即寻址方式,否则需将端口地址先放入DX中,然后使用间接寻址方式。 二 算术运算指令 运算数据类型和对标志位影响 (1)数据类型 (2)运算对标志位影响 对标志位的影响:所有算术运算指令都影响状态标志CF 、 PF、AF 、ZF 、SF和OF ① 当无符号数运算结果溢出时,CF=1 ② 当有符号数运算产生溢出时,OF=1 ③ 当运算结果中低8位有偶数个1或0个1,则PF=1 ④ 若加法时第3位给第4位进位,或减法时第3位从 第4位借位,则AF=1 ⑤ 若运算结果为0,则ZF=1 ⑥ 若运算结果为负数,则SF=1 例:若(AL)=9AH,执行指令 SUB AL,65H 后,各标志位的值? 解:9AH-65H=9AH+(-65H) 注意:这里9AH本身是负数补码 [-65H]补9BH 例:若(BX)=6780H,执行NEG BX后, (BX)=? 解: FFFFH-6780H+1 =0000-6780H =9880H 执行指令后,(BX)=9880H 标志位: SF=1 CF=1,OF=0,ZF=0,PF=0,AF=0 乘法和除法小结 字节转换指令 为什么使用BCD码调整? 例:8+7=15。用组合的BCD码表示,运算结果为: 调整原理 凡是遇上某4位二进制码对应的BCD码大于9时,则加6进行调整;凡是遇上低4位产生了进位时,则加6进行调整。 当对多个字节进行BCD码运算时,如果低位字节往高位字节产生进位则CF=1,而当一个字节的低4位往高4位产生进位时,AF=1。十进制调整指令会根据CF和AF的值判断是否进行“加6调整”,并进行具体的调整操作。然后,程序再对高位字节进行运算,再进行十进制调整。 BCD码调整指令 共6条,均为隐含寻址方式,隐含的操作数是 AL或AL、AH; 不能单独使用,要紧跟在相应的算术运算指令之前后; 执行结果为压缩BCD码或扩展BCD码表示的十进制数。 AAM——乘法的非压缩BDC码调整指令 AL/10 ,商 AH 余数 AL AAD ——除法的非压缩BDC码调整指令 AH*10+AL AL 0 AH 3. 乘法指令 MUL 乘数——无符号乘法 字节相乘:被乘数默认在AL中,乘积存入AX 字相乘:被乘数默认在AX中,乘积存入DX/AX IMUL 乘数——有符号乘法 IMUL指令将操作数视为带符号数,运算时若操作数为负数,要先将操作数求补码,运算后再将结果求补。 个乘法指令影响标志位CF和OF,其余四个标志位无意义。 4. 除法指令 DIV 除数——无符号除法 字节除法:被除数默认在AX中,商存入AL,余数存入AH 字除法:被除数默认在DX/AX中,商存入AX,余数

文档评论(0)

1亿VIP精品文档

相关文档