Diferencia entre revisiones de «Ayuda sobre el Microensamblador de AMD 29203»

De Wiki Asqueados
Saltar a: navegación, buscar
 
(Usando el programa en GNU/Linux)
 
(No se muestran 5 ediciones intermedias de 2 usuarios)
Línea 2: Línea 2:
  
 
==Estructura de un microprograma==
 
==Estructura de un microprograma==
 +
<nowiki>
 +
 
;Inicio del microprograma
 
;Inicio del microprograma
 
;Los comentarios se escriben tras ";"
 
;Los comentarios se escriben tras ";"
 +
 +
;definición de variables de forma simbólica
 +
PC  EQU .E  ;cuando escribamos PC nos estaremos refiriendo al registro .E
 +
 +
; captacion de instrucción
 +
ORG H'0      ;Debe estar en la dirección 0
 +
ld IR, [PC]  ;Cargamos en el registro de instrucción la dirección
 +
              ;que indica el PC
 +
inc PC        ;Incrementamos el contador de programa
 +
jmap          ;Esto salta a la dirección de memoria correspondiente
 +
              ;al código de operación de la instrucción. Consultar
 +
              ;la tabla de correspondencia de la PROM.
 +
  
 
;Una instrucción
 
;Una instrucción
ORG H'102              ;Esta es la dirección en la memoria de microinstrucciones donde se situará
+
;Conviene que en los comentarios indiquéis qué hace cada instrucción.
 +
;Ésta carga en IRB el contenido de la dirección contenida en IRA
 +
ORG H'102              ;Esta es la dirección en la memoria de  
 +
                        ;microinstrucciones donde se situará lo que
 +
                        ;pongamos a continuación.
 +
 
 
ld IRB, [IRA] & jmpz    ;Esta es la microinstrucción. Ya que una microinstrucción
 
ld IRB, [IRA] & jmpz    ;Esta es la microinstrucción. Ya que una microinstrucción
 
                         ;hace varias cosas, cada cosa se separa por "&"
 
                         ;hace varias cosas, cada cosa se separa por "&"
 
                         ;jmpz vuelve a la dirección 0, y suele ponerse
 
                         ;jmpz vuelve a la dirección 0, y suele ponerse
 +
;Puede haber más microinstrucciones
 +
 +
;Otra instrucción
 +
ORG H'10C
 +
[...]
 +
 +
;Así sucesivamente.
 +
 +
END                      ;Los microprogramas deben terminar con END. Si no lo hacen
 +
                        ;el microensamblador dará error de sintaxis, pero no
 +
                        ;aclarará nada.
 +
 +
 +
 +
</nowiki>
 +
 +
 +
==Usando el programa microensamblador==
 +
 +
===Usar en el microensamblador un programa hecho con MenuAMD===
 +
 +
Carga el programa ''.amd''. Dale al botón ''Desensamblar''. Aparecerá un archivo ''.out'' (al que hay que ignorar) y un archivo ''.uen'' con el código en ensamblador correspondiente.
 +
 +
===Usar en MenuAMD un programa hecho con microensamblador===
 +
 +
Carga el program ''.uen'' y dale a ''Ensamblar''. El archivo resultante tiene el mismo formato que los archivos que guarda MenuAMD.
 +
 +
===Usar el programa bajo GNU/Linux===
 +
 +
Si estás usando este sistema operativo no es necesario que cambies a Windows para usar el microensamblador. Este programa funciona bastante bien con ''wine'', un programa que permite usar en GNU/Linux programas para Win32.
 +
 +
El problema puede ser consultar la ayuda. Lo mejor que he encontrado para ello es ''helpdeco'', un decompilador de archivos de ayuda de Microsoft. Con él puedes decompilar el ''hlp'' obtener el ''rtf'' que sirve como base para crearlo.
 +
 +
NOTA: MenuAMD y el simulador también funcionan con ''wine''.
 +
 +
==Directivas y microinstrucciones==
 +
 +
Se puede consultar la documentación sobre ello en un archivo de ayuda de Windows que viene con el microensamblador llamado ''amdhelp.hlp''.
 +
 +
Si te encuentras mareado con tantas microinstrucciones y no sabes por dónde empezar a aprender, mi consejo es que hagas algunas instrucciones con [[MenuAMD]], las desensambles y empieces consultando la documentación sobre ellas.

Revisión actual del 03:58 28 nov 2005

Un microprograma en microensamblador es un conjunto de microinstrucciones y directivas. Yendo a lo práctico, un microprograma es un fichero con esta estructura

Estructura de un microprograma


;Inicio del microprograma
;Los comentarios se escriben tras ";"

;definición de variables de forma simbólica
PC  EQU .E  ;cuando escribamos PC nos estaremos refiriendo al registro .E

; captacion de instrucción
ORG H'0       ;Debe estar en la dirección 0
ld IR, [PC]   ;Cargamos en el registro de instrucción la dirección
              ;que indica el PC
inc PC        ;Incrementamos el contador de programa
jmap          ;Esto salta a la dirección de memoria correspondiente
              ;al código de operación de la instrucción. Consultar
              ;la tabla de correspondencia de la PROM.


;Una instrucción
;Conviene que en los comentarios indiquéis qué hace cada instrucción.
;Ésta carga en IRB el contenido de la dirección contenida en IRA
ORG H'102               ;Esta es la dirección en la memoria de 
                        ;microinstrucciones donde se situará lo que
                        ;pongamos a continuación.

ld IRB, [IRA] & jmpz    ;Esta es la microinstrucción. Ya que una microinstrucción
                        ;hace varias cosas, cada cosa se separa por "&"
                        ;jmpz vuelve a la dirección 0, y suele ponerse
;Puede haber más microinstrucciones

;Otra instrucción
ORG H'10C
[...]

;Así sucesivamente.

END                      ;Los microprogramas deben terminar con END. Si no lo hacen
                         ;el microensamblador dará error de sintaxis, pero no
                         ;aclarará nada.





Usando el programa microensamblador

Usar en el microensamblador un programa hecho con MenuAMD

Carga el programa .amd. Dale al botón Desensamblar. Aparecerá un archivo .out (al que hay que ignorar) y un archivo .uen con el código en ensamblador correspondiente.

Usar en MenuAMD un programa hecho con microensamblador

Carga el program .uen y dale a Ensamblar. El archivo resultante tiene el mismo formato que los archivos que guarda MenuAMD.

Usar el programa bajo GNU/Linux

Si estás usando este sistema operativo no es necesario que cambies a Windows para usar el microensamblador. Este programa funciona bastante bien con wine, un programa que permite usar en GNU/Linux programas para Win32.

El problema puede ser consultar la ayuda. Lo mejor que he encontrado para ello es helpdeco, un decompilador de archivos de ayuda de Microsoft. Con él puedes decompilar el hlp obtener el rtf que sirve como base para crearlo.

NOTA: MenuAMD y el simulador también funcionan con wine.

Directivas y microinstrucciones

Se puede consultar la documentación sobre ello en un archivo de ayuda de Windows que viene con el microensamblador llamado amdhelp.hlp.

Si te encuentras mareado con tantas microinstrucciones y no sabes por dónde empezar a aprender, mi consejo es que hagas algunas instrucciones con MenuAMD, las desensambles y empieces consultando la documentación sobre ellas.