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.
;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