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

2022-11-18 13:05:17 字數 6622 閱讀 2773

1樓:匿名使用者

mov ah,1

int 21h

cmp al,'a'

jb l1

cmp al,'z'+1

jnb l1

and al,5fh

l1:mov dl,al

mov ah,2

int 21h

2樓:匿名使用者

#include

main()

{ char a[100];

char *p=a;

scanf("%s",a);

while(*p!='\0')

{ if(*p>='a' && *p<='z') *p=*p-32;

printf("%c",*p);

p++;

組合語言程式設計題

3樓:沙崖思

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

第一題:先定義一個記憶體緩衝區,然後用dos功能呼叫

從鍵盤輸入字串到緩衝區。然後將緩衝區資料分類,

dl存小寫字母個數,dh存數字個數,bh存其它字元個數。

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

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

db 100 dup(?)

mov ax, data

mov ds, ax

mov dx, offset buff

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

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

int 21h

mov bx, dx

mov cl, [bx+1]

lea si, offset buff

add si, 2

xor bx, bx

xor dx, dx

begin:mov ax, [si]

cmp ax, 'z'

ja three

cmp ax, 'a'

jl two

inc dl

jmp next

two: cmp ax, '9'

ja three

cmp ax, '0'

jl three

inc dh

jmp next

three:inc bh

next: inc si

loop begin

mov ah, 2

int 21h

mov dl, 20h

int 21h

mov dl, dh

int 21h

mov dl, 20h

int 21h

mov dl, bh

int 21h

第二題:先定義緩衝區存放結果,二進位制轉換為八進位制

時,三位二進位制為一位八進位制,16位共6位;轉16進位制

時,4位二進位制為一位16進位制,共4位。顯示要用ascii碼,

所以每一位佔一個位元組,共10個位元組。所以至少定義10

位元組的緩衝區。

buff db 20 dup(?) ;定義20位元組緩衝區

mov ax, data ;將資料裝入ax

mov ds, ax

lea di offset buff ;di指向緩衝區首位元組

xor bx, bx ;bx清零

mov cl, 9 ;設定迴圈次序

rol ax, 1 ;八進位制首位轉換

rcl bx, 1

jmp next

begin: xor bx, bx ;八進位制其它5位轉換

push cl

mov cl, 3

one: rol ax, 1

rcl bx, 1

loop one

pop cl

dec cl

jmp next

begin2:xor bx, bx ;16進位制轉換

push cl

mov cl, 4

two: rol ax, 1

rcl bx, 1

loop two

pop cl

dec cl

cmp cl, 0

je next2

next: and bx, 30h ;轉ascii碼

mov [di],bx ;儲存

inc di

cmp cl, 4

ja begin

jl begin2

mov [di],20h

inc di

jmp begin2

next2:mov dx,offset buff ;dx指向緩衝區首位元組

mov ah,9 ;9號功能呼叫

int 21h

4樓:匿名使用者

這個我們以前做過,但找不到了,早2年寫的

組合語言程式設計題

5樓:湯旺河邊

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

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 ;編譯到此結束

6樓:匿名使用者

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

;將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 ;暫存器相對定址

7樓:

;引數;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

8樓:做而論道

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

9樓:

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

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

10樓:隆婷莫山雁

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

第一題:先定義一個記憶體緩衝區,然後用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

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

教你一個小招,用vc6.0編好一個c的程式,然後alt 8可以檢視彙編程式 1 include 2 void main void 3 00401055 jmp main 21h 00401031 10 for i 0 i 4 i 00401057 mov dword ptr ebp 14h 0 00...

組合語言題目,組合語言題目,求詳解

a2,b2,是a的平方,還是a 2?兩個數相乘,就要考慮溢位問題。y是32位?還是16位?需不需要考慮溢位?dseg segment org d 開始地址d a dw b dw c dw dseg ends assume cs cseg,ds dsegcseg segment start mov a...

選擇題 組合語言是一種程式設計語言

組合語言是一種 依賴於計算機的低階 程式設計語言 組合語言是一種什麼程式設計語言?組合語言是用於電子計算機,微處理器,微控制器或其他可程式設計裝置的低階語言,e68a8462616964757a686964616f31333431366431也稱為符號語言。在組合語言中,助記符用於替換機器指令的操作...