我们都知道寄存器就相当于容器,是拿来存储数据的。标志寄存器它也是拿来存储数据的。
那他们有什么区别呢?
我们常用的寄存器,里面存的数据,都只有一个含义,而标志寄存器是按位起作用的,也就是说,它的每一位都有专门的含义,记录特定的信息。
重点把CF/PF/AF/ZF/SF/OF的位置记住,图上面有对应的序号
CF/PF/AF/ZF/SF/OF的位的解析
- 进位标志CF(Carry Flag):如果运算的结果的最高位产生了一个进位或者借位,那么其值为1,否者其值为0
这里的进位是指:如果说用一个8位的寄存器进行运算,最终运算结果,会变成9位,但是寄存器这时候的数据宽度是8位,所以最高位会产生进位。这就表示最高位进位了,这时候CF的值会变成1,进位标志并不是指简单的最高位加1。
可能这样用文字说不是很好理解。我用DTDebug给你们实验一下.
MOV AL,0xEF
ADD AL,2
目前程序执行到 MOV AL,0xEF这条语句,我们在DTDebug按f8单步执行一下这条语句看一下结果