第11章 标志寄存器

标志寄存器flag的3个作用:

1、用来存储相关指令的某些执行结果。

2、用来为CPU执行相关指令提供行为依据。

3、用来控制CPU的相关工作模式。

标志寄存器都是16位寄存器。

标志寄存器中的有效位都是以F结尾的,它们是如下几个:

CF(Carry Flag):进位标志位。

PF(Parity Flag):奇偶标志位。

ZF(Zero Flag):零标志位。

SF(Symbol Flag):符号标志位。

OF(Overflow Flag):溢出标志位。

DF(Direction Flag):方向标志位。

它们在标志寄存器中的分布情况如下所示:

标志寄存器通常用来存储PSW,即程序状态字,Program Status Word。

标志寄存器中只有0、2、4、6、7、8、9、10、11有特殊意义,其他无用。

11.1

ZF标志

标志寄存器中的第6位是ZF,叫做零标志位。

用于判断结果是否为0,如果是ZF=1,否则ZF=0。

在计算机中1表示真,0表示假。

有些指令的执行对于ZF是有影响的,有些没有。

有影响的一般是运算指令。

11.2

PF标志

标志寄存器中的第2位是PF,即,奇偶标志位。

它用于判断指令执行后结果的二进制表示中的1的个数是否是偶数,如果是PF=1,否则PF=0。

11.3

SF标志

标志寄存器的第7位是SF,即,符号标志位。

它判断指令执行后结果是否为负,如果是则SF=1,否则SF=0。

SF是CPU对于有符号数运算的一种记录。

11.4

CF标志

标志寄存器第0位是CF,即,进位标志位。

在无符号数运算时它记录了结果最高有效位向更高位的进位值,或从更高位的借位值。

进位是针对加法而言的,而借位是针对减法而言的。

由此可见,它存储的不再是简单的0和1,而是具体的数值。

11.5

OF标志

标志寄存器中的第11位是溢出标志位。

它用于判断有符号数计算所得结果是否溢出,如果是则OF=1,否则OF=0。

11.6

adc指令

带进位的加法指令。

adc:Add With Carry。

格式:

adc操作数1操作数2

功能:操作数1=操作数1+操作数2+CF。

这条指令的作用是可以将加法运算分解执行。

正是因为有了进位,下一步加法才能不依赖于低位数据而只需要进位数据,从而只需要进行当前位的运算,它的更高位也依此计算。这样你可以把一个大数的各位放在不同的寄存器中计算,或者循环利用两个寄存器分别对加数和被加数的各位进行计算,这提高了寄存器的利用率。

所以,由此可见adc能进行任意大数的计算。

11.7

sbb指令

Substract

With Borrow。

带借位的减法指令,它也利用了CF标志位。

格式:

sbb操作数1操作数2

功能:操作数1=操作数1-操作数2-CF。

与adc相同,sbb也能计算任意大数的减法运算。

11.8

cmp指令

Compare。

比较指令,它会影响各寄存器。

格式:

CMP操作数1操作数2

功能为:

操作数1-操作数2

它影响ZF、PF、SF、CF、OF。

CPU是根据各标志位综合判断操作数1和操作数2的关系的。

它可以对无符号数和有符号数进行比较。

对无符号数进行比较时,它影响ZF、CF。对有符号数进行比较时它影响SF、OF、ZF。

这节讲的内容比较多,逻辑性比较强。

11.9检测比较结果的条件转移指令

转移指的是它能够修改IP。

本届介绍了6个条件转移指令。

JE(Jumpwhen Equal)

JNE(Jumpwhen Not Equal)

JB(Jumpwhen Below)

JNB(Jumpwhen Not Below)

JA(Jumpwhen Above)

JNA(Jumpwhen Not Above)

它们都是通过检测CF和ZF进行转移的,它们都是无符号数之间进行比较,从而进行跳转的指令,它们的详细说明可以看表11.1。

11.10

DF标志和串传送指令

DF是方向标志位,它控制SI和DI的增减。

DF=0,则SI和DI增。

DF=1,则SI和DI减。

MOVSB:串传送指令,Move String Byte,它以字节为单位传送数据。

功能为:

((ES)×16+(DI))=((DS) ×16+ (SI))

if DF=0 then (SI)+=1 (DI)+=1;

else (SI)-=1 (DI)-=1

从这个功能描述来看,这条命令好像是在COPY赋值。源位置是在DS:SI,目的位置在ES:DI。

DEC:Decrease,自减一。

MOVSB的变种是MOVSW(Move String Word),MOVSW以字为单位传送数据。

MOVSW可以把SI和DI增减2。

它俩的格式是:

REP MOVSB/MOVSW

REP:repeat,循环重复的意思,所以这条指令的意思就是循环执行MOVSB/MOVSW。

树上的解释如下:

S:MOVSB/MOVSW

LOOP S

8086CPU提供两条指令对DF进行置位——cld和std指令。

cld:Clear Direction,置DF为0。

std:Set Direction,置DF为1。

11.11

pushf和popf

PUSHF:PUSH FLAG,它是将标志寄存器中的值压栈。

POPF:POP FLAG,它是将栈中的标志寄存器值出栈。

它们直接访问标志寄存器。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,636评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,890评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,680评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,766评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,665评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,045评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,515评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,182评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,334评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,274评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,319评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,002评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,599评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,675评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,917评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,309评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,885评论 2 341

推荐阅读更多精彩内容