《零基础入门学习汇编语言》第五十四讲及检测点11.1
本帖最后由 shuiyu 于 2017-10-12 20:48 编辑越努力,越幸运。欢迎大家来看我的笔记{:10_297:} ,不对的请各位大佬指正,谢谢{:10_254:}
在课程设计1用自己的方法写了一个星期,发现还是写不出来,索性就留着以后再写了(内心难受得一匹{:10_247:} )感觉自己很low{:10_280:} ,耽误了日常笔记的更新不好意思各位{:5_111:}
一、ZF标志、PF标志、SF标志
(1)8086CPU的标志寄存器有16位,其中存储的信息通常被称为程序状态字(PSW)。我们己经使用过8086CPU的ax、bx、cx、dx、si、di、bp、sp、ip、cs、ss、ds、es等13个寄存器了。本章中的标志寄存器(以下简称为flag)是我们要学习的最后一个寄存器。flag 和其他寄存器不一样,其他寄存器是用来存放数据的,都是整个寄存器具有一个含义。而flag寄存器是按位起作用的,也就是说,它的每一位都有专门的含义,记录特定的信息。
8086CPU的flag寄存器的结构:
(2)
ZF:零标志位。判断结果是否为0。若为0,ZF=1,若不为0,则ZF=0
PF:奇偶标志位。判断所有二进制位中1的个数。偶数时PF=1,奇数时PF=0。
SF:符号标志位。判断结果正负(PS:怎样判断正负请看下面)。若为正SF=0,若为负SF=1。
有符号数(第一位为符号位)
把一个二进制数当成有符号数的时候,第一位为0时,表示该数为正的
把一个二进制数当成有符号数的时候,第一位为1时,表示该数为负的
(3)注意:
在8086CPU的指令集中,有的指令的执行是影响标志寄存器的,比如:add、sub、mul、div、inc、or、and等,它们大都是运算指令(进行逻辑或算术运算);有的指令的执行对标志寄存器没有影响,比如:mov、push、pop等,它们大都是传送指令。
检测点11.1
这个检测点很简单,对着ZF、PF、SF的定义对照就行了。主要让我们注意的是那些指令对标志寄存器没有影响。
sub al,al al=0h ZF=1 PF=1 SF=0
mov al,1 al=1h ZF=1 PF=1 SF=0 mov指令对标志寄存器没有影响
push ax al=1h ZF=1 PF=1 SF=0 puah指令对标志寄存器没有影响
pop bx bx=1h ZF=1 PF=1 SF=0 pop指令对标志寄存器没有影响
add al,bl al=2h ZF=0 PF=0 SF=0
add al,10 al=12h ZF=0 PF=1 SF=0
mul al al=144h ZF=0 PF=1 SF=0
谢谢小甲鱼带来的视频教程,感谢!! {:10_303:}
本节结束,多谢览阅!
越努力,越幸运。谢谢大家来看我的笔记{:10_297:} ,不对的请各位大佬指教,谢谢{:10_254:} {:5_90:}{:5_90:}
快学啊,学完了学32位汇编,学保护模式下的,咱们一起 兰陵月 发表于 2017-10-12 10:38
快学啊,学完了学32位汇编,学保护模式下的,咱们一起
哈哈,好的好的。因为现在开学了没啥时间了,所以进度就有点慢{:10_250:} shuiyu 发表于 2017-10-12 17:34
哈哈,好的好的。因为现在开学了没啥时间了,所以进度就有点慢
基础最重要,基础学好了,以后学习就会顺利些 本帖最后由 阿潘潘 于 2018-5-13 18:54 编辑
1 进制好像错了,2h+10dec是Ch或者12dec吧 {:7_144:} 最后一行错了,mul al 结果al应为144d,也就是90h,如果是144h的话,你转化二进制会有3个1,那么PF标志位就不为1了
页:
[1]