答案:具体要求!
是要求输入还是怎么的啊??
data segment
data ends
code segment
assume cs:code,da:data
start:
mov ax,data
mov ds,ax
mov bx,0
mov ah,1
int 21h ;输入一个一位数
mov ah,0
mov bl,al
sub bx,30h
mov ah,1
int 21h ;再输入一个一位数
sub al,30h
add bl,al; 结果放入bx
mov ax,004ch
int 21h
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 MOV AX,D1
ADD AX,D2
MOV BX,AX
(其中D1、D2是那两个数)
上一个:用汇编语言写以下的要求:
下一个:汇编语言问题,帮帮忙。