Вы находитесь на странице: 1из 4

UAGRM

INF221 SA

2 EX. PARCIAL
LENGUAJE ENSAMBLADOR

05-08-2005
Sem/Ao: 1/2005

Tdos los problemas dados son programas en ensamblador escritos para


el microprocesador INTEL8086.
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) Despus de la ejecucin de la instruccin: CMP AX, CX , indicar
cual es el estado de las banderas: C, Z, S, y O.
b) Que bandera(s) y cul es la(s) condicin(es) sobre la(s) misma(s) a
fin de que se ejecute la instruccin de salto JB etiqueta1.
c) Encontrar el valor que contendrn los registros AX, BX, CX y DX
despus de la ejecucin de la instruccin NOP.
d) Mostrar los valores de los bytes en el segmento de datos, despus
de la ejecucin del programa (en hexadecimal).
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

0000
0000
0000
0000
0002
0004
0000
0000
0003
0005
0008
0009
000C

14

000D

004B
0021
B8
8E
B8
50
B8
50

0000s
D8
0000r
0002r

E8 0006

.MODEL SMALL
.STACK 64
.DATA
dato1 DW 75
dato2 DW 33
.CODE
INICIO PROC FAR
MOV AX, @data
MOV DS, AX
MOV AX, OFFSET dato1
PUSH AX
MOV AX, OFFSET dato2
PUSH AX
CALL subrutina

15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32

0010
0011
0014

90
B8 4C00
CD 21

0016
0016
0017
0019
001C
001E
0021
0023
0025
0026
0029

55
8B
8B
8B
8B
2B
8B
5D
C2

EC
5E 04
07
5E 06
07
E5
0004

0029

NOP
MOV AX, 4C00H
INT 21H
subrutina PROC
PUSH BP
MOV BP,SP
MOV BX,[BP + 4]
MOV AX,[BX]
MOV BX,[BP + 6]
SUB AX,[BX]
MOV SP,BP
POP BP
RET 4
subrutina ENDP
INICIO ENDP
END INICIO

a) Mostrar el contenido del rea de stack (pila) de la memoria y de


los registros SP y BP inmediatamente antes y despus de
ejecutarse la instruccin de llamada a la subrutina: CALL subrutina.
b) Mostrar ahora el contenido (en hexadecimal) 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 4.
c) Encontrar el valor que contendrn los registros AX, BX, SP y BP
despus de la ejecucin de la instruccin NOP.
Considerar que una vez cargado el programa en memoria los registros SP
y BP tienen inicialmente los siguientes valores: SP= 0040H y BP=
0000H.
3.-) Para el siguiente programa:
.MODEL SMALL
.STACK 64
.DATA
lista DW 101H, 202H, 303H, 404H, 505H
.CODE
INICIO:
MOV AX, @data
MOV DS, AX
MOV CX, 5
MOV SP, 11FAH
MOV BX, OFFSET lista
ADD BX, 8
etiqueta:
MOV AX, [BX]
PUSH AX
DEC BX
DEC BX
DEC CX
JNZ etiqueta
NOP
MOV AX,4C00H
INT 21H
END INICIO
a) Mostrar el contenido del rea de stack (pila) de la memoria
despus de la ejecucin de la instruccin NOP.
b) Encontrar el valor que contendrn los registros AX, BX, CX y SP
despus de la ejecucin de la instruccin NOP.

Considerar que una vez cargado el programa en memoria los registros SP


y BP tienen inicialmente los siguientes valores: SP= 0040H y BP=
0000H.
4.-) Encontrar el valor que contendrn los registros: AX, BX, CX y DX
despus de la ejecucin de la instruccin NOP.
.MODEL SMALL
.STACK 64
.DATA
array1 DB 5, 4, 3, 2, 1
array2 DW 5, 4, 3, 2, 1
.CODE
INICIO:
MOV AX, @data
MOV DS, AX
MOV BX, OFFSET array1
MOV DX, 0
MOV AH, 0
MOV CX, 5
lp:
MOV AL, [BX]
ADD DX, AX
INC BX
LOOP lp
NOP
MOV AX, 4C00H
INT 21H
END INICIO
5.-) Encontrar el valor que contendrn los registros: AX, CX, SI y DI
despus de la ejecucin de la instruccin NOP.
.MODEL SMALL
.STACK 64H
.DATA
str1 DB "Examen Parcial"
.CODE
INICIO
PROC FAR
MOV AX, @data
MOV DS, AX
MOV ES, AX
CLD
MOV CX, 14
LEA DI, str1
MOV AL, 50H
REPNE
SCASB
JZ etiqueta1
MOV AL, 00H
JMP etiqueta2
etiqueta1:
MOV AL, 0FFH
DEC DI
etiqueta2:
NOP
MOV AX, 4C00H
INT 21H
INICIO
ENDP
END INICIO

Corrado Vallet

Вам также может понравиться