Vous êtes sur la page 1sur 3

UAGRM

INF221 SA

2 EX. PARCIAL
LENGUAJE ENSAMBLADOR

29-mayo-2009
Sem/Ao: 1/2009

Todos los problemas son programas escritos en lenguaje ensamblador para el


microprocesador INTEL80x86.
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 y las banderas C, Z, S, O, P, A todas en 0
(cero).
Todas las respuestas numricas deben ser dadas en HEXADECIMAL.
1.

(16 PUNTOS) Para el siguiente programa:

.MODEL SMALL
.STACK 64
.DATA
datos DB 21H, 45H, 00H, 1FH, 0ABH, 0CDH
.CODE
inicio:
MOV AX, @data
MOV DS, AX
XOR AX, AX
MOV BX, OFFSET datos
MOV AH, [BX+1]
MOV CL, [BX+3]
CMP AH, CL
JB etiqueta1
SUB CL, AH
MOV DL, AH
JMP SHORT etiqueta2
etiqueta1:
SUB CL, AH
MOV DL, CL
etiqueta2:
MOV [BX+4], DL
NOP
MOV AX, 4C00h
INT 21h
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 el segmento de datos despus de la ejecucin de la
instruccin NOP.
2.-) (18 PUNTOS) Para el siguiente programa:
.MODEL SMALL
.STACK 64
.DATA
tabla DB 'KLMNOP12345'
letra
DB 'S' ; mayscula
numero DB '7'
.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 1 NOP
MOV BL, numero
AND BL, 00001111B
MOV AL, tabla[BX]
NOP
;segundo 2 NOP
MOV AX, 4C00H
INT 21H
END inicio
Encontrar el valor que contendrn los registros AX, BX y DX despus de la ejecucin a) de la
primera instruccin NOP (1ra. NOP) y b) la segunda instruccin NOP (2da. NOP).
3.-) (16 PUNTOS) Encontrar el valor que contendrn los registros AX y BX despus de la
ejecucin de a) la primera instruccin NOP (1ra. NOP) y b) la segunda instruccin NOP (2da.
NOP).

byte1
byte2

.MODEL SMALL
.STACK 64
.DATA
DB 17H
DB 5H
.CODE

inicio:
MOV AX, @data
MOV DS, AX
MOV BH, byte2
XOR AH, AH
MOV AL, byte1
DIV BYTE2
NOP
;primera 1ra NOP
XOR AH, AH
MOV BH, byte2
MOV AL, byte1
MUL BH
NOP
;segunda 2da NOP
MOV AX,4C00H
INT 21H
END inicio
4.-) (25 PUNTOS) A continuacin se presenta el .LST, correspondiente al cdigo de un
programa fuente, tal como aparece despus de ensamblado el mismo:
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
0009
000C
000D
0010
0011
0014

.MODEL SMALL
.STACK 64
.DATA
.CODE
B8 0000s
8E D8
B8 5758
50
B8 5354
50
E8 0006
90
B8 4C00
CD 21

0016
0016 55

inicio:
MOV AX, @data
MOV DS, AX
MOV AX, 'WX'
PUSH
AX
MOV AX, 'ST'
PUSH
AX
CALL subr
NOP
;;2da. NOP
MOV AX, 4C00H
INT 21H
;----------------------------------------------subr PROC
PUSH
BP

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

0017
0019
001A
001D
0020
0023
0026
0028
002A
002C
002D
0030

8B EC
90
8A 5E 07
8A 7E 05
8A 56 06
8A 76 04
2A F3
02 FA
8B E5
5D
C2 0004

MOV BP, SP
NOP
;;1ra NOP
MOV BL, [BP+7]
MOV BH, [BP+5]
MOV DL, [BP+6]
MOV DH, [BP+4]
SUB DH, BL
ADD BH, DL
MOV SP, BP
POP BP
RET 4
subr ENDP
END inicio

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


primera instruccin NOP (1ra. NOP) y el valor del registro SP.
b) Encontrar el valor que contendrn los registros AX, BX, DX y SP despus de la ejecucin
de la segunda instruccin NOP (2da. NOP).
Recordar que una vez cargado el programa en memoria los registros SP y BP tienen
inicialmente los valores: SP= 0040H y BP= 0000H.
5.-) (25 PUNTOS) Escribir un programa en lenguaje ensamblador el cual calcule el rea de un
triangulo (rea A = (B*H) / 2, donde B= base y H= altura). Definir a nivel de word en la
seccin de datos del programa las variables simblicas llamadas: base y altura con los
datos de la base y la altura (considerar nmeros sin signo (SS)) del triangulo cuya rea se
quiere calcular y al final almacenar el resultado del rea calculada en una variable de memoria
simblica llamada area. El programa deber llamar una subrutina y los parmetros de la
base y la altura del triangulo debern pasados por valor a la pila (stack). La subrutina
devolver el resultado del rea calculada en el registro AX.
Recordar que todas las respuestas deben ser dadas en HEXADECIMAL.
Prohibido el uso de celulares, apuntes, libros, calculadoras, dar o recibir ayuda durante el
examen, etc. Tiempo para resolver el examen: 90 minutos.
Buena suerte!!!!!
Corrado Vallet

Vous aimerez peut-être aussi