Resumen y ejercicios del Debug
Enviado por chivan1908 • 25 de Noviembre de 2012 • Tutorial • 7.080 Palabras (29 Páginas) • 690 Visitas
Resumen y ejercicios del DEBUG
Uso del DEBUG.
Ingreso: Tipeamos la instrucción que se menciona seguidamente desde el prompt.
C: \ > DEBUG Después de dar enter aparecerá un guión
C:\>debug
-
Ya estamos posicionados en el DEBUG y éste está preparado para recibir instrucciones en ASSEMBLER.
Ejemplo 1: Ver las instrucciones permitidas en el ASSEMBLER básico.
Tipeamos lo siguiente:
-??
Y nos mostrará la información que sigue. Tipee y compruebe
ensamblar A [dirección]
comparar C dirección de intervalo
volcar D [intervalo]
escribir E dirección [lista]
llenar F lista de intervalos
ir G [=dirección] [direcciones]
hex H valor1 valor2
entrada I puerto
cargar L [dirección] [unidad] [primer_sector] [número]
mover M dirección de intervalo
nombre N [nombre_ruta] [lista_argumentos]
salida O byte de puerto
proceder P [=dirección] [número]
salir Q
registrar R [registrar]
buscar S lista de intervalos
seguimiento T [=dirección] [valor]
desensamblar U [intervalo]
escribir W [dirección] [unidad] [primer_sector] [número]
asignar memoria expandida XA [#páginas]
desasignar memoria expandida XD [identificador]
asignar páginas de memoria expandida XM [Lpágina] [Ppágina] [identificador]
mostrar estado de la memoria expandida XS
-
Note que al terminar aparece el guión que nos indica que el DEBUG tiene nuevamente el control de las operaciones, con lo cual Uds. podrán ingresar más comandos
Cada una de la instrucciones que se mostraron anteriormente se irán explicando a lo largo de este apunte, donde aplicaremos un ejercicio específico para cada una de ellas incrementando las posibilidades, desde las más simples hasta las más complejas, para perfeccionar nuestro dominio de la programación.
Ejemplo 2: Ver los registros.
Este ejercicio nos permite que miremos el valor de varios registros y del registro de estado de la ALU (STATUS REGISTER). Para eso tipeamos:
-r
Y no muestra lo que sigue:
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=1987 ES=1987 SS=1987 CS=1987 IP=0100 NV UP EI PL NZ NA PO NC
1987:0100 8936C7DE MOV [DEC7],SI DS:DEC7=0000
-
El significado de los diferentes registros se da en la tabla siguiente.
REF Nombre Que es lo que hace
AX Acumulador Almacena el resultado de operaciones matemáticas; lectura / escritura (I/O) dede/hacia los puertos que están conectados con los periféricos; almacena también un área de memoria temporal.
BX Registro Base Alacena direcciones o valores y puede interactuar con el Acumulador.
CX Registro Contador Utilizados para la ejecución de LOOPS y puede ser incrementado o decrementado según la instrucción que sea necesaria
DX Registro de Datos De acuerdo a la estructura de computadores analizada por nosotros corresponde al MDR (MEMORY DATA RGISTER) y es el paso intermedio para el ingreso de datos.
DS Registro de segmento de datos Es un puntero que nos indica la dirección donde se encuentran los datos.
ES Segmento extra para datos Igual que el anterior pero apuntando a una dirección mayor.
SS Registro de segmento de pila Indica donde se encuentra el STACK.
CS Registro de segmento código Indica donde esta almacenado el código para la ejecución del programa.
BP Puntero del STACK Registro complementario para no modificar el SS.
SI Registro de Indice de segmento Alacena una dirección que nos indica donde se encuentra el vector de datos.
DI Indice destino Contiene una dirección donde se copiara el vector de datos indicado por SI.
SP Puntero de Pila (STACK POINTER) Permite saber donde se encuentra el último dato almacenado en el STACK. Siempre debe ser mayor o igual al SS o BP
IP Apuntador de la siguiente instrucción (INSTRUCTION POINTER) También llamado PROGRAM COUNTER. Tiene almacenada la dirección de la próxima instrucción a ser ejecutada.
Ahora pasemos al registro bandera o STATUS REGISTER, que nos da el resultado de la actuación de la ALU
Señal REF Función REF Función
Overflow NV No hay OV Hay
Direction UP Hacia adelante DN Hacia atrás
Interrupts DI Desactivadas EI Desactivadas
Sign PL Valor positivo NG Valor negativo
Zero NZ No es cero ZR Es cero
Auxiliary Carry NA No hay acarreo AC Hay acarreo
Parity PO Paridad impar PE Paridad Par
Carry NC No hay acarreo CY Se produjo acarreo
El comando r (registro) nos permite interactuar con los registros de la CPU, posibilitando modificar sus contenidos. Cuando tipeamos r sin ningún otro parámetro nos muestra todos los registros con sus respectivos contenidos, pero si agregamos un parámetro nos va a mostrar solo el contenido del registro que nosotros mencionamos:
-r bx
BX 0000
:
Como podemos observar no nos devuelve el signo – sino que ahora nos muestra : para que ingresemos el valor que queremos que sea almacenado en el registro BX.
En el ejemplo vemos que BX tiene un valor 0000. Si ingresamos 5555 en : tendremos:
-r bx
BX 0000
:5555
-r
AX=0000 BX=5555 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=1987 ES=1987 SS=1987 CS=1987 IP=0100 NV UP EI PL NZ NA PO NC
1987:0100 8936C7DE MOV [DEC7],SI DS:DEC7=0000
-
En negrilla vemos que el registro BX quedó modificado con el nuevo valor tipeado.
Suma y Resta.
Ejemplo S1: Se pide sumar dos valores (200 y FFF) .
Vamos a ingresar las siguientes instrucciones
...