目录 上一页 下一页 下一章

第10章 细节补充 -275-







hex16o
code

dec
jnz

pop
pop
ret
endp
ends
end
ch
loop1

cx
bx



main
;处理完AX寄存器中的数据了吗?
;未处理完数据,转LOOP1继续

;恢复寄存器

;返回主过程



  压缩的BCD码不能进行乘、除运算,因为没有相应的调整指令处理运算结果。而采用非压缩BCD码不仅可以进行加、减运算,而且可以作乘、除运算,计算结果都有相应指令进行调整。其调整指令共有4条:
  ·AAA(ASCII Adjust for Addition)加法的ASCII调整指令
  ·AAS(ASCII Adjust for Subtraction)减法的ASCII调整指令
  ·AAM(ASCII Adjust for Multiplication)乘法的ASCII调整指令
  ·AAD(ASCII Adjust for Division)除法的ASCII调整指令
  这四条指令之所以被称为"ASCII调整指令",可能是由于字符0-9的ASCII码与非压缩BCD码之间的密切关系而来的。指令记忆起来也比较容易,前两个字母都是AA,第三个字母表示了这条指令对何种运算结果进行调整。
  有些朋友总觉得汇编指令繁杂难记,其实并非如此,关键在于掌握合理的记忆方法。按字母死背是最笨的。实际上指令的助记符都来源于一些实际的英文单词,就连标志寄存器中各个位的符号其实也是英文缩写。如果能确实搞懂这些单词的含义自然就能把这些指令、符号之类的东西记住,所以说死记指令不如活学英语。这样学习就可以做到一举多得,至少可以两得,既学了编程又学了英语。
10.2 标志寄存器
  标志寄存器在前面几章里已有所讨论,不过有几个稍微特殊的位还要作些更详细的研究。
  (1)PF(Parity Flag)位
  这是奇偶标志位,当运算结果之中"1"的个数为偶数时此位将置位,当运算结果中"1"的个数是奇数时此位复位。请看下面的实验:
  C:\ASM\>debug[Enter]
  -a[Enter]
  0F6A:0100 mov al,36
  0F6A:0102 or al,81
  0F6A:0104 and al,7f
  0F6A:0106 add al,80
  0F6A:0108 shl al,1

Copyright © 2004-2015 Reanimator www.cookmoon.org

目录 上一页 下一页 下一章