s0 segment
m dw 5
n dw 15
s0 ends
s1 segment stack
dw 100 dup(?)
top label word
s1 ends
s2 segment
assume cs:s2,ss:s1,ds:s0
main proc near
mov ax,s0
mov ds,ax
mov ax,s1
mov ss,ax
lea sp,top
mov ax,m
mov bx,n
go:
xor dx,dx
div bx
cmp dx,0
je put
mov ax,bx
mov bx,dx
jmp go
put:
mov ax,bx
call decoutput
mov ah,4ch
int 21h
main endp
decoutput proc near
push ax
push dx
push bx
push cx
test ax,8000h
jz start
push ax
mov dl,2dh
mov ah,02h
int 21h
pop ax
neg ax
start:
xor cx,cx
mov bx,10
here:
cwd
div bx
push dx
inc ch
cmp ax,0
jne here
mov cl,8
there:
pop dx
and dx,00ffh
add dl,30h
mov ah,02h
int 21h
dec ch
cmp ch,0
ja there
pop cx
pop bx
pop dx
pop ax
ret
decoutput endp
s2 ends
end main