組合語言程式設計題,組合語言程式設計題目,線上等答案!!!!急!!!!!!!!!!

時間 2022-08-14 03:12:01

1樓:湯旺河邊

; 本程式通過編譯,執行正確

data segment

org 200h

data_bcd db 58h ;兩位bcd碼db ?,? ;儲存轉換後的ascii碼data ends

code segment

assume cs:code,ds:datastart: mov ax,datamov ds,ax ;資料段段位址

mov al,data_bcd ;取兩位bcd碼xor ah,ah ;累加器高位位元組清零mov cx,4 ;邏輯左移、右移次數

shl ax,cl ;ax左移4位,把兩位bcd碼的高4位移到累加器高位元組

shr al,cl ;把兩位bcd碼的低4位移回原位置,實現兩位bcd碼的拆分

or ax,3030h ;高低位分別加上30h,實現兩位bcd碼到ascii碼的轉換

mov data_bcd[1],ah ;儲存高位ascii碼mov data_bcd[2],al ;儲存低位ascii碼exit_proc: mov ah,4ch ;結束程式int 21h

code ends

end start ;編譯到此結束

2樓:匿名使用者

;我是初學者,有誤的地方請各位指教

;將0200h位置的位元組儲存單元直接定址傳送到al位置;al傳送到ah暫存

and al,0fh ;清0高4位,低4位不變or al,30h ;al中的高4位變成3h,低4位不變mov bx,0201h ;假設(ds) = 0000hmov [bx],al ;暫存器間接定址,儲存到目的位置mov al,ah ;恢復

shr al,4 ;邏輯右移4位

and al,0fh ;

or al,30h ;同上,非壓縮bcd數字,轉成ascii字元mov [bx+1],al ;暫存器相對定址

3樓:

;引數;si:壓縮bcd碼儲存單元的偏移位址;di:儲存ascii碼的起始位址

bcd2ac proc

push ax

mov al,ds:[si] ;取出壓縮bcd碼mov ah,al ;複製乙份

and ax,0f00fh ;分別遮蔽高、低4位shr ah,4 ;產生原壓縮bcd碼高4位的ascii碼mov ds:[di],ax ;儲存結果

pop ax

ret ;返回

bcd2ac endp

4樓:做而論道

mov dptr, @0200h

movx a, @dptr

inc dptr

mov b, a

anl a, #0fh

orl a, #30h

movx @dptr,a

inc dptr

mov a, b

swap a

anl a, #0fh

orl a, #30h

movx @dptr,a

5樓:

我寫的有點長,經驗證,執行無誤。

**貼在:任意兩個10位以內十六進製制數求和

6樓:隆婷莫山雁

我只能給你寫主程式,其它的自己加吧。

第一題:先定義乙個記憶體緩衝區,然後用dos功能呼叫從鍵盤輸入字串到緩衝區。然後將緩衝區資料分類,dl存小寫字母個數,dh存數字個數,bh存其它字元個數。

buff

db100

;定義100位元組緩衝區db?

;系統填入實際輸入位元組數

db100

dup(?)

movax,

data

movds,

axmov

dx,offset

buff

movah,

0ah;10號功能呼叫,從鍵盤

;輸入字元,回車鍵結束。

int21h

movbx,

dxmov

cl,[bx+1]

leasi,

offset

buff

addsi,

2xor

bx,bx

xordx,

dxbegin:mov

ax,[si]

cmpax,

'z'ja

three

cmpax,

'a'jl

twoinc

dljmp

next

two:

cmpax,

'9'ja

three

cmpax,

'0'jl

three

incdh

jmpnext

three:inc

bhnext:

incsi

loop

begin

movah,

2int

21hmov

dl,20h

int21h

movdl,

dhint

21hmov

dl,20h

int21h

movdl,

bhint

21h第二題:先定義緩衝區存放結果,二進位制轉換為八進位制時,三位二進位制為一位八進位制,16位共6位;轉16進製制時,4位二進位制為一位16進製制,共4位。顯示要用ascii碼,所以每一位佔乙個位元組,共10個位元組。

所以至少定義10位元組的緩衝區。

buff

db20

dup(?)

;定義20位元組緩衝區

movax,

data

;將資料裝入ax

movds,

axlea

dioffset

buff

;di指向緩衝區首位元組

xorbx,

bx;bx清零

movcl,

9;設定迴圈次序

rolax,

1;八進位制首位轉換

rclbx,

1jmp

next

begin:

xorbx,

bx;八進位制其它5位轉換

push

clmov

cl,3

one:

rolax,

1rcl

bx,1

loop

onepop

cldec

cljmp

next

begin2:xor

bx,bx

;16進製制轉換

push

clmov

cl,4

two:

rolax,

1rcl

bx,1

loop

twopop

cldec

clcmp

cl,0

jenext2

next:

andbx,

30h;轉ascii碼

mov[di],bx

;儲存inc

dicmp

cl,4

jabegin

jlbegin2

mov[di],20h

incdi

jmpbegin2

next2:mov

dx,offset

buff

;dx指向緩衝區首位元組

movah,9

;9號功能呼叫

int21h

7樓:清風or朗月

先將bcd碼轉換為對應的16進製制(bcd碼的調整),再加上30就是ascii碼了

至於設計,知道這了,難道還不知道怎麼設計嗎?

組合語言程式設計題目,**等答案!!!!急!!!!!!!!!!

8樓:糊大塗

你妹啊 好好讀書 小飛哥很生氣的

組合語言程式設計複習題

9樓:

11. 沒有乙個對的,應該是xor ah, ah; mul bx,你抄錯題了吧。

我估計d選項裡的兩個mul bx,其中有乙個是c選項裡的,如果是這樣的話就選c。

12. 跟上面一樣。我估計你又抄錯題了,d選項裡的兩個imul bx其中乙個應該是c選項裡的。如果 是這樣的話就選d。cbw; imul bx

13. a

14. d

15. d

10樓:匿名使用者

唉,x86的彙編差不多都忘記了。

8086組合語言程式設計,8086組合語言程式設計

datas segment data dw 102,90,67,89,98,125numb1 dw 0 numb2 dw 0 numb3 dw datas ends codes segment assume cs codes,ds datasstart mov ax,datas mov ds,ax ...

組合語言程式設計問題

先給你單位元組相乘參考一下 假設兩個乘數分放在片內ram的60h和61h單元,結果放入62h和63h,且62h存放積的高8位 mov 63h,00h 將16位乘積單元清0mov 62h,00h clr a loop push acc 保護累加次數計數器mov a,60h 取出乙個乘數 add a,6...

彙編程式設計,組合語言程式設計中使用哪種軟體工具

那個是那c寫的 再多點分 寫 基本思路是線判斷 輸入字元的asc碼是否在a z,a z之間不是則不變 然後判斷是大寫還是小寫 屬於a z還是a z 大寫的話asc加20,小寫的話減20 就完成了大小寫的轉化了 輸入用10號呼叫比較方便 組合語言的乙個簡單程式設計 200 從你的問題來看,你還沒有把軟...

微控制器的用組合語言程式設計,微控制器的用組合語言程式設計

k1 equ p1.0 k2 equ p1.1 k3 equ p1.2 org 0000h ljmp main org 000bh ljmp t0isr org 0030h main mov tmod,11h mov th0,high 65536 50000 mov tl0,low 65536 50...

組合語言題求解

dseg segment buffer1 db 12h,34h,56h,78h 4個位元組數 buffer2 db 12h,34h,56h,78h 4個位元組數 count equ buffer2flag db y dseg ends sseg segment stack db 80h dup 0 ...