當前位置:編程學習大全網 - 源碼下載 - ARM中匯編指令的問題

ARM中匯編指令的問題

ARM中匯編指令的問題

對,沒錯,loop就和C語言裏面goto的那個標號是壹樣的,雖然在編寫程序時只是壹個標號,但是其深層意思,也就是其編譯後的結果其實是壹個地址,比如0x2000_1010。

妳的上述程序解釋如下:

ldrb ch , [src] , #1 ;以src中的值為地址,從該地址處取1字節數據到ch,再將src加1

strb ch , [dest] , #1 ;以dest中值為地址,將ch中1字節數存儲在此處,再將dest加1

cmp ch , #0 ;比較ch和0的大小

bne loop ;如果ch不為0(註意這個"ne"),則跳至loop執行

很明顯,這是壹個字符串拷貝程序,從src地址處拿來,壹字節壹字節放到dest去,然後壹邊進行判斷,看是否已拷貝到最後的結尾字符'0',如果沒到,那麽跳到loop處繼續循環執行,如果已到,則繼續往下執行。雖然妳程序裏沒寫loop標號位置,但應該是在ldrb指令前面,以達到循環的效果。

vc匯編指令的問題、。。。

jnz 這裏jnz怎麽跳 到 sub esp ,0x0c 這裏

jnz lable1

sub esp,0x0c這裏來 要怎麽寫

lable1:

sub esp,0x0c

幾個匯編指令的問題

1,MOV AL,BX X

2,MOV AL,CL Y

3.INC [BX] X 屬性不明

4.MOV 5,AL X 立即數,不能當做目的地

5.MOV [BX],[SI] X 兩個操作數,不能都是存儲器單元

6.MOV BL,F5H X 0F5H

關於OUT匯編指令的問題

OUT 03F8H,AL(這個指令有錯誤為什麽?)

這是因為在OUT指令中直接用數字尋址,端口號只能是0到FFH,而上面這條

指令應改為

mov dx,03f8h ;只能放在DX,這是規定

out dx,al

-----------------------------------------

OUT 0FAH,AL(它是指從AL中輸出壹個字節到0FAH的壹個端口嗎?)

是的

---------------------------------------

OUT 0FAH,AX(AX是壹個字為什麽也能輸出到0FAH所指的8位端口中呢?)

這條指令將AL中的數據放在0FAH,將AH中的數據放在0FBH

這四條指令主要就是說明這個OUT指令的不同用法

學這些指令不用硬記每條指令的各種用法,只要根據規定的尋址方式

記住相應指令所要用到的特定寄存器就行了

關於MOV匯編指令的問題

mov 0150[bx],ch(寫法有問題)=mov byte ptr 0150[bx],ch

;0150[bx]=ds:[bx+0150](1個字節),而ch也為1個字節8位

;即把寄存器cx中的高8位(ch)內容傳送給內存ds:[bx+0150]的空間中

ADC AL,[DI];帶進位的加法指令

;[di]=ds:[di]=(2050A)=37H

;al=ax的低8位=94H

;結果37H+94H=CBH 沒進位CF=0

daa指令沒學

單片機匯編指令的問題

這兩條指令肯定是有區別的,區別就在於比較數20D,

CJNE A,#20D,RETURN,這是累加器與20D,即十進數20相比較,這個數稱為立即數。

而CJNE A,20D,RETURN,並不是與立即數20相比較,而是與地址是20的內部RAM單元內的數相比較,即這個20並不是比較數,而是RAM的單元地址,比較數在RAM中,具體是什麽數,不知道,如果在這條指令之前給(20)單元內送數了,那比較數就是知道的。

匯編指令的簡單問題

可以在DEBUG中編譯,但是最後在MASM下編譯,然後在DEBUG中修改調試,那樣更容易在MASM編譯時檢查到不正確的地方!

壹道關於匯編指令的問題

A.ADD [BX],[2000H] ;不允許兩個操作數同為存儲單元

B.ADC [SI][DI],AX ;只能使用壹個變址寄存器

C.SUB [2000H],[20H] ;不允許兩個操作數同為存儲單元

D.SBB AX,BX ;正確

反匯編指令與匯編指令的區別?!

妳說的是類似下面這樣的吧?

0B4A:0100 5B POP BX

0B4A:0101 91 XCHG CX,AX

0B4A:0102 26 ES:

0B4A:0103 8B1D MOV BX,[DI]

0B4A:0105 8D365F91 LEA SI,[915F]

0B4A:0109 2E CS:

0B4A:010A 803C2F CMP BYTE PTR [SI],2F

0B4A:010D 7436 JZ 0145

0101A55F > $ 8BFF MOV EDI,EDI

0101A561 . 55 PUSH EBP

0101A562 . 8BEC MOV EBP,ESP

0101A564 . 83EC 44 SUB ESP,44

0101A567 . 56 PUSH ESI

0101A568 . 57 PUSH EDI

0101A569 . 6A 10 PUSH 10

=============================================

前面的十六進制數表示的是指令的機器碼,沒有必要刻意的去記憶這些機器碼的.機器碼非常不好記憶和閱讀的,匯編語言的出現就是為了解決機器碼難記憶,難識別的問題的

=============================================

有的時候是需要看的,不然沒用的話顯示它有什麽用啊,有壹句名言說的不是很好麽:存在即合理

不過初學者壹般不用看,但初學者研究研究機器碼也不是件壞事

匯編指令的壹個問題

這個要怎麽說呢? 因為程序最終是要交由cpu來處理。 而匯編指令就是要告訴CPU該幹什麽。這就是指令,妳從漢語理解指令,都因該知曉壹二。 比如 mov AX,51H. 這就是壹條匯編指令。 它的目的是告訴CPU 將51H送到AX寄存器。

至於妳問的它和程序有什麽關系。 妳想下妳寫程序,是為了幹什麽呢? 不就是要CPU執行壹段操作?程序最總還是要編譯成壹條條指令,交由CPU。指令是對於CPU而言,程序是個上層概念。

上面2段說的雖然很抽象,但我想大致說清楚了。 如悟性高,應該懂了, 再看不懂也沒辦法。 因為學習計算機程序設計上,妳不可能不學著理解抽象思維。 這就是人之聰明否,直接影響學習進度。

  • 上一篇:福建快活林信息科技有限公司怎麽樣?
  • 下一篇:聊天源程序
  • copyright 2024編程學習大全網