《汇编语言第三版》 ssdhh著 ------读书笔记
3358 www.Sina.com/http://www.Sina.com/http://www.Sina.com /
CPU内部的寄存器中有具有以下3个作用的特殊寄存器(
保存的信息通常称为程序统计信息(PSW )
用于存储相关指令的执行结果。 为CPU执行相关指令提供工作依据; 用于控制CPU的动作
3358 www.Sina.com/http://www.Sina.com/http://www.Sina.com/http://www.Sina.com /
http://www.Sina.com/http://www.Sina.com /
flag的第6位ZF标志相关指令的计算结果是否为0
1 ) 0时,ZF=1
2 )非0时,ZF=0
只影响运算指令
http://www.Sina.com/http://www.Sina.com /
第2位是PF,奇偶标志位
记录相关命令执行结果的所有比特中的1比特数
1 )偶数位时,PF=1
2 )奇数位时,PF=0
http://www.Sina.com/http://www.Sina.com /
第7位是科幻,符号标志位
记录相关命令的执行结果是否为负
1 )负时,PF=1
2 )非负时,PF=0
计算机中的数据可以看作有符号数和无符号数
标志寄存器(
如果将数据作为无符号进行运算,则SF的值没有意义
3358 www.Sina.com/http://www.Sina.com/http://www.Sina.com /
flag的第0位是CF、进位标志位、
http://www.Sina.com/http://www.Sina.com /
flag
98H 1001 1000
1001 1000
-----------------
(CF ) 10011 0000
margin-left:0in;">98H补 = 10010 1000
CF 记录了从最高有效位向更高位的借位值
减法:
97H-98H
相当于 197H-98H
11.5 OF 标志(有符号数运算)
flag的第11位是OF,溢出标志位,
若发生溢出:OF =1
若未溢出: OF=0
11.6 adc 指令
adc 是带进位加法指令,它利用了CF位上记录的进位值
指令格式:adc操作对象1,操作对象2
功能:操作对象1 = 操作对象1 + 操作对象2 + CF
11.7 sbb指令
sbb是带借位减法指令
指令格式:sbb 操作对象1,操作对象2
功能:操作对象1=操作对象1-操作对象2-CF
11.8 cmp指令
比较指令:cmp的功能相当于减法指令,不保存结果
格式:cmp 操作对象1,操作对象2
无符号数运算
影响寄存器 CF:是否借位 ZF:结果是否为0
有符号数运算
逻辑上的运算结果 与实际上的运算结果
SF OF
SF只标记 8位bit的正负,
而cmp则标记逻辑上运算结果的正负
例:
22 H
BIN 0010 0010
dec 34
[22]补 = 34
0A0H
BIN 1010 0000
[0A0]补 = 1 110 0000 =-96
dec 160
[22]补 - [0A0]补 = 34 - (-96) SF=1 a>b
ah -bh
22H - 0A0H
1010 0000 1110 0000
0010 0010 -
11.9 检测比较结果的条件转移指令
je 等于 ZF=1
jne 不等于 ZF=0
jb 低于 CF=1
jnb 不低于 CF=0
jna 不高于 CF=1 or ZF=1
ja 高于 CF=0 and ZF=0
跳转取决于 标志位的值
一般 cmp 与 条件转移指令联用,使用其它指令亦可
等价于 if 语句
11.10 DF标志和串传送指令
movsb/movsw
mov es:[di], word / byte ptr ds:[si]
设置df的值
std
df =1
逆向传送
DEC si
DEC di
cld
df =0
正向传送
inc si
inc di
rep movsb/movsw
循环执行串传送指令
传送字单元,字节单元
11.11 pushf 和popf