【汇编语言王爽】学习笔记p54-p79

标志寄存器-神秘的第十四个寄存器flag

axbxcxdx
sidi
bpspip
csssdses
flag
按位起作用

在这里插入图片描述

特殊之处 OF(overflow)1:ov ; 0:nv -溢出

DF (direction) 1DN 0UP 方向

SF sign符号 ng pl 1 negative 0positive

ZF zero零值 zr / nz zero / notzero

PF Parity奇偶数 1pe 0 po odd/even

CF carry进位

在这里插入图片描述

直接访问flag的方法pushf popf

在这里插入图片描述

ZF 结果是零的话 寄存器就zf=1; 很多如add sub mul都会影响zf

在这里插入图片描述

PF parityflag - 记录指令执行后结果的所有二进制位中1的个数

1的个数为偶数个 pf=1
在这里插入图片描述

SF - 结果看作有符号数 结果为负数sf=1;

在这里插入图片描述
在这里插入图片描述

见机行事 看作正数负数

在这里插入图片描述

CF 进位标志 CF=1 有进位或借位----针对无符号数

在这里插入图片描述
在这里插入图片描述

对比CF–针对无符号数;OF-针对有符号数

在这里插入图片描述
在这里插入图片描述

综合 一条指令可以带来多少标志寄存器的变化

在这里插入图片描述
在这里插入图片描述

带进位的加法指令adc用cf位记录进位值 adc ax,bx-------就这个机制 -感觉别扭 但是往后看大数相加 合理

在这里插入图片描述

adc指令应用 大数相加---------分组-低十六位-高十六位 ;地位产生的进位通过adc解决了!

在这里插入图片描述
在这里插入图片描述

128位数相加

在这里插入图片描述

特别注意:思考!

在这里插入图片描述
不可以!!!还有个目的是cf清零

不可以!!! inc di不会影响flag 而add di2 会影响

sbb—带借位减法指令 sbb ax bx

在这里插入图片描述

cmp比较指令 cmp 操作对象1,操作对象2-------二者相减结果不保存----------指令执行后将对flag产生影响—以此确定比较结果

在这里插入图片描述

无符号数 例如 相等:zf=1 ; 不等于 zf=0 ;小于:cf = 0;

在这里插入图片描述
在这里插入图片描述

条件转移指令 jxxx标号-----套路je:jump equal 结果相等跳转

在这里插入图片描述
在这里插入图片描述

条件转移指令的使用—直接考虑cmp和jxxx指令配合出来的逻辑含义就可以了----------例如:cmp ah,bh je sadd ah,bh jmp short ok

在这里插入图片描述
在这里插入图片描述

条件转移指令的应用–本质 转移–修改ip; 和cmp配合使用cmp改变标志位

双分支结构的实现—对比c语言

在这里插入图片描述

统计8的数量

在这里插入图片描述

DF方向标志位和段传送—

原本方法:mov ax ,【si】
mov【di】,ax
add si,2
add di,2
在这里插入图片描述
更简洁方法

DF=0:每次操作后si di 递增

在串处理指令中,控制每次操作后si di的增减 ; 对DF位进行设置的指令:cld df=0;std df=1;

在这里插入图片描述
在这里插入图片描述

rep指令 —根据cx重复执行后面的指令-------常常与串传送指令搭配 rep movsb

在这里插入图片描述

在这里插入图片描述

中断—导学------精华

在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

扯淡散人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值