move指令: 參考文章:http://book.51cto.com/art/200810/93007.htm
lea指令:該指令有兩個(gè)操作數(shù)。左邊是目的操作數(shù),表示操作結(jié)果保存在此,該指令目的操作數(shù)只能是8個(gè)通用寄存器之一。逗號(hào)右邊的是源操作數(shù),該指令的源操作數(shù)只能是一個(gè)存儲(chǔ)單元,表達(dá)存儲(chǔ)單元有多種尋址方式。 LEA是INTEL頗為得意的一條指令。在INTEL OPTIMIZATION REFERFENCE MANUAL中,特別提到了這條指令的好處。 0.LEA指令具有單時(shí)鐘周期,執(zhí)行效率很高。 1.它是CPU地址生成單元參與運(yùn)算的,而不是ALU參與運(yùn)算的,所以在流水線(xiàn)上不會(huì)與上下文的算術(shù)邏輯指令產(chǎn)生流水相關(guān) 2.INTEL指令集中不存在很多RISC機(jī)器所具有的三操作數(shù)算術(shù)運(yùn)算指令,比如像ARM的”add r0,r1,r2”,而LEA指令恰好提供了同樣的功能,以模擬“三元算術(shù)邏輯指令”。
ptr含義及作用 mov ax,bx ;是把BX寄存器“里”的值賦予AX,由于二者都是Word型,所以沒(méi)有必要加“WORD” mov ax,word ptr [bx];是把內(nèi)存地址等于“BX寄存器的值”的地方所存放的數(shù)據(jù),賦予ax。由于只是給出一個(gè)內(nèi)存地址,不知道希望賦予ax的,是byte還是word,所以需要用word明確指出! 所以,當(dāng)兩個(gè)操作數(shù)的寬度不一樣時(shí),就要用到ptr。 也就是說(shuō) int *p 用匯編表示就是:dword ptr [p] *p是取p所指內(nèi)存地址處的值。
rep stos指令 rep指令的目的是重復(fù)其上面的指令.ECX的值是其重復(fù)的次數(shù). stos指令的作用是將eax的值拷貝到ES:EDI指向的地址
如果設(shè)置了direction flag, 那么edi會(huì)在該指令執(zhí)行后減小, 如果沒(méi)有設(shè)置direction flag, 那么edi的值會(huì)增加.
REP可以是任何字符傳輸指令(CMPS, LODS, MOVS, SCAS, STOS)的前綴. REP能夠引發(fā)其后的字符串指令被重復(fù), 只要ecx的值不為0, 重復(fù)就會(huì)繼續(xù). 每一次字符串指令執(zhí)行后, ecx的值都會(huì)減小.
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注