好比MOV r/m16,r16spa
r:表明寄存器 m16:表明內存 r16:表明16位的通用寄存器3d
因而這條指令的意思就是,能夠把r16的寄存器中的數據 存到 通用寄存器中也能夠存到16位的內存中。blog
例子:假如EAX 00000001,ECX 00000002內存
執行:ADD EAX,ECX (EAX和ECX相加再放入EAX裏)字符串
執行完以後會存在EAX裏面因此EAX 00000003im
例子: SUB r8,r/m8(r8減去r/m8中去再存入r8)d3
SUB AL,byte ptr ds:[18FFA0]數據
例子 AND r/m32,r32(r/m32的值與r32再存入r/m32)margin
AND dword ptr ds:[18FFA0] ,EAXword
1.MOVS容許內存到內存
2.用MOVS就默認用EDI和ESI
EDI:要把數據複製到哪裏去 ESI:要複製的數據在哪裏
例子:
指令:一個字節一個字節進行復制
執行前:
執行後:
說明只要指令執行一次,地址的編號就會加1(由於是byte 一個字節一個字節複製,同理若是是word那麼內存的地址編號就會每執行一次加2)
3.標誌寄存器EFI (暫時介紹)
DF 是指第十位
DF位爲0 則EDI和ESI的值就+1/+2/+4
DF位爲1 則EDI和ESI的值就-1/-2/-4
好比ECX存儲的值爲10
則MOV ECX,10(把10存到ECX)
REP MOVSD(rep執行多少次呢??執行16次。 10 :1111 0000,每執行一次ECX的值會-1,計數嘛)
REP STOSD(同上)