title: What does "mov ah, 0Bh" / "int 21h" do in DOS assembly?
body: <p>I saw this code to generate and display a square wave on a CRO.</p>
  
  <pre><code>data segment
  
  base_add equ 0ef40h
  porta equ base_add+0 
  portb equ base_add+1
  portc equ base_add+2
  control_word equ base_add+3
  
  data ends
  
  code segment
  assume cs:code, ds:data
  start : mov ax, data
  mov ds, ax
  mov dx, control_word
  mov al, 80h
  out dx, al
  
  
  up2:
   mov cx, 000ffh
   mov al, 00h
   mov dx, portb
  
   mov al, 00h
  
    here1: out dx,
  loop here1
  
  mov cx, 00ffh
  
       mov al, 0ffh
  here2: out dx, al
   loop here2
  
  mov ah, 0bh   ; LINE1
  int 21h
  
  or al, al    ; LINE2
  jz up2
  
  mov ah, 4ch
  int 21h
  code ends
  end start
  </code></pre>
  
  <p>Towards the end, what is the use of <code>mov ah, 0Bh</code> interrupt and <code>or al, al</code>?<br>
  Isn't <code>or al, al</code> basically just <code>al</code>? What is the need to explicitly mention it?<br>
  I even tried to find out what 0Bh interrupt does, but I could not make sense out of what I read. Any help on this would be appreciated.
  Thanks!</p>