Está en la página 1de 9

LABORATORIO Nº 03

COTRINA OLIVA, JORGE ANDRÉS


INTRUCCIONES
MOV DL,[BP+DI]

• Esta instrucción toma el valor que se encuentra en


[BP+DI] para moverlo al byte DL, que sería la
parte menos significativa de DX. Entonces, está
instrucción toma el valor que está en la posición
0706(esta posición se obtiene de la suma de
BP=0700 + DI=0006) que sería 20, y le da ese
valor a DL, es por eso que podemos observar que
DX = 0020.
DH DL
MOV AX,[BP+SI]
• En esta instrucción se va a realizar
prácticamente lo mismo que en la anterior,
con la diferencia de que acá se va a tomar 2
bytes, y que AX será ahora quien recibe el
valor que se va a tomar de [BP+SI]. Como
vemos el SI es ahora quien acompaña al BP
entonces el desplazamiento sería
0700(BP=0700 + SI=0000), en esa posición
tenemos el valor 62 que este dato
reemplazaría a la parte menos significativa
de AX, ósea AL, pero la instrucción busca 2
bytes, entonces tomaríamos el valor del
desplazamiento siguiente 0701 que sería 45,
y este valor reemplazaría a AH, por lo que
AX=4562.
AH AL
• Cuando ejecutamos la instrucción MUL, se MUL DL
realizará una multiplicación, en este caso
es de un byte(DL), acá siempre va a
participar de la operación el registro AL y
el registro AX será quien reciba el
resultado de la multiplicación, es decir que
AX perdería su valor original para ser
reemplazado por el valor resultante de
multiplicar DL*AL.
• En esta instrucción observamos que
DX=0020 y AX=4562, la multiplicación
sería 20*62(DL*AL), el cuál tendríamos de
resultado 0C40, por lo tanto, ahora
AX=0C40.
• Lo mismo se realizaría con la instrucción
MUL CH
MUL BX
• En esta instrucción, podemos ver que
se realizará una multiplicación pero
en este caso será de 2 bytes, la
operación ya no se hará con AL, sino
con el registro completo, es decir la
multiplicación sería AX*BX, el
resultado de esta operación se
tendría que almacenar en AX, pero
como el resultado sería un valor de
tipo doble word también participaría
el registro DX, es decir el resultado
completo será contenido por DX junto
con AX.
• Por eso al ejecutar la instrucción
vemos que AX y DX tienen nuevos
valores.
LOOP
• La instrucción LOOP va a realizar un bucle en el
cuál se van a repetir una cierta cantidad de
veces las instrucciones desde una posición
indicada. En este caso tenemos LOOP 022D lo
cuál indica que las instrucciones se volverán a
ejecutar desde la posición 022D y la cantidad
de repeticiones la indica CL que en este caso
sería 03, en está posición se encuentra la
instrucción MOV AL,[BP+SI] la cual va a tomar el
valor que haya en la posición 0700 de la pila
(BP=0700 + SI=0000) y la va a mover al byte
AL. La siguiente línea es un ejemplo de acceso a
memoria de datos, ahí observamos la instrucción
ADD[BX+DI],AL(ósea en la posición 022F) que al
ejecutarla va a sumar el valor que se encuentre
en el byte AL con el valor que se encuentre en la
posición 0606 (BX=0600 + DI=0006). De esta
manera queda grabado un nuevo valor en esta
posición.
LOOP
• Acá podemos observar un INC tanto en SI,
como en DI, y esto pasa porque la
instrucción LOOP se va a ejecutar más de
una vez, entonces las instrucciones que se
volverán a ejecutar, lo harán cambiando la
posición del acceso a memoria, es decir,
cuando se repita las instrucciones ya no
accederán a la posición 0700(posición de
[BP+SI]) y 0606(posición de [BX+DI]) como
se dio anteriormente al ejecutarse por
primera vez, si no que accederán a las
posiciones 0701 y 0607 para realizar las
misma operación pero con diferentes
valores.
LOOP

• A la vez, podemos observar


como es que el contador CL va
disminuyendo, en esta imagen
se puede observar que ya se
encuentra en 00, y esto quiere
decir que ahí finalizó la
instrucción LOOP ya que se
dieron las 3 repeticiones.

También podría gustarte