mov ax, 5
mov bx, 5
cmp ax, bx
这段指令是5-5=0,但是并不是在寄存器中a改值:
还没有给ax寄存器放值之前如上图,放入ax和bx之后如下图:
这个时候再step调试一步也就是走cmp ax,bx之后变成如下:
这里可以看到ax并没有发生改变,改变的是flags:
0x82->0x46
转换成二进制:1000_0010->0100_0010
查看表格:
可以看到第7位的改变从1变为0,这是因为结果0也算正数。
第六位变成了1,因为这是0是一个零标志。
类似的如果是sub指令:
会影响到累加器ax,这就是sub与cmp指令的区别。