Está en la página 1de 4

Arquitectura y Tecnologa de los Computadores. Departamento de Automtica. Universidad de Alcal.

ACTIVIDADES DEL TEMA 1: INTRODUCCIN AL ENSAMBLADOR


NUM EJER. 1

EJERCICIO
Ensambla, desde el Debug del MS-DOS, utilizando el comando a, las siguientes operaciones de transferencia: MOV AX, 170 MOV BX, 3023 MOV CL, BH MOV CH, AL Desensambla, utilizando el comando u, el cdigo a ejecutar. Por qu aparece ms cdigo del introducido? Ejecuta con el comando t la primera instruccin. Qu ocurre con el registro AX? Y con el registro IP? Ejecuta la siguiente instruccin. A continuacin, y utilizando el comando r, modifica el valor de BH a 12(hex). Termina de ejecutar las dos lneas restantes. Ensambla, desde el Debug del MS-DOS, el siguiente cdigo: MOV AX, 8000 MOV BX, 8000 ADD AX, BX Ejecuta, con el comando t, las tres sentencias anteriores y observa los distintos flags. Cules cambian, y por qu? Repite el ejercicio 5 y el 6, pero tras ejecutar las dos primeras instrucciones modifica, con el comando a, la ltima instruccin, sustituyndola por SUB AX, BX. Ejecuta y observa ahora los flags. Cul cambia, y por qu? Ensambla, utilizando el Debug del MS-DOS, el siguiente cdigo: MOV AX, 1010 MOV BX, 2020 PUSH AX ADD AX, BX MOV CX, AX POP AX Ejecuta, con el comando t, las tres primeras lneas. Qu pasa con el puntero de pila?. Por qu se decrementa?. Muestra, con el comando d, el contenido de la pila. Qu registro de segmento hay que utilizar para acceder a las posiciones de memoria de la pila? Termina de ejecutar las lneas introducidas. Qu pasa con AX?. Cmo queda el puntero de pila?. Escribe, ensambla y ejecuta el siguiente cdigo: ;------------------------------------------------------------------------------NAME PRACTICA 1_11 ; Se debe omitir al utilizarCodeVIew ORG 100h ;Se debe omitir al utilizarCodeView ;-------------------------------------------------------------------------------DOSSEG ; Se debe omitir al utilizar Emu8086 .MODEL SMALL .STACK 100H ACTIVIDADES DEL TEMA 1 Pgina 1 de 4

2 3

4 5

6 7 8

10

11

Arquitectura y Tecnologa de los Computadores. Departamento de Automtica. Universidad de Alcal. NUM EJER. .DATA OPERANDO1 DB 10H OPERANDO2 DB 20H RESULTADO DW 0000H .CODE INICIO: MOV AX, @DATA MOV DS, AX SUB AX, AX MOV AL, OPERANDO1 ADD AL, OPERANDO2 MOV RESULTADO, AX MOV AH, 4CH INT 21H END INICIO 12 Ejecuta el programa de la actividad 11 paso a paso desde la aplicacin. Observa las variables declaradas, utilizando los comandos: CodeView: WB Operando1, WB Operando2 y WW Resultado Emu8086 : Botn VARS Ejecuta el programa de la actividad 11, y al ejecutar la instruccin MOV AL,OPERANDOR1 realiza la siguiente operacin con la aplicacin: CodeView: teclea en la lnea de rdenes del CodeView la sentencia r AX (y da enter). Despus introduce el valor 255 (y da enter). Emu8086 : Haz doble clic sobre uno de los casilleros del registro AX, escribe en la casilla Unsigned el valor 255 Finalmente, contina ejecutando el programa. Qu pasa con el resultado? Cambia la lnea ADD AL,OPERANDO2 del programa de la actividad 11 por SUB AL OPERANDO2. Ensambla, enlaza y ejecuta el nuevo programa. Qu hace? Escribe, ensambla y ejecuta el siguiente cdigo: ;------------------------------------------------------------------------------NAME PRACTICA 1_15 ; Se debe omitir al utilizarCodeVIew ORG 100h ;Se debe omitir al utilizarCodeView ;-------------------------------------------------------------------------------DOSSEG ; Se debe omitir al utilizar Emu8086 .MODEL SMALL .STACK 100H .DATA .CODE INICIO: MOV AX, @DATA MOV DS, AX XOR DX, DX MOV AX, 15 MOV BL, 6 DIV BL MOV AH, 4CH INT 21H END INICIO 16 En el programa anterior coloca en AX el valor 0FFh. Ensambla y ejecuta el nuevo programa ACTIVIDADES DEL TEMA 1 Pgina 2 de 4

EJERCICIO

13

14 15

Arquitectura y Tecnologa de los Computadores. Departamento de Automtica. Universidad de Alcal. NUM EJER. 17 18 19

EJERCICIO
Cambia la instruccin DIV por la IDIV en la actividad anterior, y observa qu es lo que ocurre con el resultado de la divisin Prueba diferentes valores con la divisin, observa dnde queda el cociente y dnde el resto. Emu8086: Activa las ventanas de STACK, y de VARS. Escribe, ensambla y ejecuta el siguiente cdigo: ;------------------------------------------------------------------------------NAME PRACTICA 1_19 ; Se debe omitir al utilizarCodeVIew ORG 100h ;Se debe omitir al utilizarCodeView ;-------------------------------------------------------------------------------DOSSEG ; Se debe omitir al utilizar Emu8086 .MODEL SMALL .STACK 100H .DATA OPERANDO1 DB 10H OPERANDO2 DB 20H RESULTADO DW 0000H .CODE INICIO: MOV AX, @DATA MOV DS, AX SUB AX, AX MOV AL, OPERANDO1 PUSH AX ADD AL, OPERANDO2 POP AX MOV RESULTADO, AX MOV AH, 4CH INT 21H END INICIO Qu ocurre con el resultado de la ejecucin anterior? Escribe y ensambla siguiente cdigo: ;------------------------------------------------------------------------------NAME PRACTICA 1_21 ; Se debe omitir al utilizarCodeVIew ORG 100h ;Se debe omitir al utilizarCodeView ;-------------------------------------------------------------------------------DOSSEG ; se debe omitir al utilizar emu8086
.MODEL SMALL .STACK 100H .DATA NUMERO DB 17H .CODE INICIO: MOV AX, @DATA MOV DS, AX MOV CX, 4 BUCLE: MOV BX, NUMERO MOV AX, CX SHR BH, 4 MOV CX, AX MOV AH, 2 MOV DL, BH CMP DL, 9

20 21

ACTIVIDADES DEL TEMA 1

Pgina 3 de 4

Arquitectura y Tecnologa de los Computadores. Departamento de Automtica. Universidad de Alcal. NUM EJER.
JLE DIG1 ADD DL, 7 DIG1: ADD DL, 30H INT 21H MOV DL, NUMERO AND DL, 0FH CMP DL, 9 JLE DIG3 ADD DL, 7 DIG2: ADD DL, 30H INT 21h MOV dl, 10 INT 21h MOV dl, 13 INT 21h MOV DL, NUMERO ADD DL, 4 MOV NUMERO, DL LOOP BUCLE MOV AH, 4CH INT 21H END INICIO

EJERCICIO

22 23

24 25

26

Observa los errores detectados e identifica la lnea y el tipo de error que se produce. Corrige el cdigo con la siguiente informacin: Lnea MOV BX, NUMERO debe poner MOV BH, NUMERO * (Slo en CV)Lnea SHR BH, 4 hay que poner SHR BH, CL e introducir antes MOV CL, 4 Lnea JLE DIG3 hay que poner JLE DIG2 Ensambla de nuevo y ejecuta. Qu hace el programa?. Emu8086 :Activa la ventana de FLAGS. Ejecuta paso a paso el programa corregido. Observa cmo a veces salta desde JLE DIG2 a ADD DL, 30H y otras veces no. Por qu? Ejecuta el programa paso a paso, y al ejecutar la instruccin JLE DIG1 realiza la siguiente operacin: CodeView: Teclea en la lnea de rdenes del CodeView la sentencia rf pl (y da enter). Emu8086 : Dentro de la ventana de FLAGS, coloca en la casilla SF el valor 0. Finalmente, contina ejecutando el programa. Qu pasa con el resultado? Hacer un programa en ensamblador : Debe realizar las cuatro operaciones aritmticas bsicas, para dos datos de 8 bits facilitados al comienzo del programa en las variables Op1 y Op2. Los resultados deben dejarse en las variables ResSuma, ResResta, ResMul, CociDiv y RestoDiv.

Esta prctica ha sido desarrollada para conocer y aprender a utilizar varias aplicaciones de ensamblador, como son: Debug incluido en el MS-DOS. Macro Assebler, Linker y CodeView del paquete ASM51 para MS-DOS de Microsoft. Emu8086 para Windows.

ACTIVIDADES DEL TEMA 1

Pgina 4 de 4