Está en la página 1de 4

Conversin de Lenguaje Assembler a Cdigo de Mquina

Para convertir un programa escrito en lenguaje Assembler a Cdigo de


Mquina, debemos convertir cada instruccin de lenguaje assembler a
su instruccin equivalente en lenguaje de mquina. En general, el
cdigo de mquina para una instruccin detalla caractersticas como:
la operacin a ejecutar, el operando u operandos a utilizarse, si la
operacin se ejecuta sobre un byte o una palabra, si la operacin
involucra operandos ubicados en registros o un registro y una
localizacin de almacenamiento en memoria, y si uno de los operandos
est en memoria, la forma en que se genera su direccin. Toda esta
informacin est codificada en los bits que integran la instruccin en
cdigo de mquina.

Las instrucciones en cdigo de mquina del 8088 varan en el nmero


de bytes usados para codificarlas. Algunas utilizan un byte, otras dos y
algunas requieren ms, hasta seis. Las instrucciones de un byte
generalmente especifican una operacin simple con un registro o con
un bit de bandera. Ejemplo: CMC (complement carry) es una
instruccin de un byte, cuyo cdigo de mquina es 111101001 = F5H.

La mayora de instrucciones de varios bytes utilizan el formato general


que se muestra a continuacin.

CODIFICACIN EN LENGUAJE DE MQUINA

BYTE
< --- BYTE 1 --- > < --- BYTE 2 --- > < --- --- >
3
LOW DISP/DATA
< -- OPCODE -- > D W MOD REG R/M

BYTE
< --- BYTE 4 --- > < --- BYTE 5 --- > < --- --- >
6
HIGH DISP/DATA LOW DATA HIGH DATA

Figura 1

El BYTE 1 contiene tres tipos de informacin:


Cdigo de operacin, (opcode), de seis bits, especifica la operacin a
ejecutarse: suma, resta, movimiento, etc.

Bit de direccin de registro (D), indica si el operando especificado en


el Byte 2 es fuente o destino. Un 1 lgico indica que el operando es de
destino y un 0 lgico que el operando es fuente.

Bit de tamao de dato (W), un 1 lgico especifica que la operacin se


ejecutar sobre datos de 16 bits y un 0 lgico sobre datos de 8 bits.

El BYTE 2 contiene tres tipos de informacin que permiten conocer el


registro usado para el primer operando y el lugar de almacenamiento
del segundo operando. El segundo operando puede estar tanto en un
registro como en RAM.

Campo de registro, REG, tres bits, identifica el registro para el primer


operando. Este operando fue definido por D en el byte 1, como destino
o fuente. En la siguiente tabla se muestra el cdigo para los registros
del 8088. Para diferenciar si el registro a utilizarse es de 8 o 16 bits se
deber tener en cuenta el valor asignado a W en el byte 1.

REG W=0 W=1


000 AL AX
001 CL CX
010 DL DX
011 BL BX
100 AH SP
101 CH BP
110 DH SI
111 BH DI

Figura 2

El Campo de modo, MOD, de dos bits, y el Campo de


Registro/Memoria, (R/M), de tres bits, en conjunto especifican el
segundo operando con la codificacin mostrada en los dos cuadros que
se muestran a continuacin.
MOD indica si el operando est en un registro o en RAM. El cuadro
indica que para el caso en el que el segundo operando est en un
registro, el campo MOD es siempre 11.

Cdigos para el campo MOD


CODE EXPLICACIN
00 Modo de memoria, sin
desplazamiento *
010 Modo de memoria, 8 bits
seguido de desplazamiento
10 Modo de memoria, 16 bits
seguido de desplazamiento
11 Modo de registro, sin
Desplazamiento
* Excepto cuando R/M = 110.

Figura 3

El campo R / M junto con el valor del bit de W del byte 1 seleccionan el


registro.

Valores de R / M segn el valor de MOD y del operando

MOD = 11 EFECTIVE ADDRESS CALCULATION


R/M W=0 W=1 R/M MOD = 00 MOD = 01 MOD = 10
000 AL AX 000 (BX) + (SI) (BX) + (SI) + D8 (BX) + (SI) + D16
001 CL CX 001 (BX) + (DI) (BX) + (DI) + D8 (BX) + (DI) + D16
010 DL DX 010 (BX) + (SI) (BX) + (SI) + D8 (BX) + (SI) + D16
011 BL BX 011 (BX) + (DI) (BX) + (DI) + D8 (BX) + (DI) + D16
100 AH SP 100 (SI) (SI) + D8 (SI) + D16
101 CH BP 101 (DI) (DI) + D8 (DI) + D16
DIRECT
110 DH SI 110 ADDRESS (BP) + D8 (BP) + D16
111 BH DI 111 (BX) (BX) + D16 (BX) + D16

Figura 4
Ejemplo 1

La instruccin

MOV BL, AL

Indica que el contenido del registro fuente AL debe moverse al


registro destino BL. Utilizando el formato general de la Figura 1 y
asumiendo que el opcode de la operacin mover es 100010, se tiene:

OPCODE = 100010B

El siguiente bit, D, tiene relacin con el registro especificado en el byte


2 por REG, es un bit que especifica si se trata de un operando fuente o
un operando destino.

Si codificamos AL en el campo REG, entonces, D es igual a 0 por ser un


operando fuente. W es 0, por cuanto la instruccin hace referencia a
registros de 8 bits, por lo lo que:

BYTE 1 = 10001000B = 88H

En el byte 2 el operando fuente, el cual es especificado por el campo


REG, es AL. El cdigo correspondiente es: REG = 000.

Por cuanto el segundo operando tambin es un registro, el campo MOD


es 11. El campo R/M especifica que el registro de destino es BL por lo
cual el cdigo R/M es 011.

Por lo analizado, el byte 2 es:

BYTE 2 = 11000011B = C3H

Resumiendo, la instruccin MOV BL,AL tiene por cdigo de mquina


dos bytes, cuyo contenido es:

1000100011000011B = 88C3H

También podría gustarte