鱼C论坛

 找回密码
 立即注册
查看: 3236|回复: 4

标志寄存器的问题。

[复制链接]
发表于 2011-6-21 02:53:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
pushf
pop ax

标志寄存器的值是按照怎么一个算法装入栈的?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-6-21 12:21:09 | 显示全部楼层
算法?用不到吧
标志寄存器本就是一个16位的寄存器
刚好直接入栈,把它当成一个通用寄存器操作就可以了,只不过指令不同
如 push ax
    popf
把ax的值赋给标志寄存器

有不了解的,再看下书的第11章
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 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的?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-6-22 03:09:09 | 显示全部楼层
本帖最后由 king嗜血法师 于 2011-6-22 03:09 编辑

像检测点11.4,不用debug。
直接用口算能得出结果吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-6-22 03:34:19 | 显示全部楼层
标志寄存器是以二进制的8个位组成,全部是1来表示11111111,转换成16进制也是等于FF,那ax最多不会超过00FFH,有点搞蒙了。:dizzy:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-14 12:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表