Ensamblador

Necesito un código en ensamblador que me permita mostrar por pantalla el contenido de los registros ax, bx... Sin usar el debug de la maquina

1 respuesta

Respuesta
Primero perdona por si no sé darte una solución concreta porque no especificas el micro que usas y si te refieres a programación sobre 80x86 aviso de que mis conocimientos son muy básicos y nunca he hecho gran cosa.
Sin embargo la solución que se me ocurre pasaría por pasar los valores de los registros a una posición de memoria y hacer una llamada a una rutina que muestre texto en pantalla.
En psudolenguaje lo veo así:
Mover Ax -> Vb1
Mober Bx -> Vb2
...
(Los registros que quieras mostrar)
; ahora hacemos la llamada a una rutina que muestre el contenido de las ;posiciones de memoria Vb1, Vb2... etc en pantalla.
call pantalla.
Si introducimos estas tres lineas en el punto donde deseamos ver el contenido de los registros nos lo mostrará en pantalla. Ejemplo
mov ax,2 ; 2 en Ax
mov bx,2 ; 2 en Bx
mov Vb1, ax ; Ax a la vbl1
mov Vb2, bx ; Bx a la vbl2
call pantalla ; la rutina que crearemos para escribir en pantalla VB1 y Vb2
add ax,bx ; Sumamos ax + bx
mov Vb1, ax ; Ax a la vbl1
mov Vb2, bx ; Bx a la vbl2
call pantalla ; la rutina que crearemos para escribir en pantalla VB1 y Vb2
Es la solución fácil que se me ocurre (también se podría hacer simplemente la llamada a la rutina y rescatar en ella los registros, teniendo cuidado de no modificarlos, sin embargo creo que así es mejor porque la misma rutina vale para todos los registros)
La rutina de pantalla no la hago para este caso concreto, sin embargo he encontrado un ejemplo que con pocas modificaciones te valdrá.
HOLA.ASM
; Programa clasico de ejemplo. Despliega una leyenda en pantalla.
STACK SEGMENT STACK ; Segmento de pila
DW 64 DUP (?) ; Define espacio en la pila
STACK ENDS
DATA SEGMENT ; Segmento de datos
SALUDO DB "Hola mundo!!", 13,10,"$" ; Cadena
DATA ENDS
CODE SEGMENT ; Segmento de Codigo
ASSUME CS:CODE, DS:DATA, SS:STACK
INICIO: ; Punto de entrada al programa
MOV AX, DATA ; Pone direccion en AX
MOV DS, AX ; Pone la direccion en los registros
MOV DX, OFFSET SALUDO ; Obtiene direccion del mensaje
MOV AH, 09H ; Funcion: Visualizar cadena
INT 21H ; Servicio: Funciones alto nivel DOS
MOV AH, 4CH ; Funcion: Terminar
INT 21H
CODE ENDS
END INICIO ; Marca fin y define INICIO
Este programa lo he encontrado en la red, así que no puedo garantizar nada.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas