Está en la página 1de 4

UAGRM

2007
INF221 SA
1/2007

2 EX. PARCIAL
LENGUAJE ENSAMBLADOR

01-06Sem/Ao:

Todos los problemas relativos al microprocesador INTEL8086.


Considerar que una vez cargado los programas en memoria los registros contendrn
inicialmente los siguientes valores: BX= 0000H, CX=0000H, DX=0000H, SP= 0040H,
BP= 0000H, SI=0000H, DI=0000H y AX=cualquier valor.
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:

suma:

MOV AX, @data


MOV DS, AX
XOR AX, AX
MOV CX, 2
ADD AX, CX
INC CX
CMP CX, 8
JNE suma
NOP
MOV AX, 4C00H
INT 21H

END inicio
2.-) Encontrar el valor que contendrn los registros: AX, SI, CX y DX despus de la
ejecucin de la instruccin NOP.
.MODEL SMALL
.STACK 64
.DATA
array1 DB 5, 4, 3, 2, 1
.CODE
inicio:
MOV AX, @data
MOV DS, AX
MOV SI, OFFSET array1
MOV DX, 0
MOV AH, 0
MOV CX, 5
aqui:
MOV AL, [SI]
ADD DX, AX
INC SI
LOOP aqui
NOP
MOV AX, 4C00H
INT 21H
END inicio

3.-) Para el siguiente programa:


.MODEL SMALL
.STACK 64
.DATA
datos DB 12H, 3AH, 00H, 37H, 0ABH, 0CDH
.CODE
Inicio:
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
END inicio
a) Despus de la ejecucin de la instruccin: CMP AX, CX indicar cual es el estado
de las banderas: C, Z, S y O.
b) Encontrar el valor que contendrn los registros AX, BX, CX y DX despus de la
ejecucin de la instruccin NOP.
c) Mostrar los valores de los primeros 6 bytes del segmento de datos, despus de la
ejecucin del programa.
4.-) Encontrar el valor que contendrn los registros AX y BX despus de la ejecucin
de a) la primera instruccin NOP y b) la segunda instruccin NOP.
.MODEL SMALL
.STACK 64
.DATA
byte1 DB 11H
byte2 DB 5H
.CODE
inicio:
MOV AX, @data
MOV DS, AX
XOR AH, AH
MOV AL, byte1
MOV BH, byte2
MUL BH
NOP
XOR AH, AH
MOV AL, BYTE1
DIV BYTE2
NOP
MOV AX,4C00H
INT 21H

;primera NOP

;segunda NOP

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
32

0000
0000
0000
0000
0000
0000
0003
0005
0008
000B
000E
000F
0010
0011
0014
0017
0018
001B
001D
001D
001E
0020
0021
0024
0027
002A
002C
002E
0030
0031
0032

B8 0000S
8E D8
B8 0008
BB 0014
B9 0003
50
53
51
E8 0009
83 C4 06
90
B8 4C00
CD 21
55
8B EC
90
8B 46 08
8B 5E 06
8B 4E 04
03 C3
2B C1
8B D0
5D
C3

.MODEL SMALL
.STACK 64
.DATA
.CODE
INICIO:
MOV AX, @DATA
MOV DS, AX
MOV AX, 8
MOV BX, 20
MOV CX, 3
PUSH AX
PUSH BX
PUSH CX
CALL sub1
ADD SP, 6
NOP ; SEGUNDA NOP
MOV AX, 4C00H
INT 21H
sub1 PROC
PUSH BP
MOV BP, SP
NOP ; PRIMERA NOP
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 despus de la ejecucin de la primera instruccin NOP.
b) Mostrar ahora el contenido del rea de stack (pila) de la memoria y de los
registros AX, BX, CX, DX, SP y BP despus de la ejecucin de la segunda
instruccin NOP.
Recordar que todas las respuestas deben ser dadas en HEXADECIMAL.
Corrado Vallet

También podría gustarte