3.汇编中的标志位
这周主要学习的是转移指令的相关知识和原理。
1. offset在和汇编语⾔中是由编译器处理的符号,它的功能是取得标号的偏移地址。
2. jmp是⽆条件转移指令,可以只修改IP,也可以同时修改CS和IP。
3. CPU在执⾏jmp指令的时候不需要转移的⽬的地址,机器码中包含的的是转移的位移。
4. Ret指令⽤栈中的数据,修改IP的内容,从⽽实现近转移。
Ret=POP IP
Retf指令⽤栈中的数据,修改CS和IP的内容,从⽽实现远转移。
Retf=POP IP POP CS
5. CPU执⾏call指令时,进⾏两步操作:
6. 将当前的IP或CS和IP压⼊栈中(call下⼀个指令的IP)
7. 转移
6. mul乘法指令:
(1)两个相乘的数要么都是8位,要么都是16位。如果是8位,⼀个默认放在AL中,另⼀个放在8位reg或内存字节单元中;如果是16位,⼀个默认在AX 中,另⼀个放在16位reg或内存字单元中。
(2 )结果:如果是8位乘法,结果默认放在AAX中;如果是16位乘法,结果⾼位默认在DX中存放,低位在AX中存放。
7. ⼏个重要的标志寄存器
ZF 零标志位 如果结果为0,那么zf=1;如果结果不为0,那么zf=0
PF 奇偶标志位 如果1的个数为偶数,pf=1;如果为奇数,那么pf=0
比较指令cmp怎么用SF 符号标志位 如果结果为负,sf=1;如果⾮负,sf=0
CF 进位标志位 在进⾏⽆符号运算的时候,它记录向更⾼有效位的进位
OF 溢出标志位 在进⾏有符号运算的时候,超过机器所能表⽰的范围称为溢出
DF ⽅向标志位 在串处理指令中,控制每次操作后si、di的增减
8. adc是带进位加法指令(adc ax,bx 实现的功能是ax=ax+bx+cf)
sbb是带借位减法指令(sbb ax,bx 实现的功能是ax=ax-bx-cf )
9. cmp是⽐较指令,cmp的功能相当于减法指令,只是不保存结果,仅仅根据计算结果对标志寄存器进⾏设置。
指令cmp ax,bx的逻辑含义是⽐较ax和bx中的值,如果执⾏后:
zf=1,说明ax=bx
zf=0,说明ax≠bx
cf=1,说明ax<bx
cf=0,说明ax≥bx
cf=0并且zf=0,说明ax>bx
cf=1或zf=1,说明ax≤bx
10. 检测⽐较结果后的条件转移指令
指令 含义 检测的相关标志位jcxz 短转移 cx=0
je 等于则转移 zf=1
jne 不等于则转移 zf=0
jb 低于则转移 cf=1
jnb 不低于则转移 cf=0
ja ⾼于则转移 cf=0且zf=0 jna 不⾼于则转移 cf=1或zf=1
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论