Escolar Documentos
Profissional Documentos
Cultura Documentos
Universidad de Ibagu.
Ibagu Tolima
Programa con operaciones sumas, restas, multiplicaciones divisiones e incrementos entre datos y registros Primero grabamos las instrucciones
3.1 Cual es el propsito de cada uno de los siguientes comandos de DEBUG: a. A [ASSEMBLE]: Ensambla instrucciones que se le introduzcan, guardndolas en la direccin siguiente a la que se le llego la ltima instruccin. Cuando se utiliza este comando se le puede dar como parmetro la direccin donde se desea que se inicie el ensamblado b. D [DUM]: Muestra el contenido de una zona de memoria en hexadecimal y en ASCII.
c. E [DIRECIION]: Permite editar, byte por byte, una zona de memoria. Muestra -en hexadecimalel byte de esa posicin y permite escribir otro valor para cambiarlo. d. P [STEP]: Proceder o ejecutar un conjunto de instrucciones relacionadas e. Q [QUIT]: Sirve para salir de DEBUG y volver al DOS f. R [REGISTERS]: Muestra el contenido de los registros de la CPU, as como la prxima instruccin a ejecutar. g. T[TRACE]: Ejecuta la instruccin apuntada por cs:ip y vuelve a DEBUG. Permite ejecutar paso a paso un programa y observar en cada instruccin el efecto producido.
3.2 proporcione los comandos de DEBUG para las siguientes necesidades a. Muestre la memoria iniciando en el desplazamiento 264H en el segmento de datos
C. ingrese el valor hexadecimal A8B364 en el segmento de datos iniciando desde la localidad 200H Con esto ingresamos los valores hexadecimales A8B364 iniciando desde la localidad 200H
D. Muestre el contenido de (i) todos los registros y (ii) solo del registro IP.
E. Desensamble el cdigo de mquina que se encuentra en las localidades desde la 100H hasta 11EH
3.3 proporcione instrucciones en cdigo mquina para las siguientes operaciones: a. mover el valor hexadecimal 4629 al registro AX b. sumar el valor hexadecimal 036 al registro AX Solucin El cdigo mquina para realizar las anteriores operaciones
Podemos ver que los registros estn en cero inicialmente y esta por ejecutarse el comando Mov AX,4629. Despus de esto al registro AX sele sumara 036A, dando como resultado 4993
3.4 suponga que ha utilizado DEBUG para introducir el comando siguiente E CS:100 B8 45 01 05 25 00 El valor 45 hexadecimal supuestamente era 54. Codifique otro comando E para corregir solo el byte que esta incorrecto; esto es cambien el 45 por el 54 en forma directa Solucin Introducimos el cdigo a DEBUG E CS:100 B8 45 01 05 25 00 y se tiene lo siguiente:
Podemos ver que el registro AL queda con el valor 45 ahora lo vamos a corregir con el valor 54
E CS:100 B8 04 30 05 00 30 90 a. Cules son las tres instrucciones simblicas representadas aqu? b. Al ejecutarse este programa usted descubre que el registro AX termina con 6004 en lugar del esperado 0460 Cuales son los dos comandos de DEBUG que se requieren? c. Habiendo corregido las instrucciones, usted ahora vuelve a ejecutar el programa desde la primera instruccin Cules son los dos comandos de DEBUG que se requieren? Solucin a. Las 3 instrucciones representadas en el cdigo son: MOV AX,3004 ADD AX,3000 NOP
b. Esto se debe a que el al guardar los registros en memoria intercambia el byte ms significativo por el menos significativo se esperaba un 0460 y en lugar de esto se obtuvo un 6004 y para corregir esto solo basta con intercambiar las siguientes lneas de cdigo: E CS:100 B8 30 04 05 30 00 90 c. Los dos comando que se requieren cambiar son los siguientes MOV AX,0430 ADD AX,0030
Como se puede ver en la captura de pantalla ejecutando nuevamente las instrucciones con el cdigo corregido ahora si se obtiene en 0460 esperado
3.6 Considere el programa en lenguaje maquina E CS:100 B0 25 D0 E0 B3 15 F6 E3 90 Este programa realiza lo siguiente: Mueve el valor 25 hexadecimal al registro AL.
Y se puede ver que el resultado final en el registro AX es 0612 3.7 Utilice el comando E de DEBUG para introducir el siguiente programa en lenguaje de maquina: Cdigo de maquina (en 100H) A0 00 02 D0 E0 F6 26 D1 02 A3 02 02 90 Datos (en 200H) 25 15 00 00 Este programa realiza lo siguiente: Mueve el contenido de un byte en DS:0200 (25) al registro AL.
Como se puede ver en a captura de pantalla el resultado final en AX es 0612 ahora para comprobar vamos a ver la posicin de memoria D DS:0200 y veremos el producto almacenado en DS:0202 como 1206
3.8 Para la pregunta 3.7codifique comandos que graben el programa con el nombre TRIAL.COM
Para guardar primero el programa en este caso lo ingresamos con E y una vez ingresamos todo el programa le damos N nombredearchivo.COM
Despus de esto utilic R BX e ingrese 0 para limpiarlo, despus use R CX para mostrar el registro CX y aqu ingresamos el tamao del programa la razn de porque se borra el BX es porque la longitud del programa est en la pareja BX:CX, y por ultimo escribimos W para guardar el archivo
Ahora desensamble y rastree su ejecucin hasta NOP y revise el valor en el BX despus de cada instruccin.
Despus de revisar el valor de BX instruccin a instruccin se puede ver que el valor final de BX es 88H
3.10 Cual es el propsito de la instruccin INT? Generar una interrupcin de software. Se necesita el nmero de interrupcin formato de byte de valor Cuando est escrito en lenguaje ensamblador, la instruccin se escribe as: INT X Donde X es la interrupcin de software que debe ser generada (0-255). Cuando se genera una interrupcin de software, el procesador llama a uno de los 256 funciones sealadas por la tabla de direcciones de interrupcin, que se encuentra en los primeros 1024 bytes de memoria, Por tanto, es totalmente posible utilizar una instruccin de gran llamada para iniciar la interrupcin funcin manualmente despus de empujar el registro de bandera. Una de las interrupciones de software ms tiles DOS era 0x21 interrupcin. Al llamarlo con diferentes parmetros en los registros (en su mayora ah y otros) se puede acceder a varias operaciones de entrada y salida, salida de cadena, etc.