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

時間 2021-05-05 18:41:22

1樓:蜜蜂小玉米

assume cs:code

assume ds:data

data segment

db "i love you.$"

data ends

code segment

start:

mov ax,data

mov ds,ax

mov bx,0

s0:;check $

mov al,ds:[bx]

cmp al,36

je s13

cmp al,64

ja s1

jmp s8

s1:cmp al,91

jb s2

jmp s8

s2:;upcase to lowcaseadd al,32

mov ds:[bx],al

jmp se

s8:cmp al,96

ja s10

jmp se

s10:

cmp al,123

jb s11

jmp se

s11:

;lowcase to upcase

sub al,32

mov ds:[bx],al

jmp se

se:;next char

inc bx

jmp s0

s13:

;print

mov dx,0

mov ah,9

int 21h

;good exit

mov ax,4c00h

int 21h

code ends

end start

不會弄聲音,勉強一點吧

組合語言問題 5

2樓:山水阿銳

微控制器中 沒有相等就跳轉的指令

其實,cjne實際上也實現了相等跳轉的功能的:

cjne a,#data,rel ;如果不等跳到rel指令a ;如果等就執行下一條指令 指令a...rel:指令b

...假如有一條相等就跳轉的指令cje(實際上沒有)cje a,#data,rel ;相等跳到rel指令b ;不等跳到指令b

...rel:指令a

...上面兩個功能完全一樣,所以沒必要加一條相等就跳轉的指令cje 。

相等跳轉可以用:

1:cjne

2:一樓的 兩數相減,為0則相等。但cmp比較指令是微機的微控制器沒有此指令,用subb的話原數被改變,要先保護。

3:兩數異或

xrl a,#data

jz rel ;結果為0跳到rel

用2/3的話注意:要用到a

jz rel ; a中的數為0,跳轉到rel.

3樓:做而論道

三個無符號單位元組數x,y,z...

這些數,事先,也應該存在某幾個儲存單元中。

4樓:智翊端秋穎

這幾道題目網上就有答案和解析

,順序不一樣

一、能夠將ax中的內容送到記憶體0000:0200h處的指令序列是3。

1、mov

ds,0

movbx,200h

mov[bx],ax

2、mov

ax,200h

movds,ax

movbx,0

mov[bx],ax

3、mov

ax,20h

movds,ax

movbx,0

mov[bx],ax

4、mov

bx,20h

movds,bx

movbx,0

mov[bx],ax

解析:答案1明顯錯誤了,不能將立即數送入段暫存器;答案2也不對,將200送入ax,mov

ax,ds明顯將此時的地址設定為0200:0000,實體地址為2000,和0000:0200的的實體地址不一致;答案3因為題目要求將ax值送入記憶體,而它一開始就改變了ax的值,所以不對;答案4正確,用bx來暫存資料

二、下列說法正確的是:4。

1、資料段和**段的段地址不能相同。

2、指令mov

ax,bx執行完後bx中的值為零。

3、一個棧段的大小可以設為任意值。

4、當sp=0時,再次壓棧將發生棧頂超界,但壓棧操作有效。

解析:答案1錯誤,因為所謂的段,不過是人為安排的,對於計算機來說,指令和資料沒有任何區別,地址可以相同;答案2錯誤,mov指令,是不情況原暫存器裡面的值的;答案3也不對,棧段須有一個段地址,段地址不能變,只有偏移地址可以變,這個大小是有範圍的;答案4正確,sp=0時,壓榨,sp=sp-2,產生了超界

三、下列指令的書寫正確的是:3。

1、push

al2、

movcs:[0],ds:[10]

3、pop

si4、

movds:[0],2

解析:答案1錯誤,壓堆指令一次性操作一個字;答案2錯誤,記憶體空間之間不能互相傳送;答案3正確;答案4錯誤,不能將立即數送入記憶體空間

四、能夠只將al中的內容壓入棧的指令序列是3。

1、push

al2、

popax

3、mov

ah,0

push

ax4、

movax,0

push

ax解析:答案1錯誤,push操作單位是字;答案2錯誤,題目要求的是入堆;答案3正確,先將ah清零,然後壓入ax可以達到目的;答案4錯誤,將ax清空,然後壓入,等於壓入的是0

五、若將以1000h為段地址的整個段空間當作棧使用,那麼暫存器sp的初始值最合理的設定是1。

1、0000h

2、0001h

3、ffffh

4、fffeh

解析:以1000h為段地址的整個段空間,偏移地址為0-

ffffh,當棧中只有1個字時,偏移地址是fffeh,當棧為空時,sp=sp+2=ffff+2=0000,所以選擇1

六、在8086cpu系統中一個棧段的容量最大為3。

1、1kb

2、512kb

3、64kb

4、32gb

解析:由於8086cpu暫存器只有16位,而sp等暫存器最大變化範圍就只能為0~ffffh,即64kb了…不僅僅是棧段,所有的8086cpu裡面的段都不能超越64kb

組合語言程式設計問題編寫組合語言程式。能每隔10秒顯示數字分別為

org 0000h 數碼管共陰 ajmp main org 000bh t0ms equ not 50000 100 ms 晶振 6.000 mhz pjsbz equ 20h pjsbzy equ 21h pst0 mov tl0,low t0ms t0 中斷 mov th0,high t0ms ...

組合語言通用性問題,組合語言有什麼特點

當然不是這臺電腦和另外一臺的區別 而是各種不同平臺之間的通用性。比如unix 和 windows等平臺之間 組合語言與硬體打交道,當然首先要有對應得cpu支援了,其他的就沒有別的了。cpu架構一樣,這個語言就能在上面編譯 機器 是指電腦,但不同體系的電腦 體系是不同的,就是cpu指令不同。比如int...

關於組合語言的問題,關於組合語言的一個問題

求補操作即是把運算元按位求反後末位加1,即ffffh opr 1 0 opr。也就是說,對一個運算元求補,相當於用0減去此運算元。參加求補運算的運算元當然是有符號數。對於cf而言,只有對0求補時,cf 0,其餘情況都使cf 1 有借位 0減去負數應該是正數,但當運算元的值是80h 128 或8000...