鱼C论坛

 找回密码
 立即注册
查看: 2769|回复: 6

11.4不理解,求注释

[复制链接]
发表于 2011-7-30 09:57:26 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 weixianlang 于 2011-7-30 11:34 编辑
assume:cs:code

code segment
start:
mov ax,0
push ax
popf
mov ax,0fff0h
add ax,0010h
pushf
pop ax
and al,11000101b
and ah,00001000b
code ends
end start
对于 ax=45h 我不知道是怎么来的 pushf 和 popf 是把标志寄存器里什么样的值压栈和弹出的
是压栈一个标志寄存器的值还是所有标志寄存器的值
我编译的时候显示 语法错误 我找不到错误在哪
1104.PNG
求高手给个注释
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-7-30 11:22:13 | 显示全部楼层
本帖最后由 weixianlang 于 2011-7-30 14:46 编辑
mov ax,0
    push ax
    popf
    mov ax,0fff0h
    add ax,0010h   ;CF = 1 , ZF = 1, PF = 1         
    pushf       ;[SP] = 0047H = 100111B
    pop ax      ;ax = 0047h
    and al,11000101B   ;al = 45h =   1000101
    and ah,00001000B   ;ah =  0
assume后面不用加冒号:                 assume cs:code
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-7-30 11:31:17 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-7-30 13:08:41 | 显示全部楼层
新手受教了
:lol:lol
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-8-19 11:36:25 | 显示全部楼层
假设:标志寄存器 为mx,他就像ax,一样   标志寄存器里是16个位,其中有cf,of,sf,zf,pf,这几个就是重要的标志寄存位,希望可以帮你解惑!支持甲鱼
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-8-19 15:12:27 | 显示全部楼层
只有三个标志位是1,压栈后却有四个1.
貌似标志寄存器第(1)位的值总是1的?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-9-12 08:52:19 | 显示全部楼层
2012-9-12 星期三 8-52-20.jpg
看这个图应该明白了

然后最后两个And也是有深意的.你看下他的位数,就是你学过的Flag,对应这个表看下
他目的就是为了让你前面的pushf的值迷惑的时候最后通过这步给你正确了,要问为什么第一次入栈标志寄存器的值算不对.那是因为学的是入门知识,有很多位还没学.所以不对,通过下面的And来把这些没过的给去掉得到你学过到的答案

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-2-8 10:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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