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