king嗜血法师 发表于 2011-6-21 02:53:40

标志寄存器的问题。

pushf
pop ax

标志寄存器的值是按照怎么一个算法装入栈的?

winddyj 发表于 2011-6-21 12:21:09

算法?用不到吧
标志寄存器本就是一个16位的寄存器
刚好直接入栈,把它当成一个通用寄存器操作就可以了,只不过指令不同
如 push ax
    popf
把ax的值赋给标志寄存器

有不了解的,再看下书的第11章

king嗜血法师 发表于 2011-6-22 03:07:49

assume cs:exe,ss:zhan

zhan segment

db 16 dup (0)

zhan ends

exe segment

go:   mov ax,zhan
      mov ss,ax
      mov sp,16
      mov al,0ffH
      mov bl,1H
      add al,bl
      pushf
      
      pop ax
      
exe ends

end go   

ax 的值是3257,那这个3257是标志寄存器的值,ADD后CF和PF的值是1,还有个是ac现在没学到,就是说有3个标志寄存器的值是1,那是通过怎样一个转变变成了3257的?

king嗜血法师 发表于 2011-6-22 03:09:09

本帖最后由 king嗜血法师 于 2011-6-22 03:09 编辑

像检测点11.4,不用debug。
直接用口算能得出结果吗?

king嗜血法师 发表于 2011-6-22 03:34:19

标志寄存器是以二进制的8个位组成,全部是1来表示11111111,转换成16进制也是等于FF,那ax最多不会超过00FFH,有点搞蒙了。:dizzy:
页: [1]
查看完整版本: 标志寄存器的问题。