📄 xiao.asm
字号:
data segment
num dw 10
string1 db 'please input a tens digit$'
string2 db 'please input a tens again$'
string3 db 'the result is$'
s db 30 dup(?)
data ends
;*********************
;初始化部分
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
lea dx,string1;输出提示语句
mov ah,9h
int 21h
mov cx,num
;---------------------------------------------
;输入部分
go_on1:
mov ah,1h
int 21h
sub al,30h
cbw
push ax;将数据的各位数字进栈
loop go_on1
mov bp,sp;记录此时的栈顶
mov dl,13;回车
mov ah,2
int 21h
mov dl,10;换行
mov ah,2
int 21h
lea dx,string2;输出提示语句
mov ah,9h
int 21h
mov cx,num
go_on2:;再次输入一个十位长的数据
mov ah,1h
int 21h
sub al,30h
cbw
push ax
loop go_on2
;-------------------------------------------
;实现相加
lea si,s
mov cx,num
mov ax,0
addition:
add ax,[bp]
pop bx
add ax,bx;对应位的数字相加,并加上来自‘低一位的进位’
mov bl,10
div bl;对应位相加结果ax,除于10
mov [si],ah;余数放入数据段,待输出
cbw
inc si
add bp,2
loop addition
mov [si],al;将相邻低一位的‘进位’放入数据段中
mov cx,num
inc cx;加上最高位的‘进位’,共输出(num+1)11位
mov dl,13;回车
mov ah,2h
int 21h
mov dl,10;转行
mov ah,2h
int 21h
;-------------------------------------------
;输出部分
lea dx,string3;输出提示语句
mov ah,9h
int 21h
output:
mov bl,[si]
add bl,30h
mov dl,bl
mov ah,2h
int 21h
dec si;从高位向低位输入
loop output
mov ah,4ch
int 21h
code ends
end start
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -