You are on page 1of 7

1.

- OBJETIVO: Ralizar programas con en el ensamblador MASM, el enlazdor


LINK (para generar programas .EXE) y utilizar el depurador DEBUG para
rastrear la secuencia del programa. Generacion de un programa con
extensin .COM.
2.- INFORME:
1. Ensamblar el siguiente programa que viene escrito en codigo
fuente, posteriormente linkearlos y ejecutarlos con el DEBUG.
a) PROGRAMA EN EL EMULADOR:
STACK SEGMENT STACK
DW 64 DUP(?)
STACK ENDS
DATA SEGMENT
SALUDO DB "HOLA MUNDO!!",13,10,"$"
DATA ENDS
CODE SEGMENT
ASSUME:CS:CODE,DS:DATA,SS:STACK
INICIO:
MOV AX,DATA
MOV DS,AX
MOV DX,OFFSET SALUDO
MOV AH,09H
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END INICIO
b) PROGRAMA EN EL DEBUG:
C:\Documents and Settings\Victor>DEBUG D:PREG1.EXE
-U
0D26:0000 B8250D
MOV AX,0D25
0D26:0003 8ED8
MOV DS,AX
0D26:0005 BA0000
MOV DX,0000
0D26:0008 B409
MOV AH,09
0D26:000A CD21
INT 21
0D26:000C B44C
MOV AH,4C
0D26:000E CD21
INT 21
0D26:0010 7461
JZ
0073
0D26:0012 6C
DB
6C
0D26:0013 61
DB
61
0D26:0014 64
DB
64
0D26:0015 6F
DB
6F
0D26:0016 0D0A20
OR
AX,200A
0D26:0019 4C
DEC SP
0D26:001A 61
DB
61
0D26:001B 20756E
AND [DI+6E],DH

0D26:001E 69
0D26:001F 64
-g
HOLA MUNDO!!

DB
DB

69
64

El programa ha terminado de forma normal


2. Que banderas son afectadas y que contendrian en los siguientes
sucesos?:
a) Ocurri un desbordamiento:
RESPUESTA: Afecta a OF y contiene un (1)
b) Un resultado es negativo:
RESPUESTA: Afecta a SF y contiene un (1)
c) Un resultado es cero:
RESPUESTA: Afecta a ZF y contiene un (1)
d) El procesamiento esta en modo de avance paso a paso:
RESPUESTA: Afecta a TF y contiene un (1)
e) Una transferencia de cadena se hace de derecha a izquierda:
RESPUESTA: Afecta a DF y contiene un (1)
3. Cual es la diferencia entre la codificacion de un operando PROC
con FAR y con NEAR?:
RESPUESTA: El primer PROC (principal) debe ser FAR por que el DOS
enlaza a su direccin de ejecucin. Un atributo NEAR significa que la
direccin esta dentro de este segmento particular.
4. En un programa .EXE, A20 llama a B20, B20 llama a C20 y C20 llama
a D20. Cmo resultado de estas llamadas cuantas direcciones
contiene la pila?:
RESPUESTA: Tres (una para cada CALL).
5. Codifique una rutina usando LOOP que calcule la sucesion de
Fibonacci: 1, 1, 2, 3, 5, 8, 13 salvo por los dos primeros numeros
en la sucesion cada numero es la suma de los dos numeros que le
preseden. Establezca un limite de 12 vueltas. Ensamblela, enlacela
y utilice DEBUG para rastrear la rutina:

RESPUESTA:

Programa en el emulador:
STACK SEGMENT STACK
DW 64 DUP(?)
STACK ENDS
DATA SEGMENT
RES DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK
INICIO:
MOV AX,DATA
MOV DS,AX
MOV AX,00
MOV BX,01
MOV CX,12
MOV DX,00
B20 PROC NEAR
ADD AX,BX
MOV BX,DX
MOV DX,AX
LOOP B20
MOV AH,4CH
INT 21H
CODE ENDS
B20 ENDP
END INICIO

Programa en el DEBUG
C:\DOCUME~1\Victor>debug D:figonasi.exe
-u
0D26:0000 B8250D
MOV AX,0D25
0D26:0003 8ED8
MOV DS,AX
0D26:0005 B80000
MOV AX,0000
0D26:0008 BB0100
MOV BX,0001
0D26:000B B90C00
MOV CX,000C
0D26:000E BA0000
MOV DX,0000
0D26:0011 03C3
ADD AX,BX
0D26:0013 8BDA
MOV BX,DX
0D26:0015 8BD0
MOV DX,AX
0D26:0017 E2F8
LOOP 0011
0D26:0019 B44C
MOV AH,4C
0D26:001B CD21
INT 21

0D26:001D 0200
ADD AL,[BX+SI]
0D26:001F B8004C
MOV AX,4C00
Como son 12 iteraciones el la serie llegara hasta un valor de 90H.

6. Cual es el tamao de un programa .COM:


RESPUESTA: El tamao mximo es de 64K.
7. Para un programa fuente que sera convertido a formato .COM Qu
segmentos puede definir?:
RESPUSTA: CODESG

SEGMENT PARA CODE

8. Codifique, ensamble enlace y utilice DEBUG para probar el


siguiente programa:

Defina elementos Byte llamados BYTE1 Y BITE2 (con cualquier


valor una palabra WORD3 con 0)
Mueva el contenido de Byte1 al AL
Sume el contenido de Byte2 al AL
Mueva el valor inmediato 37 al BL
Intercambie los contenidos del AL y BL
Multiplique el contenido de BL por el de AL (MUL BL)
Almacene el producto en AX y envielo a WORD3

RESPUESTA: Programa en el emulador:


STACK SEGMENT STACK
WORD3 DW 64 DUP(?)
STACK ENDS
DATA SEGMENT
B1 DB 05H
B2 DB 02H
W3 DW ?
W4 DB ?
DATA ENDS
CODE SEGMENT
ASSUME SS:STACK,DS:DATA,CS:CODE
INICIO:
MOV AX,DATA
MOV DS,AX
MOV AX,0000
MOV AL,B1
ADD AL,B2
MOV BL,37
MOV W4,BL

MOV BL,AL
MOV AL,W4
MUL BL
MOV W3,AX
MOV AX,4C00H
INT 21
CODE ENDS
END INICIO
9. Corrija el programa anterior para formato .COM ensamblelo
enlacelo y ejecutelo con DEBUG:
C:\DOCUME~1\Victor>debug D:preg11.com
-U
0D26:0000 B8250D
MOV AX,0D25
0D26:0003 8ED8
MOV DS,AX
0D26:0005 B80000
MOV AX,0000
0D26:0008 A00000
MOV AL,[0000]
0D26:000B 02060100
ADD AL,[0001]
0D26:000F B325
MOV BL,25
0D26:0011 881E0400
MOV [0004],BL
0D26:0015 8AD8
MOV BL,AL
0D26:0017 A00400
MOV AL,[0004]
0D26:001A F6E3
MUL BL
0D26:001C A30200
MOV [0002],AX
0D26:001F B8004C
MOV AX,4C00
-R
AX=0000 BX=0000 CX=00B4 DX=0000 SP=0080 BP=0000 SI=0000
DI=0000
DS=0D0D ES=0D0D SS=0D1D CS=0D26 IP=0000 NV UP EI PL NZ NA PO
NC
0D26:0000 B8250D
MOV AX,0D25
-T
AX=0D25 BX=0000 CX=00B4 DX=0000 SP=0080 BP=0000 SI=0000
DI=0000
DS=0D0D ES=0D0D SS=0D1D CS=0D26 IP=0003 NV UP EI PL NZ NA PO
NC
0D26:0003 8ED8
MOV DS,AX
-T
AX=0D25 BX=0000 CX=00B4 DX=0000 SP=0080 BP=0000 SI=0000
DI=0000
DS=0D25 ES=0D0D SS=0D1D CS=0D26 IP=0005 NV UP EI PL NZ NA PO
NC
0D26:0005 B80000
MOV AX,0000
-T
AX=0000
DI=0000

BX=0000

CX=00B4

DX=0000

SP=0080

BP=0000

SI=0000

DS=0D25 ES=0D0D SS=0D1D CS=0D26 IP=0008 NV UP EI PL NZ NA PO


NC
0D26:0008 A00000
MOV AL,[0000]
DS:0000=05
-T
AX=0005 BX=0000 CX=00B4 DX=0000 SP=0080 BP=0000 SI=0000
DI=0000
DS=0D25 ES=0D0D SS=0D1D CS=0D26 IP=000B NV UP EI PL NZ NA PO
NC
0D26:000B 02060100
ADD AL,[0001]
DS:0001=02
-T
AX=0007 BX=0000 CX=00B4 DX=0000 SP=0080 BP=0000 SI=0000
DI=0000
DS=0D25 ES=0D0D SS=0D1D CS=0D26 IP=000F NV UP EI PL NZ NA PO
NC
0D26:000F B325
MOV BL,25
-T
AX=0007 BX=0025 CX=00B4 DX=0000 SP=0080 BP=0000 SI=0000
DI=0000
DS=0D25 ES=0D0D SS=0D1D CS=0D26 IP=0011 NV UP EI PL NZ NA PO
NC
0D26:0011 881E0400
MOV [0004],BL
DS:0004=00
-T
AX=0007 BX=0025 CX=00B4 DX=0000 SP=0080 BP=0000 SI=0000
DI=0000
DS=0D25 ES=0D0D SS=0D1D CS=0D26 IP=0015 NV UP EI PL NZ NA PO
NC
0D26:0015 8AD8
MOV BL,AL
-T
AX=0007 BX=0007 CX=00B4 DX=0000 SP=0080 BP=0000 SI=0000
DI=0000
DS=0D25 ES=0D0D SS=0D1D CS=0D26 IP=0017 NV UP EI PL NZ NA PO
NC
0D26:0017 A00400
MOV AL,[0004]
DS:0004=25
-T
AX=0025 BX=0007 CX=00B4 DX=0000 SP=0080 BP=0000 SI=0000
DI=0000
DS=0D25 ES=0D0D SS=0D1D CS=0D26 IP=001A NV UP EI PL NZ NA PO
NC
0D26:001A F6E3
MUL BL
-T
AX=0103 BX=0007 CX=00B4 DX=0000 SP=0080 BP=0000 SI=0000
DI=0000
DS=0D25 ES=0D0D SS=0D1D CS=0D26 IP=001C OV UP EI PL NZ NA
PO CY
0D26:001C A30200
MOV [0002],AX
DS:0002=0000

-T
AX=0103 BX=0007 CX=00B4 DX=0000 SP=0080 BP=0000 SI=0000
DI=0000
DS=0D25 ES=0D0D SS=0D1D CS=0D26 IP=001F OV UP EI PL NZ NA PO
CY
0D26:001F B8004C
MOV AX,4C00
-D DS:0002
0D25:0000
0D25:0010
0D25:0020
0D25:0030
0D25:0040
0D25:0050
0D25:0060
0D25:0070
0D25:0080

03 01 25 00 00 00-00 00 00 00 00 00 00 00
B8 25 0D 8E D8 B8 00 00-A0 00 00 02 06 01 00 B3
25 88 1E 04 00 8A D8 A0-04 00 F6 E3 A3 02 00 B8
00 4C CD 15 63 74 75 61-6C 20 79 61 20 6E 6F 20
65 73 20 76 A0 6C 69 64-61 21 4E 6F 20 73 65 20
68 61 20 65 6E 63 6F 6E-74 72 61 64 6F 20 6C 61
20 65 74 69 71 75 65 74-61 0D 0A 13 45 72 72 6F
72 20 64 65 20 73 69 6E-74 61 78 69 73 0D 0A 1A
4C 61

You might also like