給你個五位數相加的程式吧 如果有具體要求請做相應修改
data segment
in_msg1 db "please input the first number(5 bit) :","$" ;設定輸入提示資訊1
in_dat1 db 6,0,6 dup(0) ;設定輸入緩衝區1
in_msg2 db 0ah,0dh,"please input the second number(5 bit):","$" ;設定輸入提示資訊2
in_dat2 db 6,0,6 dup(0) ;設定輸入緩衝區2
out_msg db 0ah,0dh,"the sum is:",20h ;設定輸出提示資訊
out_dat db 6 dup(0),"$" ;設定輸出緩衝區ata ends
code segment
assume cs:code,ds:data
start:mov ax,data
mov ds,ax
mov dx,offset in_msg1
mov ah,9
int 21h ;輸出提示資訊
mov dx,offset in_dat1
mov ah,0ah
int 21h ;輸入第一個加數
mov dx,offset in_msg2
int 21h ;輸出提示資訊,提示輸入第2個數
mov dx,offset in_dat2
int 21h ;輸入第二個加數
mov si,offset in_dat1 ;設定第一加數的指標
mov di,offset in_dat2 ;設定第二加數的指標
mov bx,offset out_dat ;設定結果的指標
add si,6 ;將指標指向第一加數的個位數(最後一個數)
add di,6 ;將指標指向第二加數的個位數(最後一個數)
add bx,5 ;將指標指向結果的個位數(最後一個數)
clc
mov ah,0
mov cx,5 ;清除進位標誌,並設定迴圈次數
lop1: mov al,[si]
adc al,[di] ;加數一和加數二相加,
aaa ;結果進行分離BCD加法調整
mov [bx],al ;相加結果送結果儲存區
dec si
dec di
dec bx ;三個指標上移,指向前一位數。
loop lop1
adc byte ptr [bx],0
mov cx,6
mov bx,offset out_dat
lop2: mov al,[bx]
and al,0fh
add al,30h ;得到的結果進行ASCII碼轉換。
mov [bx],al
inc bx
loop lop2
mov dx,offset out_msg ;將提示資訊及運算結果輸出
int 21h
mov ah,4ch
code ends
end start
給你個五位數相加的程式吧 如果有具體要求請做相應修改
data segment
in_msg1 db "please input the first number(5 bit) :","$" ;設定輸入提示資訊1
in_dat1 db 6,0,6 dup(0) ;設定輸入緩衝區1
in_msg2 db 0ah,0dh,"please input the second number(5 bit):","$" ;設定輸入提示資訊2
in_dat2 db 6,0,6 dup(0) ;設定輸入緩衝區2
out_msg db 0ah,0dh,"the sum is:",20h ;設定輸出提示資訊
out_dat db 6 dup(0),"$" ;設定輸出緩衝區ata ends
code segment
assume cs:code,ds:data
start:mov ax,data
mov ds,ax
mov dx,offset in_msg1
mov ah,9
int 21h ;輸出提示資訊
mov dx,offset in_dat1
mov ah,0ah
int 21h ;輸入第一個加數
mov dx,offset in_msg2
mov ah,9
int 21h ;輸出提示資訊,提示輸入第2個數
mov dx,offset in_dat2
mov ah,0ah
int 21h ;輸入第二個加數
mov si,offset in_dat1 ;設定第一加數的指標
mov di,offset in_dat2 ;設定第二加數的指標
mov bx,offset out_dat ;設定結果的指標
add si,6 ;將指標指向第一加數的個位數(最後一個數)
add di,6 ;將指標指向第二加數的個位數(最後一個數)
add bx,5 ;將指標指向結果的個位數(最後一個數)
clc
mov ah,0
mov cx,5 ;清除進位標誌,並設定迴圈次數
lop1: mov al,[si]
adc al,[di] ;加數一和加數二相加,
aaa ;結果進行分離BCD加法調整
mov [bx],al ;相加結果送結果儲存區
dec si
dec di
dec bx ;三個指標上移,指向前一位數。
loop lop1
adc byte ptr [bx],0
mov cx,6
mov bx,offset out_dat
lop2: mov al,[bx]
and al,0fh
add al,30h ;得到的結果進行ASCII碼轉換。
mov [bx],al
inc bx
loop lop2
mov dx,offset out_msg ;將提示資訊及運算結果輸出
mov ah,9
int 21h
mov ah,4ch
int 21h
code ends
end start