标志寄存器
add 带进位加法指令
sbb 带借位减法指令。利用了CF位上的记录的借位值。->sub
如sbb ax bx; (ax)=(ax)-(bx)-CF
作用:对任意大的数进行减法运算。
cmp 功能和sub类似,只是不保存结果,但对标志寄存器进行设置。
结果执行后,ZF=1(表示结果是?0),PF=1(结果的二进制中1 ?偶数个),SF=0(?有符号标志 ),CF=0(?产生借位),OF=0。(?是否产生溢出)
是为1 ;否为0;
cmp进行无符号比较时,相关指令:je 等于则转移 ZF=1。 // j = jump; ne=not equal
jne 不等于则转移 ZF=0
jb 低于则转移 CF=1 // below
jnb 不低于则转移 CF=0
ja 高于则转移 CF=0,ZF=0 // above
jna 不高于则转移 CF=1,ZF=1
rep movsb 循环实现cx个字符的传送
//rep的作用是根据CX的值,重复执行后面的串传送指令。
// movsb和movsw进行的是串传送操作的一个步骤。
movsb(以字节位单位传送):将ds:si指向的内存单元中的字节送入es:di中。根据标志寄存器DF位的值,将si,di递增或递减。
movsw(以字为单位传送):将ds:si指向的内存单元中的字 送入es:di中。根据标志寄存器DF位的值,将si,di递增2或递减2。
DF=0,si=si+1 ;di=di+1 //cld: 将标志寄存器的CF位 置0 clear
DF=1,si=si-1;di=di-1 // std: 将标志寄存器的DF位 置1 set
// 由于每执行一次movsb指令 si和di都会递增或递减 指向后一个单元或前一个单元。
// rep movsb可以循环实现(CX)个字符的传送。
使用串传送指令进行数据传输时,需要提供一些必要的信息。他们是:
1: 传送的原始位置 ds si
2: 传送的目的位置 es di
3: 传送的长度:CX
4: 传送的方向:DF
pushf : 将标志寄存器的值压栈
popf :从栈中弹出数据,送入标志寄存器中。