i am learning assembly as part of my course. This code is to clear screen and then type 4529. It is quite old-school style, though our teacher explains things very well so i will stick with this style of code instead of using HLA or macros etc.. Now coming to the problem. Even if i copy-paste the exact code into a .asm and compile it with nasm -o directive as instructed, the program does nothing. If i run it within dosbox, it clears screen but fails to print the number. is the code so ancient that my 32-bit OS will not support it no matter what? please help - i need to learn this coding-style for a: to pass the course , b: the lecture handouts are quite good otherwise and i hesitate from buying a large book on ASM.

```
       [org 0x0100]
jmp start  
   clr:     mov ax, 0xb800
            mov es, ax
            mov di, 0

   nxt:     mov word[es:di], 0x0720
            add di,2
            cmp di,4000
            jnz nxt
            ret

prntnum:    push bp
            mov bp, sp
            push es
            push ax
            push bx
            push cx
            push dx
            push di

            mov ax, 0x0b800
            mov es,ax
            mov ax,[bp+4]
            mov bx, 10  
            mov cx, 0

nxtdigit:       mov dx,0
            div bx
            add dl,0x30
            push dx
            inc cx
            cmp ax,0
            jnz nxtdigit

            mov di,0

nextpos:            pop dx
            mov dh,0x07
            mov [es:di],dx
            add di,2
            loop nextpos

            pop di
            pop dx
            pop cx
            pop bx
            pop ax
            pop es
            pop bp
            ret 2

start:      call clr
            mov ax, 4529
            push ax         
            call prntnum

            mov ax,0x4c00
            int 0x21

```