指令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次

 

posted @ 2024-10-22 20:46  Auriry  阅读(4)  评论(0编辑  收藏  举报