指令1 2015.1.19
一、ADC指令:带进位加法
1、格式:ADC R/M,R/M/IMM (ADC 寄存器/内存,寄存器/内存/立即数) 两边不能同时为内存,宽度要一样
2、
①ADC AL,CL
CL加到AL中1+2应为3,但是是ADC再进位加法变成了4,C位也从1变成了0(因为AL+CL后高位没有溢出,所以变成了0)


②ADC BYTE PTR DS:[12FFC4],2
12FFC4的内存加2应该变成3D但是进位变成3E


③ADC BYTE PTR DS:[12FFC4],AL
二、SBB指令:带借位减法
1、格式:SBB R/M,R/M/IMM 两边不能同时为内存 宽度要一样
2、SBB AL,CL



SBB BYTE PTR DS:[12FFC4],2
SBB BYTE PTR DS:[12FFC4],AL
三、XCHG指令

①寄存器之间交换:XCHG AL,CL AL与CL交换


②XCHG DWORD PTR DS:[12FFC4],EAX 内存与寄存器交换


四、MOVS指令


MOV ESI,12FFDC
MOV EDI,12FFD0
MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI]
执行前两个指令后寄存器的值变成了对应内存的值,最后一条指令执行后寄存器的值在前两条指令的基础上再各加了4,如果把最后一条指令的DWORD换成WORD就是各加2



WORD,减2


五、STOS指令

第一二个指令执行后是EAX是12345678,EDI变成了12FFC4,第三条指令执行后是DWORD减4



六、REP指令

REP MOVSD是,下面第二条指令的缩写
第二条指令的作用是重复把ESI往EDI移动数据,因为是16进制,所以10是16次


浙公网安备 33010602011771号