Vous êtes sur la page 1sur 4

UAGRM

INF221 SA

2 EX. PARCIAL
PROGRAMACION ENSAMBLADOR

10-11-2006
Sem/Ao: 2/2006

Todos los problemas dados son relativos al microprocesador INTEL8086.


Considerar que una vez cargado los programas en memoria los registros contendrn
inicialmente los siguientes valores: SP= 0040H, BP= 0000H, SI=0000H y DI=0000H.
Todas las respuestas numricas deben ser dadas en HEXADECIMAL.
1.-) Encontrar el valor que contendrn los registros AX, CX despus de la ejecucin
de la instruccin NOP.
.MODEL SMALL
.STACK 64
.DATA
.CODE
INICIO:
MOV AX, @data
MOV DS, AX
XOR AX, AX
MOV CX, 1
suma:
ADD AX, CX
INC CX
INC CX
CMP CX, 11
JNE suma
NOP
MOV AX, 4C00H
INT 21H
END INICIO
2.-) Encontrar el valor que contendrn los registros AX, BX, CX y DX despus de la
ejecucin de la primera y segunda instruccin NOP.
.MODEL SMALL
.STACK 64
.DATA
letra DB 'S'
tabla DB '0123456789ABCDEF'
.CODE
inicio:
MOV AX, @data
MOV DS, AX
XOR AX, AX
MOV BX, 0
MOV BL, letra
MOV CL, 4
SHR BL, CL
MOV DL, tabla[BX]
NOP
;primer NOP
MOV BL, letra
AND BL, 00001111B
MOV AL, tabla[BX]
NOP
;segundo NOP

MOV AX, 4C00H


INT 21H
END inicio
3.-) Para el siguiente programa:
.MODEL SMALL
.STACK 64
.DATA
Datos DB 21H, 1FH, 00H, 45H, 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.
4.-) Encontrar el valor que contendrn los registros AX y SI despus de la ejecucin
de la instruccin NOP.
.MODEL SMALL
.STACK 40H
.DATA
texto DB "Ensamblador"
.CODE
INICIO:
MOV AX, @data
MOV DS, AX
MOV ES, AX
MOV SI, OFFSET texto
ADD SI, 03H
CLD
MOV CX, 4
REP LODSW

NOP
MOV AX, 4C00H
INT 21H
END INICIO
5.-) 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
19
20
21
22
23
24
25
26
27
28
29
30
31

0000
0000
0000
0000
0000
0000
0003
0005
0008
000B
000E
000F
0010
0011
0014
0017
0018
001B
001D
001D
001E
0020
0023
0026
0029
002B
002D
002F
0030
0031

.MODEL SMALL
.STACK 64
.DATA
.CODE
inicio:
B8 0000s
8E D8
B8 000A
BB 0014
B9 0003
50
53
51
E8 0009
83 C4 06
90
B8 4C00
CD 21
55
8B EC
8B 46 08
8B 5E 06
8B 4E 04
03 C3
2B C1
8B D0
5D
C3

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
sub1 PROC
push bp
mov bp, sp
mov ax, [bp+8]
mov bx, [bp+6]
mov cx, [bp+4]
add ax, bx
sub ax, 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.
6.-) Escribir un programa a fin de evaluar el polinomio:
y = a.x ^2 + b.x
Considerar para el programa los siguientes valores:
a= - 3, b= 4, x= 2
Los cuales debern estar definidos a nivel de byte.
Recordar que todas las respuestas deben ser dadas en HEXADECIMAL.
Corrado Vallet

Vous aimerez peut-être aussi