title: Illegal instruction in Assembly
body: <p>I really do not understand why this simple code works fine in the first attempt but when 
  putting it in a procedure an error shows:</p>
  
  <p>NTVDM CPU has encountered an illegal instruction 
  CS:db22 IP:4de4 OP:f0 ff ff ff ff</p>
  
  <p>The first code segment works just fine:</p>
  
  <pre><code>.model small
  .stack 100h
  .code
  
  start:
    mov ax,@data
    mov ds,ax
    mov es,ax
  
     MOV AH,02H    ;sets cursor up            
     MOV BH,00H
     MOV DH,02
     MOV DL,00
     INT 10H
  
  EXIT:
  
  MOV AH,4CH
  INT 21H
  END
  </code></pre>
  
  <p>However This generates an error:</p>
  
  <pre><code>.model small
  .stack 100h
  .code
  
  start:
    mov ax,@data
    mov ds,ax
    mov es,ax
  
    call set_cursor
  
    PROC set_cursor near
  
    MOV AH,02H    ;sets cursor up             
    MOV BH,00H
    MOV DH,02
    MOV DL,00
    INT 10H
   RET
   set_cursor ENDP
  
  EXIT:
  
    MOV AH,4CH
    INT 21H
    END
  </code></pre>
  
  <p>Note: Nothing is wrong with windows config. I have tried many sample codes that work fine </p>
  
  <p>Thanks</p>