; you may customize this and other start-up templates;
; the location of this template is c:\emu8086\inc\0_com_template.txt
data segment
num dB 1000 dup (-1)
data ends
code segment
assume ds:data, cs:code
start:
mov ax, data
mov ds, ax
mov es, ax
;两位输入
mov ah,1
int 21h
sub al,30h
mov bl,10
mul bl
mov cl,al
mov ah,1
int 21h
sub al,30h
add cl,al
mov ch,0
mov dl, 0dh ;回车
mov ah, 2
int 21h
mov dl, 0ah ;换行
int 21h
mov dx,0
mov [di],1
loop1:
push 0
lea di, num
inc dx
cmp dx,cx
ja loopend
loop2:
mov al,dl
mov bl,[di]
mul bl
;低位加进位存放mem
pop bx
push ax
mov ah,0
mov bl ,bh
mov bh , 0
add ax ,bx
;加法进位
pop bx
add bh,ah
push bx
mov [di],al
inc di
mov al,[di]
cmp al,-1
jne loop2
pop ax
cmp ah,0
je NOTSAVE
mov [di],ah
NOTSAVE:
jmp loop1
loopend:
;输出
lea di,num
findlast:
inc di
mov cl,[di]
cmp cl,-1
jne findlast
lea cx,num
printloop:
sub di,1
;设置被除数
mov al,[di]
mov ah,0
mov bl,16
div bl
push ax
mov dl,al
cmp dl,9
ja alpha1
add dl,30h
jmp num1
alpha1:
add dl,37h
num1:
mov ah,2
int 21h
pop dx
mov dl,dh
cmp dl,9
ja alpha2
add dl,30h
jmp num2
alpha2:
add dl,37h
num2:
int 21h
cmp di,cx
jne printloop
mov dl,48h
int 21h
;程序结束,返回到操作系统系统
mov ax, 4c00h
int 21h
end start
code ends
ret