鱼C论坛

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

11.4不理解,求注释

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

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

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

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

  2. code segment
  3. start:
  4. mov ax,0
  5. push ax
  6. popf
  7. mov ax,0fff0h
  8. add ax,0010h
  9. pushf
  10. pop ax
  11. and al,11000101b
  12. and ah,00001000b
  13. code ends
  14. end start
复制代码

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

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

小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-7-20 13:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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