求組合語言中,寫一段程式,把DX和AX中的雙字左移四位,並要帶輸出

2022-03-15 06:06:34 字數 3306 閱讀 3225

1樓:周文華

datas segment

shif dd 12345678h

datas ends

code segment

assume cs:code,ds:datasstart:

mov ax,datas

mov ds,ax

mov dx,word ptr [shif+2]mov ax,word ptr [shif]mov cl,4

shl dx,cl

mov bl,ah

shl ax,cl

shr bl,cl

or dl,bl

mov bl,dh

push ax

push dx

mov dl,bl

mov cl,4

shr dl,cl

cmp dl,9

jl l1

add dl,7h

l1:add dl,30h

mov ah,2

int 21h

mov dl,bl

and dl,0fh

cmp dl,9

jl l2

add dl,7h

l2:add dl,30h

int 21h

pop dx

pop ax

mov bl,dl

push ax

mov cl,4

mov bl,dl

shr dl,cl

cmp dl,9

jl l3

add dl,7h

l3:add dl,30h

mov ah,2

int 21h

mov dl,bl

and dl,0fh

cmp dl,9

jl l4

add dl,7h

l4:add dl,30h

int 21h

pop ax

mov bl,ah

push ax

mov cl,4

mov dl,bl

shr dl,cl

cmp dl,9

jl l5

add dl,7h

l5:add dl,30h

mov ah,2

int 21h

mov dl,bl

and dl,0fh

cmp dl,9

jl l6

add dl,7h

l6:add dl,30h

mov ah,2

int 21h

pop ax

mov bl,al

mov dl,al

mov cl,4

shr dl,cl

cmp dl,9

jl l7

add dl,7h

l7:add dl,30h

mov ah,2

int 21h

mov dl,bl

and dl,0fh

cmp dl,9

jl l8

add dl,7h

l8:add dl,30h

int 21h

mov ah,4ch

int 21h

code ends

end start

2樓:小寶的女人

腮腮,這個問題好難,我不會啊!!!!!!

題目:試用arm組合語言編寫把dx,ax暫存器中的雙字右移四位的彙編程式。

3樓:揉啊揉

最後一步應該是 or ah,bl 才對吧。然後我覺得倒數第2步寫成:

mov cl,(8-4)

shl bl,cl

會好理解一些

怎樣用組合語言實現將(dx)(ax)中的雙字邏輯左移一位

4樓:手機使用者

程式通過編譯,執行正確

code segment

assume cs:code,ds:code,es:code; 把32位邏數 3f65c9232h 邏輯左移2位 結果存在dx;ax中

start: mov dx,3f65hmov ax,c923h

shl ax,1

rcl dx,1

shl ax,1

rcl dx,1

exit_proc: mov ah,4ch ;結束程式int 21h

code ends

end start ;編譯到此結束

5樓:做而論道

向左移位,也可以乘以2、乘以4。。。

七條移位指令,花樣較多,理解起來,遠遠不如加法指令簡單。

左移一位,使用加法指令,實現乘以2,就是最簡單的。

add ax, ax

adc dx, dx完。

6樓:匿名使用者

邏輯左移=算數左移,右邊統一添0

邏輯右移,左邊統一添0

算數右移,左邊新增的數和符號有關

e.g:1010101010,其中位是新增的數字邏輯左移一位:010101010[0]

算數左移一位:010101010[0]

邏輯右移一位:[0]101010101

算數右移一位:[1]101010101

所以對於雙字就是

shl ax,1最高位移入cf

rcl dx,1帶進位邏輯左移cf移入dx最低位

彙編怎樣編寫將dx,ax中的雙字右移4位的指令序列

7樓:塔塔妹

mov cl, 4 ;設定迴圈次數為4

shr ax, cl ;實現將ax邏輯右移mov bl, dl ;將dl的低4位暫存在bl中shr dx, cl ;實現將dx邏輯右移shl bl, cl ;將bl邏輯左移

or ah, bl ;將bl或上ah ;也就是使dl的低4位或上ah高4位,從而實現了dx、ax中的雙字右移四位。

8樓:匿名使用者

1。 ax右移4位

2。 將dx低4位想個方法拷貝到ax的高4位上3。 dx右移4位

沒啥難的啊。

求組合語言期末複習題

組合語言,把(dx,ax)中的雙精度數右移n位

9樓:永恆

mov  cx,n

lp:shr dx,1

rcr ax,1

loop lp

組合語言中的問題求高手解,組合語言中的一個問題求高手解

mov ax,a cmp ax,b bnz l 執行else mov bx,0 mov d,ax jmp ll l ll if的下一條語句復 bnz 標號制 若上一條指令執行的結果非零,就跳到標號執行他是判斷flag暫存器的zf位,若結果不為0,則 跳轉到標號處 組合語言程式的一道題。求高手解答 你...

一段C語言程式解讀,求完整,求一段C語言程式的完成功能解釋

這題目我見過,不過貼上時好像被 吃掉 了 號,照此程式的話會死迴圈的。中間部分應該回是 void func1 int i void func2 int i 程式的分析如下 從main 開始執行,呼叫fun1 0 先輸出h,然後i變為2,再呼叫fun2 2 在fun2中,輸出l,然後i變為4,再呼叫f...

組合語言中延時子程式的問題,我想請教一下有關組合語言延時子程式的問題下面的子程式有點看不懂,請大家幫忙解釋一下,謝謝

8086組合語言利用時鐘中斷精確些的延時的精度只能達到1 18.2秒。比這個還要高的要求只能利版用指令執行的時鐘權週期數來設計了,這樣編制的延時程式和cpu的頻率緊密相關,要編制通用些的,只能在程式中先進行檢測,依據檢測結果自動調整延時程式中的引數。delay mov r2,3 djnz r2,no...