编不断,编还乱,越编就越乱!

moyue_wl 2008-06-17 10:00:13
题目:随机输入 3个加数,再随机输入另3个被加数,然后把结果显示出来
就如,当输入123 之后 下一行 输入 234 然后 再下一行 显示加得的结果 357

.MODEL SMALL
.STACK 100H
.CODE

START: MOV AH,1
INT 21H
MOV CH,AL
INT 21H
MOV CH,BL
INT 21H

;;;;;;;;;;;;;;;;;;;;;;;

MOV AH,4CH
INT 21H
END START
崩溃哦~~~希望在逻辑上有高人指点,我现在是思路都理不清。这题必须完成!
...全文
129 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
moyue_wl 2008-06-18
  • 打赏
  • 举报
回复
非常感谢一楼大侠,但我不是很清楚, 首先不考虑逐位(十进制位)带进位相加,就0到4吧,就不用考虑进位了。你可以再解释清楚一点吗? AAA指令做BCD码调整,结果各位加上30H转成ASCII码是必需的了,主要是3个加数怎么加上3个被加数呢?是对应相加的。然后结果显示出来。程序是怎样呢?
BAYNPU 2008-06-18
  • 打赏
  • 举报
回复

Data segment
buf1 db 4,?,4 dup(?)
buf2 db 4,?,4 dup(?)
num1 dw 0
num2 dw 0
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
mov dx,offset buf1
mov ah,0ah
int 21h
call convert
mov ax,bx
mov num1,ax
call display
mov dx,offset buf2
mov ah,0ah
int 21h
call convert
mov ax,bx
mov num2,ax
call display
sub bl,bl
mov bx,num1
add bx,num2
mov ax,bx
call shift
mov ah,4ch
int 21h
convert proc
mov cx,0
mov ax,0
mov bx,0
mov si,dx
add si,2
mov cl,byte ptr[si][-1]
mov dl,10
return:
dec cl
mov al,[si]
sub al,30h
xchg ax, bx
; jcxz adding
mul dl
adding:
add bx,ax
jcxz l_end
inc si
jmp return
l_end:
ret
convert endp
display proc
mov dl,13
mov ah,2
int 21h
mov dl,10
mov ah,2
int 21h
ret
display endp
shift proc
mov bx,10
push bx
dis:
cmp ax,0
jz dis0
mov dx,0
div bx
add dl,30h
push dx
jmp dis
dis0:
pop ax
cmp ax,10
je stop
mov dl,al
mov ah,2
int 21h
jmp dis0
stop:
ret
shift endp
code ends
end start
moyue_wl 2008-06-18
  • 打赏
  • 举报
回复
谢谢了!我看了不是很明白!好长哦~~。 display proc 错误了
mov si,dx
add si,2
mov cl,byte ptr[si][-1]
mov dl,10
return:
dec cl
mov al,[si]
sub al,30h
xchg ax, bx
; jcxz adding
mul dl
看不懂
mov cl,byte ptr[si][-1]是什么
cnzdgs 2008-06-17
  • 打赏
  • 举报
回复
定义三个BYTE型数组分别储存两个加数和结果。逐位(十进制位)带进位相加,并用AAA指令做BCD码调整,结果各位加上30H转成ASCII码。

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧