You are on page 1of 3

UAGRM

INF221 SA

2 EX. PARCIAL
PROGRAMACION ENSAMBLADOR

7-06-2006
Sem/Ao:1/2006

Todos son programas en ensamblador escritos para el INTEL8086.


Considerar que una vez cargado los programas en memoria los registros contengan
inicialmente los siguientes valores: SP= 0040H, BP= 0000H, SI=0000H y DI=0000H.
Todas las respuestas numricas deben ser dadas en HEXADECIMAL.
1.-) Para el siguiente programa:
.MODEL SMALL
.STACK 64
.DATA
datos DB 13H, 3AH, 00H, 57H, 0ABH, 0CDH
.CODE
inicio PROC FAR
MOV AX, @data
MOV DS, AX
MOV BX, OFFSET datos
MOV AX, [BX]
MOV CX, [BX+2]
CMP AX, CX
JB etiqueta1
SUB AX, CX
MOV DX, AX
JMP SHORT etiqueta2
etiqueta1:
SUB CX, AX
MOV DX, CX
etiqueta2:
MOV [BX+4], DX
NOP
MOV AX, 4C00H
INT 21H
inicio ENDP
END INICIO
a) Encontrar el valor que contendrn los registros AX, BX, CX y DX despus de la ejecucin
de la instruccin NOP.
b) Mostrar los valores que contendr en memoria la variable definida como datos, despus
de la ejecucin de la instruccin NOP.
2.-) El siguiente es el listado (. LST) de un programa en ensamblador:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

0000
0000
0000
0000
0000
0000
0003
0005
0008
000B
000E
000F
0010
0011
0014
0017
0018
001B

.MODEL SMALL
.STACK 64
.DATA
.CODE
B8 0000s
8E D8
B8 000A
BB 0014
B9 0003
50
53
51
E8 0009
83 C4 06
90
B8 4C00
CD 21

inicio:
MOV AX, @data
MOV DS, AX
mov ax,10
mov bx,20
mov cx,3
push ax
push bx
push cx
call sub1
add sp, 6
NOP
MOV AX, 4C00H
INT 21H

19
20
21
22
23
24
25
26
27
28
29
30
31

001D
001D
001E
0020
0023
0026
0029
002B
002D
002F
0030
0031

55
8B EC
8B 46 08
8B 5E 06
8B 4E 04
03 C3
F7 F1
8B D0
5D
C3

sub1 PROC
push bp
mov bp,sp
mov ax,[bp+8]
mov bx,[bp+6]
mov cx,[bp+4]
add ax,bx
div cx
mov dx,ax
pop bp
ret
sub1 ENDP
END inicio

a) Mostrar el contenido del rea de stack (pila) de la memoria y de los registros SP y BP


inmediatamente despus, de ejecutarse la instruccin de llamada a la subrutina: call sub1.
b) Mostrar ahora el contenido del rea de stack (pila) de la memoria y de los registros SP y
BP despus de ejecutarse la instruccin de retorno de la subrutina: ret.
c) Encontrar el valor que contendrn los registros AX, BX, SP y BP despus de la ejecucin de
la instruccin NOP.
3.-) Para el siguiente programa:

dato1
dato2
dato3

.MODEL SMALL
.STACK 64
.DATA
DB
"NJPW"
DW
4
DB
"GDUX"
.CODE

inicio:
MOV AX, @data
MOV DS, AX
MOV CX, dato2
MOV SI, 0
L1:
MOV AX, WORD PTR dato1[SI]
PUSH AX
INC SI
LOOP L1
NOP ;;;; primer NOP (1er NOP)
MOV CX, dato2
MOV SI, 0
L2:
POP AX
MOV dato3[si], AL
INC SI
LOOP L2
NOP ;;;; segundo NOP (2do NOP)
MOV AX, 4C00H
INT 21H
END inicio
a) Mostrar el contenido del rea de stack (pila) de la memoria y de los registros AX, SI y SP,
despus de ejecutada la primera instruccin de NOP (1ra NOP).
b) Mostrar ahora el contenido de la misma rea de stack (pila) de la memoria y de los
registros AX, SI y SP, despus de ejecutarse la segunda instruccin NOP (2da NOP).
c) Mostrar los valores de las variables dato1, dato2 y dato3 en el segmento de datos, despus
que termina la ejecucin del programa.
4.-) Encontrar el valor que contendrn los registros AX, CX y DI despus de la ejecucin de la
instruccin NOP.

MODEL SMALL
.STACK 64H
.DATA
str1
DB 'KDHERTPSHCBT'
.CODE
inicio PROC FAR
MOV AX, @data
MOV DS, AX
MOV ES, AX
CLD
XOR AX, AX
MOV CX, 10
LEA DI, str1
MOV AL, 52H
REPNE SCASB
JZ L1
L2:
MOV AL, 99H
JMP L3
L1:
MOV AL, 52H
DEC DI
L3:
NOP
MOV AX, 4C00H
INT 21H
inicio ENDP
END inicio
5.-) Escribir un programa a fin de evaluar el polinomio:
y = a.x2 + b.x + c
Considerar para el programa los siguientes valores:
a= - 4, b=3, c= -2, x= 2
Los cuales debern estar definidos a nivel de byte.
Recordar que todas las respuestas deben ser dadas en HEXADECIMAL.
Corrado Vallet

You might also like