En esta ocación les pongo el ejemplo de como usar un procedimiento dentro un programa en ensamblador, como se declara y como se llama.
Los procedimientos son algo similar a los métodos en un lenguaje de alto nivel, son llamados para ejecutarse y al terminar continuará la linea siguiente después de haber llamado el procedimiento, los procedimientos son usados para realizar tareas en específico como lo puede ser imprimir cierto mensaje en pantalla o hacer alguna operacion aritmética.
Un procedimiento se declara de la siguiente manera:
nombreProc PROC [near/far]
Instrucciones a ejecutar
[ret]
nombre ENDP
Las directivas PROC y ENDP indican el inicio y el fin del procedimiento, nombreProc indica el nombre del procedimiento, debe ser único y no debe tener el nombre de una directiva o palabra reservada.
Near/far depende si la operación implica un procedimiento cercano o lejano.
La instrucción ret regresa al segmento donde fue invocado el procedimiento.
La llamada a un procedimiento se hace mediante call nombreProc.
Ejemplo de un procedimiento que imprime un mensaje:
.model small
.stack 64
.data
msj db 0ah,0dh, 'Mi primer procedimiento','$'
msj2 db 0ah,0dh, 'miensamblador.blogspot','$'
.code
inicio:
call imprime ;Llamada al procedimiento imprime
call imprime2
Salir: ;Etiqueta para salir del programa
mov ah,04ch
int 21h
imprime proc near ;Declaración de el procedimiento imprime, imprime un mensaje
mov ax,@data
mov ds,ax
mov ah,09h
mov dx,offset msj
int 21h
ret ;regresamos el procedimiento de donde lo llamaron.
imprime endp
imprime2 proc near
mov ax,@data
mov ds,ax
mov ah,09h
mov dx,offset msj2
int 21h
ret
imprime2 endp
end
.stack 64
.data
msj db 0ah,0dh, 'Mi primer procedimiento','$'
msj2 db 0ah,0dh, 'miensamblador.blogspot','$'
.code
inicio:
call imprime ;Llamada al procedimiento imprime
call imprime2
Salir: ;Etiqueta para salir del programa
mov ah,04ch
int 21h
imprime proc near ;Declaración de el procedimiento imprime, imprime un mensaje
mov ax,@data
mov ds,ax
mov ah,09h
mov dx,offset msj
int 21h
ret ;regresamos el procedimiento de donde lo llamaron.
imprime endp
imprime2 proc near
mov ax,@data
mov ds,ax
mov ah,09h
mov dx,offset msj2
int 21h
ret
imprime2 endp
end
Programa en ejecución:
no me compila el ejemplo
ResponderEliminarayuda