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也稱為符號語言。在組合語言中,助記符用於替換機器指令的操作...