异想天开

What's the true meaning of light, Could you tell me why

ZF标记-傻

日期:2015-12-26 23:16:50
  
最后更新日期:2015-12-26 23:19:54
xor ax,ax指令会使cpu的eflags的ZF标志位置位,ZF标志表示有0产生了。那么这个ZF标志什么时候清除了,在写循环时,需要手工写一条指令,清空ZF
标志位吗?
其实上是不需要的,这个问题从逻辑上看,每一条影响ZF标志位的指令会负责重新清掉ZF标志位或置位,有如此2的问题,说明体系结构白学了。
验证程序:
[code lang="cpp"]
org 0x7c00
start:
xor ax, ax
add ax, 1
times 510 - ($-$$) db 0
db 0x55,0xaa
[/code]
在bochs里面reg查看eflags标志,发现add指令后清掉了ZF的置位。
人老了,找感觉的时候,还是将命令记下来吧:
dd if=/dev/zero of=./a.img bs=512 count=$((2880))
nasm test.asm -o test.bin
sudo losetup /dev/loop0 ./a.img
sudo dd if=./test.bin of=/dev/loop0 bs=512 count=1
验证完后
sudo losetup -d /dev/loop0