Trabajo Práctico Nro 3: DEBUG: Lista de Comandos
Trabajo Práctico Nro 3: DEBUG: Lista de Comandos
C:\>debug
-
el signo “-“ es el prompt del debug, pudiendo escribir entonces a continuación los comandos de
esta utilidad.
Lista de Comandos
A [dirección] Ensamblar: permite ensamblar código assembler, es el editor de
programas que posee el debug.
Para su utilización se le debe agregar la dirección de comienzo de
nuestro programa, caso contrario comenzará después de la ultima línea
de código ingresada por otra instrucción A.
C [Com1] [Fin1] [Com2] Comparar: realiza una comparación byte a byte entre dos bloques de
memoria.
Se le deben ingresar 3 parámetros, dirección de comienzo primer bloque,
dirección de final del primer bloque y dirección de comienzo segundo
bloque.
D [Comienzo] [Final] Volcar: realiza una muestra o volcado de memoria, mostrando byte a
byte lo que se encuentra en un sector de la memoria.
Puede prescindir de parámetros, en cuyo caso comenzara a partir de la
dirección h0100 mostrando en cada instrucción D bloques sucesivos de
memoria.
Otra forma de utilizar la instrucción es agregando la dirección de
comienzo del bloque a ver y pudiendo agregar también la dirección final.
1
UNIVERSIDAD Técnicas Digitales II
TECNOLÓGICA Año 2004 J.T.P. Ing. Steiner Guillermo.
NACIONAL
Trabajo Práctico Nro 3: DEBUG Email:[email protected]
2
UNIVERSIDAD Técnicas Digitales II
TECNOLÓGICA Año 2004 J.T.P. Ing. Steiner Guillermo.
NACIONAL
Trabajo Práctico Nro 3: DEBUG Email:[email protected]
Banderas
Las banderas del microprocesador, pueden ser vista a través del comando R
C:\>debug
-r
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=1A06 ES=1A06 SS=1A06 CS=1A06 IP=0100 NV UP EI PL NZ NA PO NC
1A06:0100 0000 ADD [BX+SI],AL DS:0000=CD
-
3
UNIVERSIDAD Técnicas Digitales II
TECNOLÓGICA Año 2004 J.T.P. Ing. Steiner Guillermo.
NACIONAL
Trabajo Práctico Nro 3: DEBUG Email:[email protected]
D34A:000B
D000:34AB
D333:017B
C34B:FFFB
Los número en formato Segmento : Corrimiento corresponden a la misma dirección física.
Ejercicio Nro. 2
Mostrar el estado de todos los registros y banderas.
-r
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0D5C ES=0D5C SS=0D5C CS=0D5C IP=0100 NV UP EI PL NZ NA PO NC
0D5C:0100 1F POP DS
Ejercicio Nro. 3
Realizar la suma y resta de los siguientes pares numéricos.
• 100 108
• 108 100
-h 108 100 realiza la suma y luego la resta de los dos nro ingresados
0208 0008
-h 100 108
0208 FFF8
Ejercicio Nro. 4
Asignar al registro AX el valor 34A3 y BX el valor 33DA, verificando luego el resultado.
-r AX agregando a la derecha de la instrucción r el
AX 0000 registro nos permite modificarlo en forma directa
:34A3
-r BX
BX 0000
:33DA
-r
AX=34A3 BX=33DA CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0D5C ES=0D5C SS=0D5C CS=0D5C IP=0100 NV UP EI PL NZ NA PO NC
0D5C:0100 1F POP DS
Ejercicio Nro 5
Realizar un programa que cargue los registros con los siguientes valores.
AX:10
BX:20
CX:30
DX:40
Luego ejecutar los siguientes comandos.
4
UNIVERSIDAD Técnicas Digitales II
TECNOLÓGICA Año 2004 J.T.P. Ing. Steiner Guillermo.
NACIONAL
Trabajo Práctico Nro 3: DEBUG Email:[email protected]
• u 100
• d 100
• g=100
• q
-a 100
0BBD:0100 mov AX,10 Asignar a AX el valor 10
0BBD:0103 mov BX,20 Asignar a BX el valor 20
0BBD:0106 mov CX,30 Asignar a CX el valor 30
0BBD:0109 mov DX,40 Asignar a DX el valor 40
0BBD:010C int 3 Finalizar el programa y devolver el ctrl al debug
0BBD:010D
-u 100
0BBD:0100 B81000 MOV AX,0010
0BBD:0103 BB2000 MOV BX,0020
0BBD:0106 B93000 MOV CX,0030
0BBD:0109 BA4000 MOV DX,0040
0BBD:010C CC INT 3
...
...
-d 100
0BBD:0100 B8 10 00 BB 20 00 B9 30-00 BA 40 00 CC F6 C7 04 .... ..0..@.....
0BBD:0110 74 E6 C6 46 00 02 8B 76-02 80 3C 00 34 00 AC 0B t..F...v..<.4...
...
...
-g=100
AX=0010 BX=0020 CX=0030 DX=0040 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0BBD ES=0BBD SS=0BBD CS=0BBD IP=010C NV UP EI PL NZ NA PO NC
0BBD:010C CC INT 3
Ejercicio Nro 6
Realizar un programa que escriba un asterisco en la pantalla , grabar ese programa en el disco y
luego ejecutarlo desde el prompt del DOS.
-a 100
0BBD:0100 mov AH,02 utiliza la interrupción 21, servicio 2 para escribir
0BBD:0102 mov DL,2A un carácter en la pantalla el valor del ASCII a
0BBD:0104 int 21 mostrar se ingresa en DL, en este caso 2A
0BBD:0106 int 20
0BBD:0108
-n aste.com con la instrucción n ingreso el nombre del programa
-h 108 100
0208 0008
-r BX en los registros BX:CX ingreso la longitud en bytes
BX 0000 del programa
:0
-r CX
CX 000D
:8
-w finalmente con w grabo el programa en el disco
Escribiendo 00008 bytes
-q
c:\aste
*
5
UNIVERSIDAD Técnicas Digitales II
TECNOLÓGICA Año 2004 J.T.P. Ing. Steiner Guillermo.
NACIONAL
Trabajo Práctico Nro 3: DEBUG Email:[email protected]
Ejercicio Nro 7
Cargar el programa anteriormente grabado y verificar si el programa se encuentra en la memoria.
-n aste.com con n ingreso el nombre del programa a cargar
-l 100 con l cargo el prog. a partir de la direc. especificada
-u 100
0BFC:0100 B402 MOV AH,02
0BFC:0102 B22A MOV DL,2A
0BFC:0104 CD21 INT 21
0BFC:0106 CD20 INT 20
...
...
Ejercicio Nro 8
Mover el programa anterior a la posición 010C.
Ejercicio Nro. 1
Se hablo de que varios pares [segmento:corrimiento] podían direccionar a la misma posición de
memoria.
Determinar en las siguientes posiciones de memoria, los segmentos extremos. O sea el menor
segmento y el mayor segmento con el que se pueden direccionar esas posiciones de memoria,
aclarando también su corrimiento u offset.
A23B4h
B3A47h
Ejercicio Nro 2
Utilizando las instrucciones del Debug, comparar el bloque de memoria 100-110 con el bloque
200-210, mostrando el resultado.
Ejercicio Nro 3
Sabiendo que el buffer de video comienza en la dirección B800:0000 realizar un fill que llene la
pantalla de asteriscos, utilizando para ello la instrucción F del debug, calcular previamente cual
será la ultima posición de memoria correspondiente al ultimo carácter de la pantalla.
6
UNIVERSIDAD Técnicas Digitales II
TECNOLÓGICA Año 2004 J.T.P. Ing. Steiner Guillermo.
NACIONAL
Trabajo Práctico Nro 3: DEBUG Email:[email protected]
Ejercicio Nro 4
Realizar un programa que cargue dos números cualquiera en los registros AX y BX, y luego que
sume y reste esos dos números guardando el resultado de la suma en AX y la resta en BX.
Ejercicio Nro 5
Ingresar con el comando a el siguiente código.
mov ax,156
add ax,100
add ax,100
int 3
luego mediante el debug copiar las ultimas 3 instrucciones a la posición donde se encuentra la int
3, de tal modo que el programa sume ahora 400 al AX.
Ejercicio Nro 6
Realizar un programa ejemplo para cada tipo de direccionamiento, este programa ejemplo debe
sumar dos números.
• Direccionamiento por registro
• Direccionamiento inmediato
• Direccionamiento directo
• Direccionamiento base más índice
• Direccionamiento relativo por registro
• Direccionamiento relativo base más índice
Ejercicio Nro 7
Realizar un programa que imprima un asterisco en el centro de la pantalla y que realice un scroll
de una línea hacia arriba en un ventana de coordenadas (8,10),(16,70).
Para el scroll podemos utilizar un servicio de la BIOS