miércoles, 25 de septiembre de 2013

CONJUNTO DE INSTRUCCIONES.


El juego completo de instrucciones reconocidas por los procesadores intel 8086 a 80286,

junto con los coprocesadores 8087 y 80287, se enlistan en el apendice E. Como puede

verse en dicho apéndice, la mayoría de las instrucciones requieren algunos operandos o

expresiones para trabajar, y lo cual es válido también para las directivas. Los operandos

representan valores, registros o localidades de memoria a ser accesadas de alguna

manera. Las expresiones combinan operandos y operadores aritméticos y lógicos para

calcular en valor o la dirección a acceder.

Los operandos permitidos se enlistan a continuación:


Constantes.-


Pueden ser números, cadenas o expresiones que representan un valor fijo.

Por ejemplo, para cargar un registro con valor constante usaríamos la instrucción MOV

indicando el registro y el valor que cargaríamos dicho registro.

mov ax,9

mov al,´c´

mov bx,65535/3

mov cx,count

count sóo sera váido si este fue declarado con la directiva EQU.


Directos.-


Aquí se debe especificar la dirección de memoria a accesar en la forma

segmento:offset.

mov ax,ss:0031h

mov al,data:0

mov bx,DGROUP:block


Relocalizables.-
 
Por medio de un símbolo asociado a una dirección de memoria y que

puede ser usado también para llamados.

mov ax, value

call main

mov al,OFFSET dgroup:tabla

mov bx, count

count sólo será válido si fue declarado con la directiva DW.


Contador de localización.-
 
Usado para indicar la actual localización en el actual

segmento durante el ensamblado. Representado con el símbolo $ y también conocido

como centinela.

help DB ´OPCIONES´,13,10

F1 DB ´ F1 salva pantalla´,13,10

F10 DB ´ F10 exit´,13,10,´$

DISTANCIA = $-help

Registros.-
 
Cuando se hace referencia a cualquiera de los registros de propósito general,

apuntadores, índices, o de segmento.


Basados.-


Un operador basado representa una dirección de memoria relativa a uno de los

registros de base (BP o BX). Su sintaxis es:

desplazamiento[BP>

desplazamiento[BX>

[desplazamiento>[BP>

[BP+desplazamiento>

[BP>.desplazamiento

[BP>+desplazamiento

en cada caso la dirección efectiva es la suma del desplazamiento y el contenido del

registro.

mov ax,[BP>

mov al,[bx>

mov bx,12[bx>

mov bx,fred[bp>


Indexado.-


Un operador indexado representa una dirección de memoria relativa a uno de

los registros índice (SI o DI). Su sintaxis es:

desplazamiento[DI>

desplazamiento[SI>

[desplazamiento>[DI>

[DI+desplazamiento>

[DI>.desplazamiento

[DI>+desplazamiento

en cada caso la dirección efectiva es la suma del desplazamiento y el contenido del

registro.

mov ax,[si>

mov al,[di>

mov bx,12[di>

mov bx,fred[si>


Base-indexados.-


Un operador base-indexado representa una dirección de memoria

relativa a la combinación de los registros de base e índice. Su sintaxis es:

desplazamiento[BP>[SI>

desplazamiento[BX>[DI>

desplazamiento[BX>[SI>

desplazamiento[BP>[DI>

[desplazamiento>[BP>[DI>

[BP+DI+desplazamiento>

[BP+DI>.desplazamiento

[DI>+desplazamiento+[BP>

en cada caso la dirección efectiva es la suma del desplazamiento y el contenido del

registro.

mov ax,[BP>[si>

mov al,[bx+di>

mov bx,12[bp+di>

mov bx,fred[bx>[si>


Estructuras.-

Su sintaxis es variable.campo. variable es el nombre con que se declaró la

estructura, y campo es el nombre del campo dentro de la estructura.

date STRUC

mes DW ?

dia DW ?

aa DW ?

date ENDS

actual date ´ja´,´01´,´84´

mov ax,actual.dia

mov actual.aa, ´85´


Operadores y expresiones.-
 
Se cuenta con los siguientes operadores:

-aritméticos

expresión1 * expresión2

expresión1 / expresión2

expresión1 MOD expresión2

expresión1 + expresión2

expresión1 - expresión2

+ expresión

- expresión

-de corrimiento

expresión1 SHR contador

expresión1 SHL contador

-relacionales

expresión1 EQ expresión2

expresión1 NE expresión2

expresión1 LT expresión2

expresión1 LE expresión2

expresión1 GT expresión2

expresión1 GE expresión2

- de bit

NOT expresión

expresión1 AND expresión2

expresión1 OR expresión2

expresión1 XOR expresión2

-de índice

[expresión1> [expresión2>

ejemplos:

mov al, string[3>

mov string[last>,al

mov cx,dgroup:[1> ; igual a mov cx,dgroup:1

-de apuntador

tipo PTR expresión

tipo puede ser BYTE ó 1, WORD ó 2, DWORD ó 4, QWORD ó 8, TBYTE ó 10, NEAR ó

0FFFFh, FAR ó 0FFFEh. Ejemplos:

call FAR PTR subrout3

mov BYTE ptr [array>, 1

add al, BYTE ptr [full_word>

-de nombre de campo

estructura.campo

ejemplos:

inc month.day

mov time.min,0

mov [bx>.dest

-de propósito especial.


OFFSET expresion.-
 
Regresa el desplazamiento del operando

mov bx, OFFSET dgroup:array

mov bx, offset subrout3

 

SHORT etiqueta.-


Para un salto de menos de 128 bytes

jmp SHORT loop

LENGTH variable.-
 
Regresa el número de elementos de variable según su tipo

mov cx,length array

SIZE variable.-
 
Regresa el tamaño en bytes alojados para variable
mov cx,size array
SEG expresión.-
 
Regresa el valor del segmento para expresión

mov ax, SEG saludo

No hay comentarios:

Publicar un comentario