Programa que ejemplifica el uso básico de los procedimientos (No macros)

Aplicación que utiliza procedimientos (No macros) y ejemplifica correctamente la forma en que se debe mandar llamar un procedimiento con y sin parámetros además de como declarar su prototipo. La aplicación tiene procedimientos con nombres bastante explicitos y literales en su comportamiento.

Búsqueda de ejemplos en Ensamblador
;Autor Hector Torres
;URL

; programa que usa procedimientos

.model small
.stack
.data
  doble  db \\\'ɻȼͺ\\\'
  simple db \\\'Ú¿ÀÙij\\\'
  msj    db \\\'No se duerman$\\\'
.code
.startup

; definici¢n de procedimientos prototipos
printcad proto c, p_cad: ptr word
cuadro proto c, fi:byte, ci:byte, ff:byte, cf:byte, tipo :ptr byte
poncar proto c, letra: byte
gotoxy proto c, fil: byte,col: byte
pon_color proto c,cfi:byte, cci:byte, cff:byte, ccf:byte, color:byte


; llamada a los procedimientos
call clrscr
call pitido
invoke pon_color, 1,1,23,79,0Ah
invoke cuadro, 1,1,23,79,addr doble
invoke cuadro, 4,4,20,74,addr simple
invoke pon_color, 3,3,21,77,34h
invoke gotoxy, 10,20
invoke printcad, addr msj
invoke cuadro, 5,5,18,70,addr doble
invoke pon_color, 15,20,17,25,0A0h


.exit

; Imprime una candena de caracteres en pantalla
; en cadena recibe la direccion de 16 bits donde apunta la
; cadena a imprimir

printcad proc c, p_cad: ptr word
      mov dx,p_cad
      mov ah,09h
      int 21h
      ret
printcad endp

; emite un pitido
pitido proc near
      mov ah,02h
      mov dl,07
      int 21h
      RET
pitido endp

; limpiar pantalla

clrscr proc
   mov ah,06h         ; peticion de recorrido de la pantalla
   mov al,00h         ; indica la pantalla completa
   mov bh,07h         ; attributos de color y fondo 7 blanco 1 azul
   mov cx,0000h       ; esquina superior izquierda renglon columna
   mov dx,184fh       ; esquina inferior derecha renglon columna
   int 10h            ; llamada a la interrupcion de video BIOS
   ret
clrscr endp


;  procedimiento para el gotoxy

gotoxy proc c, fil:byte,col: byte
   mov ah,02h         ; peticion para colocar el cursor
   mov bh,00          ; numero de pagina de video 0
   mov dh,fil         ; renglon
   mov dl,col         ; columna
   int 10h            ; llamada a la interrupcion de video BIOS
   ret
gotoxy endp

; procedimiento para escribir un caracter en pantalla

poncar proc c,letra: byte
  mov ah,02h
  mov dl,letra
  int 21h
  ret
poncar endp


; procedimiento para hacer un cuadro
cuadro proc c, fi:byte,ci:byte,ff:byte,cf:byte, tipo: ptr byte
     mov BX,tipo
     mov cl,ci
     .repeat
       invoke gotoxy, fi,cl
       invoke poncar, [BX+4]
       invoke gotoxy, ff,cl
       invoke poncar, [BX+4]
       inc cl
    .until cl==cf
     mov cl,fi
     .repeat
       invoke gotoxy, cl,ci
       invoke poncar, [BX+5]
       invoke gotoxy, cl,cf
       invoke poncar, [BX+5]
       inc cl
     .until cl==ff
     invoke gotoxy, fi,ci
     invoke poncar, [BX]
     invoke gotoxy, fi,cf
     invoke poncar, [BX+1]
     invoke gotoxy, ff,ci
     invoke poncar, [BX+2]
     invoke gotoxy, ff,cf
     invoke poncar, [BX+3]
     ret
cuadro endp

; camiar color del fondo de la pantalla

pon_color proc c,cfi:byte, cci:byte, cff:byte, ccf:byte, color:byte
   mov ah,06h         ; peticion de recorrido de la pantalla
   mov al,00h         ; indica la pantalla completa
   mov bh,color       ; attributos de color y fondo 7 blanco 1 azul
   mov ch,cfi
   mov cl,cci         ; esquina superior izquierda renglon columna
   mov dh,cff
   mov dl,ccf         ; esquina inferior derecha renglon columna
   int 10h            ; llamada a la interrupcion de video BIOS
   ret
pon_color endp

end