jun
9
2012

Traducir lenguaje Ensamblador a lenguaje Máquina | CISC

Descarga el contenido del Artículo en PDF Download PDF

De lenguaje Ensamblador a lenguaje Máquina

Después de escribir los otros tutoriales acerca del lenguaje ensamblador en CISC vamos a realizar un tutorial de cómo traduciríamos el lenguaje Ensamblador al lenguaje Máquina.

El lenguaje Máquina es el código que puede ser interpretado directamente por el microprocesador, como ya sabéis todos los lenguajes de programación antes de ser interpretados por el microprocesador son traducidos a lenguaje Máquina.

Para traducir del lenguaje Ensamblador a lenguaje Máquina primero tenemos que tener el código Ensamblador que queremos traducir, que serán estas tres líneas:

MUL R3, [X+R5]
SUB R5, 4
MOV [M], R3

Los valores que utilizaremos serán los siguientes, primeramente el valor del PC es 00002027, por lo tanto las instrucciones se empezarán a codificar a partir de este punto. La dirección de memoria que apunta la variable X será 00000004 y la dirección de memoria que apunta la variable M será 00000008.

Ahora codificaremos el código anterior siguiendo la forma de codificar instrucción, codificar primer operando y codificar segundo operando.

Las instrucciones se codificarán por los valores que les preceden en la tabla:

 

  Operaciones 27h NEG
00h NOP 20h ADD Funciones Lógicas
01h STI 21h SUB 30h AND
02h CLI 22h MUL 31h OR
Movimiento de datos 23h DIV 32h XOR
10h MOV 24h INC 33h TEST
11h PUSH 25h DEC 34h NOT
12h POP 26h CMP 27h NEG

 

35h SAL Saltos en la ejecución
36h SAR 40h JMP
  41h JE
  42h JNE
  43h JL
  44h JLE
  45h JG
  46h JGE

Y dependiendo del direccionamiento que utilicen los operandos se codificarán de la siguiente manera:

Tipo de direccionamiento
0h     Inmediato
1h     Registro
2h     Memoria
3h     Indirecto
4h     Relativo
5h     Indexado
6h     PC

Comenzamos codificando la primera instrucción

MUL R3, [X+R5]

Para esto ponemos en @ la dirección que está apuntando PC, después codificamos la instrucción MUL, buscamos el código (22h MUL) y traducimos en la primera celda de la tabla.

 

@Dir

Ensamblador

Código Máquina

00002027 MUL R3, [X+R5] 22              
                   
                   
                   

Bytes

0

1

2

3

4

5

6

7

Después codificamos el primer operador que tenemos, que en este caso es R3, así que asignaremos a la segunda celda el tipo de direccionamiento y el número de registro 1 3.

@Dir

Ensamblador

Código Máquina

00002027 MUL R3, [X+R5] 22 13            
                   
                   
                   

Bytes

0

1

2

3

4

5

6

7

Para finalizar la instrucción ponemos el segundo operando en la tabla, que como tipo de direccionamiento utiliza el indexado, es decir una dirección de memoria más un desplazamiento, que en este caso se codificaría con el tipo “5” más el identificador del registro que es el “5” también.

Le añadimos la dirección a la que apunta la variable X, que es 00000004 y lo asignaremos de izquierda a derecha en grupos de dos, de esta forma asignaremos los bits de menor peso al número más pequeño y los de mayor peso al número más grande en la codificación.

Quedaría así:

@Dir

Ensamblador

Código Máquina

00002027h MUL R3, [X+R5] 22 13 55 04 00 00 00  
                   
                   
                   

Bytes

0

1

2

3

4

5

6

7

Realizamos la suma de los bytes que hemos utilizado e incrementamos la posición de memoria que apunta PC, que en este caso son 7, por lo que la PC ahora tendrá el valor de 00002027h+07h= 0000202Eh.

@Dir

Ensamblador

Código Máquina

00002027h MUL R3, [X+R5] 22 13 55 04 00 00 00  
0000202Eh                  
                   
                   

Bytes

0

1

2

3

4

5

6

7

Ahora realizamos de nuevo los mismos pasos con las otras instrucciones y finalmente la tabla quedaría así:

@Dir

Ensamblador

Código Máquina

00002027h MUL R3, [X+R5] 22 13 55 04 00 00 00  
0000202Eh SUB R5, 4 21 15 00 04 00 00 00  
00002036h MOV [M], R3 10 20 08 00 00 00 13  
0000203Ch                  

Bytes

0

1

2

3

4

5

6

7

 

Después de este proceso, finalmente habremos conseguido traducir estas tres lineas de lenguaje Ensamblador a lenguaje Máquina para la arquitectura CISC.
 

Click on any of these buttons to help us to maintain this website.      
CJO

Artículos relacionados

Related Posts

Acerca del Autor:

Leave a comment


cuatro × 1 =

Recientes

  • Roul: En mi caso, sobre la versión 2.4 corre perfectamente. ¿Qué versión tienes? ¿Qué error te muestra?
  • Eliez: Hola amigo una pregunta corri el codigo y no me causo problemas pero al momento de hacer el instaldor lo hace...
  • Diseño de Pagina Web: Muy buenoooo!!!!! Recicler comment
  • Albert: Gracias por contestar, la verdad es que ya lo suponía que seria ese el problema, supongo que si el otro...
  • MMane: El problema puede venir por ahí, prueba a reescribir los artículos! suerte!