status
word
程序状态寄存器psw是计算机系统的核心部件——运算器的一部分,psw用来存放两类信息:一类是体现当前指令搏扮执行结果的各种状态信息,称为状态标志,如有无进位(cf位),有无溢出(of位),结果正负(sf位),结果是否为零(zf位),奇偶标志位(pf位)等;另一类是存放控制信息,称为控制状态,如允许中断(if位),跟踪标志(tf位),方向标志(df)等。有些机器中将psw称为标志寄存器fr(flag
register)。
在8086/8088cpu中,psw是一个16位寄存器,用于寄存单签指令执行后的某些状态,即反映指令执行结果的一些特征信息。在debug程序中,可以使用r命令来查看psw的值,除了tf没有显示之外,其它8个标志的值显示方式如下:
标志名
设置
nv(清除)
ov(溢出)
方向
dn(减)
up(增)
中断
ei(启用)
di(禁用)
正负
ng(负)
pl(正)
零
zr(0)
nz(非0)
辅助进位
ac(进位)
na(不进位)
奇偶校验
pe(偶校验)
po(奇校验)
进位
cy(进位)
nc(不进位)
如:
ov
dn
ei
ng
zr
ac
pe
cy依次表示of
df
if
sf
zf
af
pf
cf都为1
nv
up
di
pl
nz
na
po
nc依次表示of
df
if
sf
zf
af
pf
cf都为0.
psw各位的定义如下:
cy(psw.7):即psw的d7位,进基绝灶位、借位标志。进位、借位cy=1;否则cy=0.
ac(psw.6):即psw的d6位,辅助进位、借位标志。当宏陆d3向d4有借位或进位时,ac=1;否则ac=0.
f0(psw.5及psw.1):即psw的d5位,用户标志位;
rs1及rs0(psw.4及psw.3):即psw的d4、d3位,寄存器组选择控制位;
ov(psw.2):溢出标志。有溢出ov=1,否则ov=0;
f1(psw·1):保留位,无定义;
p(psw·0):奇偶校验标志位,由硬件置位或清0;存在acc中的运算结果有奇数个1时p=1,否则p=0。
F0是用户标志Cy是进借位标志
Ay是辅助进借位标志
RS0.RS1是工作寄存组
OV:溢出标志位,有溢出时置1.
P:
奇数
标稿哪志位,有奇数个1时置1.
F0是PSW
寄存器
的带敬芦用户可编程位,他是一个用户可以自己设置的状态位,比如在两片
单片机
之间进行通信时,我们可以用这一位的状态来判断是否准备好蠢带接收,或是发送。因此可以作为你设置的标志位,你的程序可以根据需要对这个位进行置位或者清零、或者对这个位进行测试!
我不能给帆洞你全面的解释,但是我知道你真是混了,我理解的是第8位进位的话,状态寄存器中的CY加1,不是你说的什么2啊3啊,如果是11110000和11110000相加呢?那按你的意思又该是哪位进位时CY置1 啊?告饥?但是如果是根据第八位进位,CY置1的话,单片机就好判断CY什么时候置1了,因为当最后位进位态友枯后数值会变成0,而相加前肯定是1,相加后变成了0 ,那么此时CY应该置1了欢迎分享,转载请注明来源:内存溢出
评论列表(0条)