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