1 / 9

Macroinstrucciones

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

guy-mayer
Download Presentation

Macroinstrucciones

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Macroinstrucciones • Nombre MACRO [Lista de parámetros separados con coma ] • Bloque de Instrucciones • ENDM • La invocación del mismo es igualmente sencilla • Nombre parámetro0 [, parámetro1, ...] • La cantidad de parámetros que se le podrán pasar a un Macro tiene un máximo de 16 • ElMacro MACRO par0, par1 • mov A,par0 • mov B,par1 • ENDM

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

  3. MACROS • Etiquetas • MDELAY MACRO p1,p2 • LOCAL lazo0,lazo1 • mov R1,p2 • Lazo1: mov R0,p1 • lazo0: djnz R0,lazo0 • djnz R1,lazo1 • ENDM • Iteraciones • IncWDPTR MACRO • REPT 2 • Inc DPTR • ENDM • ENDM • IncWDPTR MACRO p1 • REPT p1 • Inc DPTR • ENDM • ENDM

  4. Macros • Iteraciones IRP nombrevar, < par1, par2, par3, par4 > ………… inc nombrevar ; bloque de instrucciones ………… ENDM ElMacro MACRO IRP val, <R0,R1,R2> inc val ENDM ENDM ElMacro MACRO par0,par1,par2 IRP val, <par0,par1,par2> inc val ENDM ENDM

  5. Macros • Iteraciones • TransmitaHola MACRO • IRPC letra, <HOLA> • jnb TI,$ • clr TI • mov SBUF, #’letra’ • ENDM • ENDM • Sería traducido por: • 0002 3099FD 24+2 jnb TI,$ • 0005 C299 25+2 clr TI • 0007 759948 26+2 mov SBUF, #'H' • 000A 3099FD 27+2 jnb TI,$ • 000D C299 28+2 clr TI • 000F 75994F 29+2 mov SBUF, #'O' • 0012 3099FD 30+2 jnb TI,$ • 0015 C299 31+2 clr TI • 0017 75994C 32+2 mov SBUF, #'L' • 001A 3099FD 33+2 jnb TI,$ • 001D C299 34+2 clr TI • 001F 759941 35+2 mov SBUF, #'A‘ • 36end ¡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: lcall dirección 16 bits (3 bytes 64K) • acall dirección 11 bits (2 bytes 2k ) • Stack Pointer: registro de 8 bits, el Reset lo inicializa en 0x07 • mov SP,# UltimaVariable

  7. Rutinas • Las invocacionespuedenanidarse • Dseg at 0x30 • Ultima: ds 1 • Cseg • Programa: movSP,#Ultima • ………………… • (1000) lcall Rutina1 • (1003) • (2000)Rutina1: ………………… • lcall Rutina2 • (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) = 10xx (sp-1) = 0x31 (pc) = 1003 (sp-1) = 0x30 (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

  8. Salvar Registros Mono Con Navaja dec SP dec SP push Dpl push Dph ret largoJMP equ 3 Switch: mov A,R1 mov B,#largoJMP mul AB mov R0,SP Loop: jz Fin inc @R0 dec A sjmp Loop Fin: ret • push directo • pop directo • push Acc • push B • push Dpl • push Dph • ;…………. • pop Dph • pop Dpl • pop B • pop Acc • ret SP -> PCl PCH SP+1 Acc SP+1 B SP+1 Dpl SP+1 Dph CSEG at 0x1A00 ;los LJMP deben ;estar dentro de una ;misma página Mov R1,otra Lcall switch Ljmp adonde0 Ljmp adonde1 Ljmp adonde2 Ljmp adonde3 Ljmp adonde4 Ljmp adonde5 using 3 push AR4 ;………….. pop AR3

  9. Pasaje y Retorno de parámetros a las Rutinas • En registros: A, B, DPTR, etc • En Bancos • Banco0 equ 0x00 • Banco1 equ 0x08 • Banco2 equ 0x10 • Banco3 equ 0x18 • mov PSW,#Banco0 • ;………………………. • using 3 • mov AR0, Dpl • mov AR1, Dph • mov AR2, cuanto • lcall DecDptr • mov Dpl,AR6 • mov Dph,AR7 Cero EQU 0 Using 3 DecDptr: clr C mov A,AR0 subb A, Ar2 mov Ar6,A mov A,AR1 subb A,#Cero mov AR7,A ret

More Related