![]() | 第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 |