您的位置 首页 被动

第13章 标志寄存器(X86汇编教程)

其实这章的内容不怎么重要,看不懂也没关系,这些都是后台自己处理的,标志寄存器很少有人自己操作,就好像你不知道你的心脏每分钟跳几下,但你

其实这章的内容不怎么重要,看不懂也不要紧,这些都是后台自己处理的,标志寄存器很少有人自己操作,就好像你不知道你的心脏每分钟跳几下,但你依然活得好好的这样,别的,.之前竟然有人转载了某章节,尽管那一章我没写不能转载……

这一章简略介绍一个寄存器.为之后的章节做衬托(因为咱是懒人,下一章何时写不决.)

标志寄存器(PSW),是对核算的成果以及CPU的某些状况进行保存用的.

为了完成一些功用,CPU在履行某些指令的时分,会把核算发生的一些东西保存到标志寄存器,一般都是管用指令.比方说核算成果是正数仍是负数.

186的标志寄存器是16位的,除了几个没用到的位,每一位都有不同意义和姓名.姓名表如下:

15 | 14 | 13 | 12 | 11 | 10 | 09 | 08 | 07 | 06 | 05 | 04 | 03 | 02 | 01 |00
[ ][ ][ ][][OF][DF][IF][TF ][SF][ZF][ ][AF][ ][PF][ ][CF]

[第0位CF]
这个用来记载相关指令履行后超出边界的那一位数据.
比方:
加法的时分:
mov ah,10000000B
mov al,10000000B
add ah,al
成果:ah=00000000B(理论上有个1在第9位,但ah是8位寄存器,所以第9位不放在这里)
第9位放在CF里!

减法核算的时分能核算向高位借的数值:
mov ax,0000H
sub ax,0001H
成果:ax=FFFFH(向第17位借了一个数字,所以CF=1(表明有借位!),假如没借数字则CF=0)
[第2位PF]
用来记载相关指令履行后,其成果一切bit位中1的个数是否为偶数,是则PF=1不然PF=0
[第6位ZF]
用来记载相关指令履行成果是否为0,假如为0则ZF=1不然ZF=0,比方:
mov AX,1
sub AX,1
成果为0则ZF=1
影响标志位的指令,比方add,sub,mul,div,inc,or,and等,大多都是运算指令,有些则没有影响,如mov,push,pop等,大多都是传送指令.
[第7位SF]
记载指令履行后的成果是否为负数,假如是负数则=1不然=0
[第8位TF]
假如TF=1则CPU运转一行代码后就发生中止,假如为0则代码一向运转下去.
[第9位IF]
操控是否呼应外中止,假如为1则呼应,为0则不呼应,STI指令能将其设为1,CLI指令设为0
[第10位DF]
给一些指令用的…
[第11位OF]
溢出标志,核算成果假如发生溢出则OF=1不然OF=0
溢出实例:
mov ah,FFh
add ah,FFh
核算成果大于ah所能寄存的最高数值,则会溢出

本章完毕..

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ziliao/beidong/317280.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部