Академический Документы
Профессиональный Документы
Культура Документы
PRACTICA # 03
MASM y EMU8086
Suma de enteros de 16 bits
Aritmtica ASCII
Aritmtica BCD
Solucin:
*********************************************************************
Realice 5 operaciones de suma de 16 bit
*******************************************
EJERCICIO 2: EL PROGRAMA STRING HI
*******************************************
ASSUME CS:CODE,DS:DATA
DATA SEGMENT
MESSAGE DB "Hi All !!!$"
DATA ENDS
CODE SEGMENT
START:MOV AX,DATA
MOV DS,AX
MOV AH,9 ; DOS FUNCTION #9
MOV DX,OFFSET MESSAGE ; OFFSET OF THE STRING
INT 21H ; DISPLAY IT
MOV Ah,4CH
INT 21H
CODE ENDS
END START
*****************************************************************
EMU8086
*****************************************************************
Esto lleva a memoria el archivo ejecutable .EXE para su correspondiente anlisis como
se puede apreciar en la siguiente foto.
Emu8086 muestra una ventana de cdigo, una ventana de comandos, una ventana de
memoria 1 y una ventana de registros. Si no aparecen todas las ventanas deseadas use el
men de la pestaa Windows y habilite la ventana requerida.
*********************************************************************
SUMA DE ENTEROS DE 16 BITS.
**********************************************************************
EJERCICIO # 01: Edite P1.ASM y luego ensamble con MAKE16 P1. Las lneas de
cdigo de P1 son:
TITLE Suma de cuatro nmeros enteros residentes en memoria.
.MODEL SMALL
.STACK 200
.DATA ; segmento de datos
ARREGLO DW 1234, 5678,9876, 5432, 1023, 4567
CNT DW 4
STOTAL DW ?
.CODE ; segmento de cdigo
MOV AX, @DATA
MOV DS, AX
MOV CX, CNT
MOV BX, OFFSET ARREGLO
MOV AX, 0
OTRO: ADD AX, WORD PTR [BX]
INC BX
INC BX
DEC CX
JNZ OTRO
MOV STOTAL, AX
MOV AX, 4C00H
INT 21H
END; Fin del programa fuente.
.
EJERCICIO # 03: Cargar P1.EXE en EMU8086 para su anlisis.
Con F10 ejecute paso a paso y conteste las preguntas.
1. Cul es la direccin lgica inicial de ARREGLO?
DW 1234, 5678,9876, 5432, 1023, 4567
07100: 44 068 D
2. Cul es la direccin lgica inicial de CNT?
DW 4
07101: 11 017 ADC[BP+SI], SP
07102: 22 034
3. Durante la ejecucin del programa con qu valor se carg el registro DS?
20CC
4. Inicialmente con qu valor se carga BX?
0000
5. Este valor en BX qu representa?
Valor base para un direccionamiento indirecto.
6. Visualice luego escriba el cdigo de mquina de MOV STOTAL, AX.
MOV [0000Eh],AX
7. Cul es el modo de direccionamiento asociado con el operando destino en la
instruccin MOV STOTAL, AX?
Directo
MOV STOTAL DW es un doubl Word
8. Visualice luego escriba el cdigo de mquina de MOV AX, WORD PTR [BX].
ADD AX,[BX]
9. Cul es el efecto despus de la ejecucin de MOV AX, 4C00H e INT 21H?
Se carga a AX el valor de 4C00 y con INT 21H CS toma el valor de F400 IP=200
SP=00C2 CIERRA TODOS LOS ARCHIVOS Y CIERRA EL PROGRAMA.
10. Incluya en su reporte el archivo P1.ASM.
*******************************************************************
ARITMETICA ASCII.
*******************************************************************
EJERCICIO # 04: Edite P2.ASM cuyo listado es el siguiente:
.MODEL SMALL
.STACK
.DATA
OPERANDO1 DB 39h ; 39h codigo ascii del 9 decimal
OPERANDO2 DB 39h
RESULTADOASCII DB 2 DUP (?) ;reserva dos byte para el resultado
.CODE
MOV AX, @DATA ;indica donde estan los datos que se van a operar
MOV DS, AX
MOV AX, 0
MOV AL, OPERANDO1
ADD AL, OPERANDO2
AAA ; ajuste ascii despus de sumar 2 bytes ascii
ADD AX, 3030H
MOV RESULTADOASCII, AH
MOV RESULTADOASCII+1, AL
MOV AX, 4C00H
INT 21H
END
1. Ensamble con MASM.
2. Cargar P2.exe en EMU8086.
3. Corra el programa paso a paso hasta antes de ejecutar la instruccin de ajuste
AAA, observe el estado de
AX = 0072
AF =
4. Ejecute la instruccin de ajuste y observe el estado de:
AX = 0108
CF =
AF =
5. Ejecute todo el programa y observe el contenido de la variable:
resultadoascii = &
6. Modifique el programa anterior poniendo como operandos los nmeros 34h y
32h.
7. Repita los pasos anteriores del 1 al 5 y describa las diferencias en los estados
del acumulador AX, banderas AF y CF y de la variable resultadoascii.
AF: Bandera auxiliar. Indica si hay necesidad de ajuste en las operaciones
aritmticas con nmeros BCD.
CF: Bandera de acareo.
Corra el programa paso a paso hasta antes de ejecutar la instruccin de
ajuste AAA, observe el estado de
AX = 0066
AF =
Ejecute la instruccin de ajuste y observe el estado de:
AX = 0006
CF =
AF =
Ejecute todo el programa y observe el contenido de la variable:
resultadoascii =
8. Para qu se realiza la instruccin ADD AX, 3030h?
El valor de 3030h se acumula con el valor actual de AX=0006 quedando como resultado
AX =3036h
9. En qu formato de decimal (empaquetado o no empaquetado) se obtiene el
resultado, despus del ajuste AAA en AX?
ARITMETICA BCD.
EJERCICIO # 05: Edite P3.ASM cuyo listado es el siguiente:
.MODEL SMALL
.STACK
.DATA
OPERANDO1 DB 95h; dos digitos BCD el 9 y el 5
OPERANDO2 DB 98h; dos digitos BCD el 9 y el 8
RESULTADOBCD DW 0
.CODE
MOV AX, @DATA ;indica donde estan los datos que se van a operar
MOV DS, AX
MOV AH, 00
MOV AL, OPERANDO1
MOV BL, OPERANDO2
ADD AL, BL
DAA ; ajuste decimal despus de sumar dos dgitos BCD
ADC AH, 00
MOV resultadoBCD, AX
MOV AX, 4C00H
INT 21H
END