Z80
Desensamblador
Después de haber programado un ensamblador de procesador Z80, el
siguiente paso era crear un desensamblador.Desensamblador
El fichero de entrada debe ser un fichero binario, código maquina del Z80, la salida será un fichero de texto con formato *.asm .
El formato de entrada es:
./disam fichero.bin
Si no se especifica nada el fichero de salida será file.asm
Además permite otros argumentos como:
-pt Salida por pantalla
-o nombre fichero asm
La mejor prueba es desemsamblar un fichero binario que antes hemos ensamblado con nuestro ensamblador.
/reloj.asm org &0 ld a,&0 ld b,a ld c,a ld d,a ld e,a #inicio ld a,&10 inc b /incrementar segundos cp b jr nz,#salto ld b,&0 inc c /incrementar decimales segundo ld a,&6 cp c jr nz,#salto inc d /incrementar minutos ld c,&0 ld a,&10 cp d jr nz,#salto ld d,&0 inc e /incrementar decimales minutos ld a,&6 cp e jr nz,#salto ld e,&0 #salto nop jp #inicio nop nop end |
LD
A,&0 /
00000 > 062
000
LD B,A / 00002 G 071 LD C,A / 00003 O 079 LD D,A / 00004 W 087 LD E,A / 00005 _ 095 #salto01 LD A,&10 / 00006 > 062 010 salto01 INC B / 00008 . 004 CP B / 00009 . 184 JR NZ,#salto00 / 00010 032 026 /GOTO #salto00 *DIR.00038 LD B,&0 / 00012 . 006 000 INC C / 00014 . 012 LD A,&6 / 00015 > 062 006 CP C / 00017 . 185 JR NZ,#salto00 / 00018 032 018 /GOTO #salto00 *DIR.00038 INC D / 00020 . 020 LD C,&0 / 00021 . 014 000 LD A,&10 / 00023 > 062 010 CP D / 00025 . 186 JR NZ,#salto00 / 00026 032 010 /GOTO #salto00 *DIR.00038 LD D,&0 / 00028 . 022 000 INC E / 00030 . 028 LD A,&6 / 00031 > 062 006 CP E / 00033 . 187 JR NZ,#salto00 / 00034 032 002 /GOTO #salto00 *DIR.00038 LD E,&0 / 00036 . 030 000 #salto00 NOP / 00038 . 000 salto00 JP #salto01 / 00039 . 195 006 000 /GOTO #salto01 *DIR.00006 NOP / 00042 . 000 NOP / 00043 . 000 END |
Como pasaba en el ensamblador, la salida de números está en formato decimal.
El código de desensamblado es igual al fichero en lenguaje ensamblador.
Los salto de programa se representan con #salto**
Para ver todos los nemotécnicos admitidos, se pueden ver en los ficheros :
opcodes.txt
z80_code.txt
Espero que sea un principio para que realicéis vuestro propio desensamblador.
PROGRAMAS
Saludos.
Juan Galaz
Bibliografía:
http://www.z80.info/decoding.htm
https://espamatica.com/
http://map.grauw.nl/resources/
No hay comentarios:
Publicar un comentario