soldier 发表于 2011-5-25 12:33:41

监测点11.4问题

本帖最后由 loop 于 2011-5-29 23:24 编辑

assume cs:code

code segment
start:        mov ax, 0
                push ax
                popf
                mov ax, 0fff0h
                add ax, 0010h
                              ;经过这句以后标志寄存器应该是0000000001000101 也就是0045, debug的时候怎么是1100001000101 也就是3047那,
                pushf
                pop ax
                and al, 11000101b
                and ah, 00001000b
               
                mov ax, 4c00h
                int 21h

code ends
end start
标志寄存器
CF       OF       SF       ZF       PF

1      0      0      1      1

小甲鱼 发表于 2011-5-28 04:41:26

3047h == 00110000 01000111B

8086的标志寄存器咱只看第 0 2 4 6 7 8 9 10 11 位,其他都是浮云。

这里得到的数据第0位是1,因为产生进位了;
第2位是1,因为结果有奇数个1;
第6位是1,因为结果进位之后为0。

其他位……都是浮云,debug带来的
页: [1]
查看完整版本: 监测点11.4问题