La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Macroinstrucciones NombreMACRO[ Lista de parámetros separados con coma ] Bloque de Instrucciones ENDM La invocación del mismo es igualmente sencilla Nombreparámetro0.

Presentaciones similares


Presentación del tema: "Macroinstrucciones NombreMACRO[ Lista de parámetros separados con coma ] Bloque de Instrucciones ENDM La invocación del mismo es igualmente sencilla Nombreparámetro0."— Transcripción de la presentación:

1 Macroinstrucciones NombreMACRO[ Lista de parámetros separados con coma ] Bloque de Instrucciones ENDM La invocación del mismo es igualmente sencilla Nombreparámetro0 [, parámetro1,...] La cantidad de parámetros que se le podrán pasar a un Macro tiene un máximo de 16 ElMacroMACRO par0, par1 movA,par0 movB,par1 ENDM

2 Macros dseg var:ds1 cseg;inicio un segmento sjmpinicio ORG 0x30 inicio: movR0,#4;AJJJJJJJJJ movvar,#5 ElMacrovar,R0 ElMacro#12,R0 end Se compila como: mov A,var mov B,R0 mov A,#12 mov B,R0 ¿En cuanto quedan A y B ? ¿5 y 4? Noooo La respuesta es ¡ 5 y 5 !

3 MACROS Etiquetas MDELAYMACROp1,p2 LOCALlazo0,lazo1 movR1,p2 Lazo1:movR0,p1 lazo0:djnzR0,lazo0 djnzR1,lazo1 ENDM Iteraciones IncWDPTRMACRO REPT2 IncDPTR ENDM IncWDPTRMACROp1 REPTp1 IncDPTR ENDM

4 Macros Iteraciones IRPnombrevar, ………… incnombrevar; bloque de instrucciones ………… ENDM ElMacro MACRO IRPval, incval ENDM ElMacroMACRO par0,par1,par2 IRPval, incval ENDM

5 Macros Iteraciones TransmitaHolaMACRO IRPCletra, jnbTI,$ clrTI movSBUF, #letra ENDM Sería traducido por: FD 24+2 jnb TI,$ 0005 C clr TI mov SBUF, #'H' 000A 3099FD 27+2 jnb TI,$ 000D C clr TI 000F 75994F 29+2 mov SBUF, #'O' FD 30+2 jnb TI,$ 0015 C clr TI C 32+2 mov SBUF, #'L' 001A 3099FD 33+2 jnb TI,$ 001D C clr TI 001F mov SBUF, #'A 36 end ¡Ajjjjjjjjjjjjjj!

6 Rutinas Programa principal ……………………… invocacion de la rutina Direcc. retorno……………………… ……………………… invocacion de la rutina Direcc. retorno ……………………… ……………………… Rutina: Bloque de Instrucciones ret end Invocación:lcalldirección 16 bits(3 bytes 64K) acalldirección 11 bits(2 bytes 2k ) Stack Pointer: registro de 8 bits, el Reset lo inicializa en 0x07 movSP,# UltimaVariable

7 Rutinas Las invocaciones pueden anidarse Dsegat0x30 Ultima:ds1 Cseg Programa:movSP,#Ultima ………………… (1000)lcallRutina1 (1003) (2000)Rutina1:………………… lcallRutina2 (2005) ret;(1) (3000)Rutina2:………………… ret;(2) (SP) = (0x30) (PC) = (0002) (SP) = (0x30) (PC) = (1003) (sp+1) = (0x31) 0x31 -> 03 (sp+1) = (0x32) 0x32 -> 10 (PC) = 0x2000 (SP) = (0x32) (PC) = (2005) (sp+1) = (0x33) 0x33 -> 05 (sp+1) = (0x34) 0x34 -> 20 (PC) = 0x3000 (sp) = 0x34 (pc) = 20xx (sp-1) = 0x33 (pc) = 2005 (sp-1) = 0x32 (sp) = 0x32 (pc) = 10xx (sp-1) = 0x31 (pc) = 1003 (sp-1) = 0x30

8 Salvar Registros pushdirecto popdirecto pushAcc pushB pushDpl pushDph ;…………. popDph popDpl popB popAcc ret using3 pushAR4 ;………….. popAR3 SP ->PCl PCH SP+1Acc SP+1 B SP+1 Dpl SP+1 Dph Mono Con Navaja decSP pushDpl pushDph ret largoJMPequ3 Switch:movA,R1 movB,#largoJMP mulAB movR0,SP Loop: jzFin decA sjmpLoop Fin:ret CSEG at 0x1A00 ;los LJMP deben ;estar dentro de una ;misma página MovR1,otra Lcallswitch Ljmpadonde0 Ljmpadonde1 Ljmpadonde2 Ljmpadonde3 Ljmpadonde4 Ljmpadonde5

9 Pasaje y Retorno de parámetros a las Rutinas En registros:A, B, DPTR, etc En Bancos Banco0equ0x00 Banco1equ0x08 Banco2equ0x10 Banco3equ0x18 movPSW,#Banco0 ;………………………. using3 movAR0, Dpl movAR1, Dph movAR2, cuanto lcallDecDptr movDpl,AR6 movDph,AR7 CeroEQU0 Using3 DecDptr:clrC movA,AR0 subbA, Ar2 movAr6,A movA,AR1 subbA,#Cero movAR7,A ret


Descargar ppt "Macroinstrucciones NombreMACRO[ Lista de parámetros separados con coma ] Bloque de Instrucciones ENDM La invocación del mismo es igualmente sencilla Nombreparámetro0."

Presentaciones similares


Anuncios Google