求助!組合語言MOV問題急求助組合語言中mov指令和add指令用法

2021-03-05 09:22:06 字數 2377 閱讀 2641

1樓:匿名使用者

1、我覺得不可以。

2、lea是傳運算元位址,mov是移動位址中的資料(當然,這個資料還可能為乙個位址)

3、中括號表示間接定址,對應暫存器中資料為二級位址,然後從二級位址中取出儲存的資料。

4、期待其它答案。

其它參考資訊:

0.lea指令具有單時鐘週期,執行效率很高。

1.它是cpu位址生成單元參與運算的,而不是alu參與運算的,所以在流水線上不會與上下文的算術邏輯指令產生流水相關

2.intel指令集中不存在很多risc機器所具有的三運算元算術運算指令,比如像arm的"add r0,r1,r2",而lea指令恰好提供了同樣的功能,以模擬「三元算術邏輯指令」。

舉個例子,要計算兩個暫存器的和,但又不想破壞原來的值,那麼可以執行lea ebx ,[eax+edx], 這條指令,執行的就是 ebx = eax + edx 這條加法運算。如果用add指令,則不可能一條指令內完成。

3.在組合語言程式設計中,在需要取得乙個變數位址時,使用lea是很方便的。而mov指令則常常出錯,因為在微軟ma**彙編語法中,label和variable是不同的。

lea eax,[esp+44]的功能就是eax=esp+44

這樣的格式出現

是因為mov指令不支援mov reg,reg+immed這樣的格式

當然也可以用lea來進行快速加法、乘法......

2樓:匿名使用者

不行的,lea是載入有效位址,mov是移動位址裡面的值到暫存器裡面

mov bx,abc是將abc裡面的值放到bx中

mov bx,【abc】是將abc裡面的值所指向的位址的值放到bx中

急~~~求助組合語言中mov指令和add指令用法

3樓:匿名使用者

1、linux和windows的**編寫是不一樣的,linux上的彙編風格是at&t風格,而windows上的彙編風格是intel風格。 其中的乙個區別是intel 風格是關於源運算元和目的運算元的。以第乙個為例

//windows上的寫法

mov eax, data4

//linux上的寫法

movl data4, eax

所以,你使用的哪個平台你得鬧明白。

2、如果是彙編**,直接用識別符號就好,還是不同的風格問題,如果按你寫的立即數模式。

//windows上的寫法

mov eax, -1000

//linux上的寫法

movl $-1000, eax

在linux的at&t彙編風格中,它這個立即數是必須要加上$ 表示乙個常量。 這個也是為什麼你在c語言中一般不能使用$來做為識別符號的乙個原因哦。

建議:查一下intel風格和at&t風格的彙編區別點。問題都很簡單,為了更好的幫助你,我上傳了乙份,詳細介紹intel組合語言程式設計的電子書,中文版的,希望能幫到你!

求助一道組合語言問題!

4樓:做而論道

data segment

buffer db 0ch, 'wcsegmentend'

key db 'a'

flag db ?

data ends

code segment

assume cs:code, ds:datamain proc far

start:

push ds

mov ax, 0

push ax

mov ax, data

mov ds, ax

;-------------------------mov al, key

lea bx, buffer

mov cl, [bx]

a4:inc bx

cmp [bx], al

je a3

dec cl

jne a4 ;迴圈查

62616964757a686964616fe4b893e5b19e31333335346135找

mov flag, -1

ret;-------------------------a3:mov ah, [bx + 1]mov [bx], ah

inc bx

dec cl

jne a3

mov flag, 0

ret;-------------------------main endp

code ends

end main

5樓:匿名使用者

你執行的方法好像不對,程式跑飛了

組合語言問題組合語言問題

微控制器中 沒有相等就跳轉的指令 其實,cjne實際上也實現了相等跳轉的功能的 cjne a,data,rel 如果不等跳到rel指令a 如果等就執行下一條指令 指令a.rel 指令b 假如有一條相等就跳轉的指令cje 實際上沒有 cje a,data,rel 相等跳到rel指令b 不等跳到指令b ...

組合語言問題,關於輸出字串,組合語言問題,輸出了正確結果,但是下面還輸出了許多亂碼

沒大bai毛病,2處錯誤 decs sub ax,dx 這裡錯du了,dec不是幹這活zhi的.dec ax,dx 原數的兩dao個絕對值相版減 loop next mov ah,4ch 這裡加上退出指令。int 21h 其它權的沒問題。code ends 組合語言問題,輸出了正確結果,但是下面還輸...

組合語言壓棧出棧延時問題,組合語言中的棧,壓棧,出棧是什麼意思

壓棧並不改變r2的值,外層迴圈中djnz r2一次,r2就減1,而push 則就是保持這個值在delay3實現延時。組合語言中的棧,壓棧,出棧是什麼意思 就像乙個裝桌球的盒子,只有乙個口能開啟 裡面乙個球不放,就是空棧 往裡面放乙個球,就是壓棧 從裡邊拿乙個球,就是出棧 都放滿了,就是滿棧,再放就會...