Beruflich Dokumente
Kultur Dokumente
PROCEDIMIENTOS Y MACROS
INTRODUCCIN
;Direccionar la cadena
Mov AH,09h
Int 21h
10/05/2014
PROGRAMACIN MODULAR
estructurada.
Un programa modular contiene bloques de cdigo con puntos de entrada y de
PROCEDIMIENTOS
programa con el fin de realizar alguna tarea especfica. Los procedimientos hacen
el programa ms estructural y ms fcil de entender. Generalmente un
procedimiento vuelve al mismo punto desde donde fue llamado.
Un procedimiento se declara una sola vez en el cdigo fuente y cuando el
10/05/2014
VENTAJAS
DESVENTAJAS
10/05/2014
SINTAXIS DECLARACIN DE UN
PROCEDIMIENTO
name PROC
; aqui va el cdigo
; de el procedimiento...
RET
name ENDP
Name es el nombre del procedimiento
La instruccin RET es usada para retornar de un procedimiento de tipo near
PROC y ENDP son directivas para que el compilador recuerde la direccin del
procedimiento
INSTRUCCIN CALL
Transfiere el control a un procedimiento, la direccin de retorno (IP) es
empujada a la pila.
Sintaxis
CALL operando
10/05/2014
PASOS EN LA EJECUCIN DE UN
PROCEDIMIENTO
Procedimiento
4.- El microprocesador ejecuta las instrucciones del procedimiento
5.- El procedimiento termina cuando se encuentra la instruccin Ret
6.- Se saca de la pila el valor original del IP y se continua el flujo del programa
EJEMPLO
CALL mm1
MOV AX, 2
JMP salir
mm1 PROC
MOV
RET
BX, 5
; return to caller.
mm1 ENDPD
The above example calls procedure m1, does MOV BX, 5, and returns to the next
instruction after CALL: MOV AX, 2.
10/05/2014
OTRAS CARACTERSTICAS
instruccin del mismo ser la de retorno RET para la familia del 8086.
Si el procedimiento va a ser llamado desde otro segmento de cdigo, se deber
call nombre_proc
10/05/2014
EJEMPLO
Crear un procedimiento para imprimir cadenas
Crear un procedimiento para pedir cadenas
Crear un procedimiento que eleve un numero a un potencia
Proc.asm
Proc2.asm
EJERCICIOS
10/05/2014
LA PILA
Sintaxis
PUSH operand
POP operand
10/05/2014
USO DE LA PILA
La pila utiliza el algoritmo LIFO(Last In First Out)
Es importante realizar el mismo numero de PUSHs y POPs
2.
3.
EJEMPLO
ORG
100h
MOV
AX, 1234h
PUSH
AX
MOV
AX, 5678h
POP
AX
RET
END
10/05/2014
INTERCAMBIANDO VALORES
ORG
100h
MOV
AX, 1212h
MOV
BX, 3434h
; store 3434h in BX
PUSH
AX
PUSH
BX
POP
AX
POP
BX
RET
END
EJEMPLO
Proc3.asm
10
10/05/2014
GUARDANDO EL ESTADO DE LA
MAQUINA
mov cx, 10
Loop0:
call PrintSpaces
loop Loop0
Cual es el
problema en esta
rutina?
mov al,
mov cx, 40
PSLoop:
putc
loop PSLoop
ret
PrintSpaces endp
SOLUCIN
mov cx, 10
Loop0: call PrintSpaces
loop Loop0
PrintSpaces proc near
push cx
mov al,
mov cx, 40
PSLoop:
putc
loop PSLoop
pop cx
ret
PrintSpaces endp
11
10/05/2014
MACROS
Las macros son igual que los procedimientos, pero no realmente. Las macros se
parecen a los procedimientos, pero slo existen hasta que se compila el cdigo,
despus de la compilacin todas las macros son reemplazadas con las
instrucciones reales. Si se declar una macro y nunca se utiliz en el cdigo, el
compilador simplemente la ignorar. La macro emu8086.inc es un buen ejemplo
de cmo se pueden utilizar las macros, este archivo contiene varias macros para
hacer la codificacin ms fcil de programar.
DIRECTIVA INCLUDE
12
10/05/2014
name
MACRO
[parameters,...]
<instructions>
ENDM
MyMacro
MACRO
p1, p2, p3
MOV AX, p1
MOV BX, p2
MOV CX, p3
ENDM
ORG 100h
MyMacro 1, 2, 3
MyMacro 4, 5, DX
RET
13
10/05/2014
MOV
MOV
MOV
MOV
MOV
MOV
AX,
BX,
CX,
AX,
BX,
CX,
00001h
00002h
00003h
00004h
00005h
DX
ejemplo: MyMacro
14
10/05/2014
usa los mismos macro 100 veces, el compilador expande las macros 100 veces,
por lo que el archivo ejecutable de salida se hace ms grande y ms grande, cada
vez que se insertan todas las instrucciones de una macro.
parmetros a un procedimiento.
Para pasar parmetros a una macro, pueden escribirse despus del nombre de la
15
10/05/2014
DECLARACIONES DUPLICADAS
16
10/05/2014
ARCHIVOS EXTERNOS
Si se tiene previsto utilizar las macros en varios programas, puede ser una buena
de tal archivo.
EJEMPLO
Macro.asm
Libe.inc
17
10/05/2014
EJERCICIOS
Modificar la macro para imprimir una cadena, pero en lugar de usar el servicio 9
devuelva la posicin en AL
18