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 xor ch, ch mov cl, range xor dx, dx div cx mov ax, dx ret random endp start: mov ax, data mov ds, ax mov ah, 2ch int 21h mov ax, dx xor ah, ah mov RS, 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