滴水逆向三期-标志寄存器
ADC指令,带进位加法
格式:ADC R/M,R/M/IMM 两边不能同时为内存,宽度要一样
先给AL和CL付值然后一个给1一个给2 ADC后发现是4 和ADD 3不一样 多了一个1,所以定义ADC是带进位的加法,运算的指令会影响标志寄存器,高位没有溢出所以C的位置是0
SBB指令,带错位减法
格式:SSB R/M,R/M/IMM 两边不能同时为内存 宽度要一样
看到变成了1 和上面的原理一样
ADC的C是carry SBB的B是borrow
XCHG指令:交换数据
格式:XCHG R/M,R/M 两边不能同时为内存 宽度要一样
交换指令里面是不能有立即数的
MOVS指令:移动数据 内存-内存
BYTE/WORD/DWORD
可以两边都存在内存
MOVS BYTE PTR DS:[ESI],BYTE PTR DS:[ESI] 简写为:MOVSB
两边的宽度得一样
从DC移动到D0的值,四个字节挪过去后,ESI变了变成了E0,EDI变成了D4,他们的地址都加了4 改成word地址加2
标志寄存器的D位 direction 方向标志DF,增长方向,0的时候地址是加
STOS指令:将AL/AX/EAX的值存储到[EDI]指定内存单元
跟宽度有关
STOS BYTE PTR ES:[EDI]
EDI增长方向受位的影响
D位是1 然后减去了4个
REP指令:按计数寄存器ECX中指定的次数重复执行字符串指令 遍历
ECX中10,然后按照里面的值执行次数16次 因为里面是16进制