Guia de preguntas basicas sobre el lenguaje ensamblador para procesadores intel
Introducción al lenguaje ensambladorDescripción completa
Descripción completa
ayudara a entender concetos de este lenguajeDescripción completa
COMPARACION DE 2 NUMEROSDescripción completa
Cuestionario basico sobre elementos del lenguaje ensamblador
ideas para proyectos con lenguaje ensambladorDescripción completa
Descripción: problemas de laboratorio practicos
Directivas de EnsambladorDescripción completa
Documento donde se explica el lenguaje para la programacion y funcionamiento del microprocesado Z80Descripción completa
Programada en EnsambladorDescripción completa
1er Programa en EnsambladorDescripción completa
Taller Capitulo 3 Lenguaje ensamblador y programación para IBM PC y compatibles
Cristian Suarez Vanegas- 2420101030
Universidad de Ibagué.
Docente a cargo de la materia:
José Armando Gallego
Ibagué – Tolima
Programa con operaciones sumas, restas, multiplicaciones divisiones e incrementos entre datos y registros Primero grabamos las instrucciones
Ahora vamos a ejecutar instrucción por instrucción
Ahora después de seguir ejecución vamos a guardar el programa como un .COM
3.1 Cual es el propósito de cada uno de los siguientes comandos de DEBUG: a. A [ASSEMBLE]: Ensambla instrucciones que se le introduzcan, guardándolas en la dirección siguiente a la que se le llego la última instrucción. Cuando se utiliza este comando se le puede dar como parámetro la dirección donde se desea que se inicie el ensamblado b. D [DUM]: Muestra el contenido de una zona de memor ia en hexadecimal y en ASCII.
c. E [DIRECIION]: Permite editar, byte por byte, una zona de memoria. Muestra -en hexadecimalel byte de esa posición 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 próxima instrucción a ejecutar. g. T[TRACE]: Ejecuta la instrucción apuntada por cs:ip y vuelve a DEBUG . Permite ejecutar paso a paso un programa y observar en cada instrucción el efecto producido.
h. U: Desensambla código de máquina y lo pasa a código simbólico
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
b. Muestre la memoria iniciando en la localidad 410H
C. ingrese el valor hexadecimal A8B364 en e l segmento de datos iniciando desde la localidad 200H Con esto ingresamos los valores hexadecimales A8B364 iniciando desde la localidad 200H
Como podemos ver el valor hexadecimal a8 b3 64 quedo guardado en la localidad 200
D. Muestre el contenido de (i) todos los registros y (ii) solo del registro IP.
E. Desensamble el código de máquina que se encuentra en las localidades desde la 100H hasta 11EH
3.3 proporcione instrucciones en código máquina para las siguientes operaciones: a. mover el valor hexadecimal 4629 al re gistro AX b. sumar el valor hexadecimal 036ª al registro AX Solución El código máquina para realizar las anteriores operaciones
Podemos ver que los registros están en cero inicialmente y esta por ejec utarse el comando Mov AX,4629. Después 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 Solución Introducimos el código 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
3.5 suponga que ha utilizado DEBUG para introducir el comando E siguiente:
E CS:100 B8 04 30 05 00 30 90 a. Cuáles son las tres instrucciones simbólicas 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 ej ecutar el programa desde la primera instrucción ¿Cuáles son los dos comandos de DEBUG que se requieren?
Solución a. Las 3 instrucciones representadas en el código son: MOV AX,3004 ADD AX,3000 NOP
b. Esto se debe a que el al guardar los registros en memoria intercambia el byte más 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 líneas de código: 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 código corregido ahora si se o btiene 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.
Recorre el valor 25 hexadecimal al registro AL.
Mueve el valor 15 hexadecimal al registro BL.
Multiplica AL por BL.
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: Código 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.
Recorre el contenido de AL un bit a la izquierda. (El resultado es 4A)
Multiplica el AL por un byte contenido en DS:0201 (15)
Mueve el producto de AX a la palabra que inicia en DS:0202
Como se puede ver en a captura de pantalla el resultado final en AX es 0612 ahora para comprobar vamos a ver la posición de memoria D D S:0200 y veremos el producto almacenado en DS:0202 como 1206
3.8 Para la pregunta 3.7codifique comandos que graben el programa con e l nombre TRIAL.COM
Para guardar primero el programa en e ste caso lo ingresamos con E y una vez ingresamos todo el programa le damos N nombredearchivo.COM
Después de esto utilicé R BX e ingrese 0 para limpiarlo, después use R C X para mostrar el registro CX y aquí ingresamos el tamaño del programa la razón de porque se borra el BX es porque la longitud del programa está en la pareja B X:CX, y por ultimo escribimos W para guardar el archivo
Y podemos verificar que efectivamente el programa quedo guardado
3.9 Utilice el comando A de DEBUG para introducir las siguientes instrucciones:
Ahora desensamble y rastree su eje cución hasta NOP y revise el valor e n el BX después de cada instrucción.
Después de revisar el valor de BX instrucción a instrucción se puede ver que el valor final de BX es 88H
3.10 Cual es el propósito de la instrucción INT? Generar una interrupción de software. Se necesita el número de interrupción formato de byte de valor Cuando está escrito en lenguaje ensamblador, la instrucción se escribe así: INT X Donde X es la interrupción de software que debe ser generada (0-255). Cuando se genera una interrupción de software, el procesador llama a uno de los 256 funciones señaladas por la tabla de direcciones de interrupción, que se encuentra en los primeros 1024 bytes de memoria, Por tanto, es totalmente posible utilizar una instrucción de gran llamada para iniciar la interrupción función manualmente después de empujar el registro de bandera. Una de las interrupciones de software más útiles DOS era 0x21 interrupción. Al llamarlo con diferentes parámetros en los registros (en su m ayoría ah y otros) se puede acceder a varias operaciones de entrada y salida, salida de cadena, etc .