<<汇编语言>>第11章笔记

标志寄存器

标志寄存器有以下3种作用:

  1. 用来存储相关指令的某些执行结果
  2. 用来为CPU执行相关指令提供行为依据
  3. 用来控制CPU的相关工作方式

note : 标志寄存器与其他寄存器不一样,它是按位起作用的,也就是说它每一位都有专门的含义,记录特定信息。

ZF标志

标志寄存器的第6位是ZF,零标志位。它记录相关指令执行后,其结果是否为0。结果为0的话,那么zf = 1,不为零的话,zf = 0

note : 有的指令不影响标志寄存器,比如:mov、push、pop等传送指令。

PF标志

标志寄存器的第2位是PF,奇偶标志位。它记录相关指令执行后,其结果的所有bit位中1的个数是否为偶数。如果1的个数是偶数,PF = 1,奇数则为0。

SF标志

标志寄存器的第7位是SF,符号标志位。它记录相关指令执行后,其结果是否为负。如果为负,SF = 1,否则为0。

CF标志

标志寄存器的第0位是CF,进位标志位。在做无符号运算时,它记录了最高有效位向更高位的进位制,或从更高位的借位值。

OF标志

标志寄存器的第11位是OF,溢出标志位。一般情况下,OF记录了有符号运算的结果是否发生了溢出。如果发生了溢出,OF=1,否则为0。

adc指令

adc是带进位的加法指令,它利用了CF位上记录的进位值。
指令格式:adc 操作对象1 + 操作对象2 + CF

# 示例 
# 计算 1EF000H + 201000H,结果放在ax(高16位)和bx中(低16位)
mov ax, 001EH
mov bx, 0F000H
add bx, 1000H
adc ax, 0020H

sbb指令

sbb指令是带借位的错位减法指令,它利用了CF位上记录的借位值
指令格式:sbb 操作对象1, 操作对象2
功能:操作对象1 = 操作对象1 - 操作对象2 - CF

# 示例
# 计算003E1000H - 00202000H,结果放在ax, bx中
mov bx, 1000H
mov ax, 003EH
sub bx, 2000H
sbb ax, 0020H

cmp指令

cmp是比较指令,cmp功能相当于减法指令,只是不保存结果。cmp指令执行后,将对标志寄存器产生影响。其他指令通过识别被影响的标志寄存器来得知比较结果
cmp指令格式:cmp 操作对象1, 操作对象2

检测比较结果的转移指令

下面是无符号数的比较结果进行转移的条件转移指令。

DF标志和串传送指令

标志寄存器的第10位是DF,方向标志位。在串处理指令中,控制每次操作后si、di的递减。

movsb和movsw

movsw和movsb相似,只是把内存单元还成了以字为单位。
movsb和movsw一般都是和rep配合来使用,格式如下:
rep movsb
用汇编语法来描述就是:

s: movsb
    loop s

8086CU提供下面两条指令对df位进行设置。
cld指令:将标志寄存器df位置0
std指令:将标志寄存器df位置1
下面是示例:

pushf和popf

pushf是将标志寄存器的值压栈,popf是从栈中弹出数据,送入标志寄存器中。


这里是我的博客


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 8086汇编 本笔记是笔者观看小甲鱼老师(鱼C论坛)《零基础入门学习汇编语言》系列视频的笔记,在此感谢他和像他一样...
    Gibbs基阅读 37,501评论 8 114
  • 计算机通过执行指令序列来使机器得以工作,所以对于每一系列的计算机都有指定的一组指令集供计算机使用,这组指令...
    未来科技工作室阅读 8,176评论 1 10
  • 指令是使计算机执行某种特定操作的二进制编码。8086 CPU指令系统有133条指令,通常分为数据寻址方式和程序寻址...
    刀月水阅读 1,675评论 0 1
  • 书里说:孤单只需要一个人,而寂寞则需要两个人。这貌似说的很有道理,人总是会偏信有道理的或者共鸣的话。 最近好的电影...
    海边的桃源阅读 81评论 0 0
  • 湖州的朋友来缙云玩,我们还是带他们去仙都景区。因为麻同学的带队,我们省门票和缆车票的钱。晚上聚餐就把麻同学也...
    9605f7f4bb63阅读 116评论 0 0