Está en la página 1de 6

EJEMPLO 1(MOVIMIENTOS INFORMACION:

Genere las lineas de programa a bajo nivel necesarias para leer la información de memoria que se
especifica abajo hacia los registros también citados

FIGURA No. 1

CS: 3000
30000 DS=3000

30045
DX
30046

300FF

DATA SEGMENT CODE SEGMENT

Alternativa 1: (16 bits)

MOV DX,[0045] MOV DX, CS: [0045]

Alternativa 2: (16 bits)

MOV DI,0045 MOV SI,0045


MOV DX, [DI] MOV DX, CS: [SI]

Alternativa 3: (plataforma de 8 bits)

MOV DL, [0045]


MOV DH,[0046]

EJERCICIO 1:
Diseñar las lineas a bajo nivel de programación para transferir la información existente en la celda
de memoria (arriba citada) 30046 hacia la celda 30045

MOV AL,[0046]
MOV [0045],AL

MOV SI,0046
MOV DI,0045
MOV AL,[SI]
MOV [DI],AL
EJERCICIO 2: (SUMAS)

Observe la figura que se muestra arriba y proceda a sumar el contenido de la posicion de memoria
30045 con el contenido de la posicion de memoria 30046, asuma que no genero acarreo “1” y
almacene el resultado en la posicion de memoria 300FF

Alternativa No. 1:

MOV AL, [0045]


MOV AH, [0046]
ADD AL,AH
MOV [00FF],AL

Alternativa No. 2:

MOV DI,0045
MOV AL,[DI]
INC DI
MOV AH,[DI]
ADD AH,AL
MOV [00FF],AH
EJEMPLO No. 3 ( INSTRUCCIONES DE SALTO, MOVIMIENTO DE INFORMACION E INSTRUCCIONES
ARITMETICAS)

Diseñar un programa a bajo nivel que sea capaz de verificar si el dato tamaño byte ubicado en la
posicion 30045 el mas grande o mas pequeño que el dato también byte ubicado en la celda con
dirección 30046 (ver figura No. 1) si el dato de la dirección 30045 el mas grande que el de la
30046 entonces escribir en el registro “DL” el dato “00h”, caso contrario escribir e dato “FFh”

SI: [30045] > [30046] --> DL  00 pero si [30045] < o = a [30046] → DL FFh

NOTA: considere números sin signo

DS= 3000 disp e ( 0000,00FF) para un segmento de 256 bytes

Alternativa 1:

MOV BL, [0045]


MOV BH, [0046]
CMP BH,BL
JBE “1”
MOV DL,00
FIN
1 --> MOV DL,FFh
FIN

Alternativa 2:

MOV BL,[0045]
CMP BL,[0046]
JA → “1”
MOV DL,FFh
FIN
1→ MOV DL,00h
FIN
EJEMPLO 4: (INSTRUCCIONES ARITMETICAS, SALTOS Y MOVIMIENTO INFORMACION)
Escribir las lineas en lenguaje a bajo nivel, a manera de determinar si el dato tamaño byte,
localizado en la celda 30060h es negativo o positivo, asi:

• Si el número es positivo → AX  0000h


• Si el número es negativo → AX  0001h

DS = 3000 disp e (0000,00FF) segmento de 256 bytes

Números de 1 byte visto en binario: 0000 0000


+
0111 1111
1000 0000
-
1111 1111

Alternativa 1:

MOV AH, [0060]


ADD AH,00h
JS → “1”
MOV AX,0000h
FIN
1→ MOV AX,0001h
FIN

Alternativa 2:

MOV AL, [0060]


ADD AL,80h 80h = 1000 0000
JC → “1”
MOV AX,0000h
FIN
1→ MOV AX,0001h
FIN
EJEMPLO No. 5 ( SALTOS, MOVIMIENTO DE INFO, INSTR. ARITMETICAS)
Escriba las lineas necesarias para trasferir la información existente en el rango de memoria de la
30000h a la 30020 hacia el rango de la 30040 en adelante. Dejando el dato de la 30000h en la
30040h

NOTA: ambos segmentos están inscritos en un solo segmento de dato con DS = 3000 y disp e
(0000h, 00FFh) segmento de 256 bytes

30000h 30040h

30020h

Alternativa 1:

MOV SI, 0000


MOV DI,0040
MOV CL,20
EJEMPLO: (SUMAS + SALTOS)
Observe la figura adjunta y proceda a diseñar un programa para sumar dos números “X” & “Y” de
32 bits cada uno, instalados en memoria tal y como se observa, el resultado almacénelo también
en memoria como se pide

Segmento de dato DS= 4000 & SI e (0000, FFFF)

40000 LSBY

LSBY

LSBY
RESULTADO

4000C MSBY = C

EJEMPLO DE COMO SE VERIA UNA SUMA DE “X & Y”

CF=1 Msby lsby


X= 56 78 CA 00

Y= FF 00 24 B2 +
____________________________________________________
R= 01 55 78 EE B2
MSBY LSBY

También podría gustarte