加:addition
减:subtraction
乘:multiplication
除:division
子程序定义
子程序名 proc [NEAR ( 或 FAR )]
xxxxxx具体代码
ret
子程序名 endp
输入子函数
input proc
push ax
push cx
push dx
mov bx,0
mov dl,10
repeatmul:
mov ah,1
int 21h
cmp al,'0'
jb next
cmp al,'9'
ja next
;bx=bx*10+ax
sub al,48
mov ah,0
mov cx,ax
mov ax,bx
mul dl
add ax,cx
mov bx,ax
jmp repeatmul
next:
pop dx
pop cx
pop ax
ret
input endp
输出子函数
output proc
push bx
push cx
push dx
mov cl,10
mov bh,1
repeatdiv:
div cl
push ax
cmp al,0
je print
add bh,1
mov ah,0
jmp repeatdiv
print:
cmp bh,0
je next
pop dx
mov dl,dh
add dl,48
sub bh,1
mov ah,2
int 21h
jmp print
next:
pop dx
pop cx
pop bx
ret
output endp
完整代码:
DATAS SEGMENT
;此处输入数据段代码
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
call input
mov ax,bx
call output
MOV AH,4CH
INT 21H
input proc
push ax
push cx
push dx
mov bx,0
mov dl,10
repeatmul:
mov ah,1
int 21h
cmp al,'0'
jb next
cmp al,'9'
ja next
;bx=bx*10+ax
sub al,48
mov ah,0
mov cx,ax
mov ax,bx
mul dl
add ax,cx
mov bx,ax
jmp repeatmul
next:
pop dx
pop cx
pop ax
ret
input endp
output proc
push bx
push cx
push dx
mov cl,10
mov bh,1
repeatdiv:
div cl
push ax
cmp al,0
je print
add bh,1
mov ah,0
jmp repeatdiv
print:
cmp bh,0
je next
pop dx
mov dl,dh
add dl,48
sub bh,1
mov ah,2
int 21h
jmp print
next:
pop dx
pop cx
pop bx
ret
output endp
CODES ENDS
END START