指令(instruction)是一種語(yǔ)句,它在程序匯編編譯時(shí)變得可執(zhí)行。匯編器將指令翻譯為機(jī)器語(yǔ)言字節(jié),并且在運(yùn)行時(shí)由 CPU 加載和執(zhí)行。
一條指令有四個(gè)組成部分:
標(biāo)號(hào)(可選)
指令助記符(必需)
操作數(shù)(通常是必需的)
注釋(可選)
最近在學(xué)習(xí)匯編語(yǔ)言,過(guò)程中遇到很多問(wèn)題,對(duì)此在以后的隨筆會(huì)逐漸更新,這次談?wù)刴ov,lea指令的區(qū)別
一,關(guān)于有沒(méi)有加上[]的問(wèn)題
1,對(duì)于mov指令來(lái)說(shuō):
有沒(méi)有[]對(duì)于變量是無(wú)所謂的,其結(jié)果都是取值
如: num dw 2
mov bx,num
mov cx,[num];bx=cx=2
對(duì)于寄存器而言,有[]表示取地址,沒(méi)[]表示取值
如: num dw 2
mov ax,num
mov bx,ax;bx=2
mov bx,[ax];mov bx;DS:[ax],這里可能存在報(bào)錯(cuò)的情況,總之大體意思能理解就行
2,對(duì)于lea指令來(lái)說(shuō):
有沒(méi)有[]對(duì)于變量是無(wú)所謂的,其結(jié)果都是取變量的地址,相當(dāng)于指針(與mov相反)
如:num dw 2
lea ebx,num;
lea eax,[num];ebx=eax
對(duì)于寄存器而言,有[]表示取值,沒(méi)[]表示取地址
如:mov eax,2
mov ebx,[eax];ebx=2
mov ebx,eax;eax=地址,隨程序的不同而不同
總結(jié)
以上所述是小編給大家介紹的匯編語(yǔ)言中mov和lea指令的區(qū)別詳解,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)html5模板網(wǎng)網(wǎng)站的支持!
如果你覺(jué)得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!