data segment
RS dw 0
range db 80

CR db 13, 10, '$'

data ends
code segment
	assume cs: code, ds: data
writeDEC proc
	push ax
	push bx
	push cx
	push dx
	
	xor cx, cx
	mov bx, 10
		
 next_digit:
	xor dx, dx	
	div bx		
	push dx		
	inc cx		
	or ax, ax
	jnz next_digit	
		
next_char:
	pop ax		
	add al, '0'
	mov dx, ax
	mov ah, 02h
	int 21h		
	loop next_char
	
	pop  dx
	pop  cx
	pop  bx
	pop  ax
	ret		
writeDEC endp

random proc
	mov ax, RS
	mov dx, 8405h
	mul dx
	inc ax
	mov dx, ax
	mov RS, ax
	mov cl, range
	sub cl, 2
	inc cx
	xor dx, dx
	div cx
	mov ax, dx
	ret
random endp


start:
	mov  ax, data
	mov  ds, ax
	
	call random
	xor ah, ah
	call writeDEC
	lea dx, CR
	mov ah, 9
	int 21h
	
	call random
	xor ah, ah
	call writeDEC
	lea dx, CR
	mov ah, 9
	int 21h
	
	call random
	xor ah, ah
	call writeDEC
	lea dx, CR
	mov ah, 9
	int 21h

	call random
	xor ah, ah
	call writeDEC
	lea dx, CR
	mov ah, 9
	int 21h

mov  ax, 4C00h	
	int  21h
code ends
end start