|
|
APENDICE A.- MODELO DE REGISTROS DEL 8086

APENDICE B.- REGISTROS EXPANDIDOS DEL 8087.




APENDICE C.- MODELO DE SEGMENTACION DE MEMORIA.

APENDICE D.- DIRECTIVAS DEL MASM.
.286c Permite
ensamblar instrucciones 80286 en modo no protegido, 8086 y 80186.
.286p Activa
el ensamble de instrucciones 80286 en modo protegido, 80186, 8086.
.287 Ensamblar
instrucciones 80287 y 8087.
.8086 Modo
por defecto. Activa el ensamble de instrucciones 8086 (idénticas para el 8088).
.8087 Activa
el ensamble de instrucciones 8087. Modo por defecto.
nombre=expresión Asigna
el valor de expresión a nombre.
ASUME segmentregister:segmentname.
Selecciona segmentregister
que sea el segmento por defecto para todos los símbolos en el segmento o grupo
nombrados. Si segmentname es NOTHING, ningún registro es
seleccionado.
COMMENT delimitador texto delimitador. Trata como un comentario
a todo texto dado entre delimitador y delimitador.
.CREF Restablece
el listado de referencia cruzada de símbolos.
[nombre]DB valor Aloja e inicializa un byte (DB).
[nombre]DW valor una palabra (DW, 2 bytes)
[nombre]DD valor una palabra doble(DD)
[nombre]DQ valor una palabra cuádruple (DQ)
[nombre]DT
valor y
10 bytes ( (DT) de almacenamiento
para cada valor
ELSE Señala
el inicio de un bloque alterno dentro de un bloque condicional.
END [expresión] Señala
el fin de un bloque y, opcionalmente, fija el punto de entrada a expresión.
ENDIF Termina
un bloque condicional.
ENDM Termina
una macro.
nombre ENDP Marca
el final de la definición de un procedimiento
nombre
ENDS Marca
el final de la definición de una estructura o segmento
nombre EQU expresión Asigna expresión a nombre.
.ERR Genera
error.
.ERR1 Genera
error en el paso 1 únicamente.
.ERR2 Genera
error en el paso 2 únicamente.
.ERRB
<argumento> Genera
error si argumento es blanco.
.ERRDEF
nombre Genera
error si nombre ya ha sido definido.
.ERRDIF
<cadena1>,<cadena2> Genera
error si los nombres son diferentes.
.ERRE expresión Genera
error si expresión es falsa (o)
.ERRIDN
<cadena1>,<cadena2> Genera
error si las cadenas son idénticas.
.ERRNB
<argumento> Genera
error si el argumento no es blanco.
.ERRNDEF nombre Genera
error si nombre no se ha definido.
.ERRNZ expresión Genera
error si expresión no es
cero(verdadera).
EVEN Si
es necesario, incrementa el contador de localidad a un número par y genera una instrucción
NOP.
EXITM Termina
la expansión del bloque de repetición o macro y comienza a ensamblar la
siguiente declaración fuera del bloque.
EXTRN
nombre:tipo... Declaración
de una variable, etiqueta o símbolo externo.
nombre GROUP segmentname... Asocia el
nombre de un grupo con uno o más segmentos.
IF expresión Permite
el ensamble si expresión es
verdadera(no cero).
IF1 Ensambla
sólo en el paso 1.
IF2 Ensambla
sólo en el paso 2.
IFB
<argumento> Ensambla
si argumento es blanco.
IFDEF nombre Ensambla
si nombre ya ha sido definido.
IFDIF
<argumento1>,<argumento2> Ensambla
sólo si los argumentos son diferentes.
IFE
expresión Ensambla
si expresión es falsa (0).
IFIDN
<argumento1>,<argumento2> Ensambla
si los argumentos son idénticos.
IFNB
<argumento> Ensambla
si el argumento no es blanco.
IFNDEF nombre Si
nombre no ha sido definido permite el
ensamble
INCLUDE filename Inserta
código fuente desde el archivo indicado
IRP nombre,<parámetro...> Marca
el inicio de un bloque de código que será repetido tantas veces como parámetros existan y en cada repetición nombre será reemplazado por cada parámetro.
IRPC
nombre,<cadena> Marca
el inicio de un bloque de código que será repetido tantas veces como caracteres
tenga la cadena indicada y en cada repetición será substituido nombre por cada carácter.
Nombre
ETIQUETA tipo Crea
una nueva variable o etiqueta asignando el valor actual del contador de localidades
y el tipo dado a nombre.
.LALL Lista
todas las declaraciones en una macro.
.LFCOND Restablece
el listado de bloques condicionales.
.LIST Restablece
el listado de declaraciones en el listado del programa.
LOCAL
nombre... Declara
nombre dentro de una macro para
quesea reemplazado por el nombre actual, cuando la macro sea expandida
nombre MACRO parámetro... Marca
el inicio de la macro nombre y
establece cada parámetro para ser
substituido por los respectivos parámetros cuando la macro sea llamada.
NAME módulo Fija
el nombre del módulo.
PURGE
macro... Borra
las macros indicadas.
ORG
expresión Fija
el contador de localidades expresión.
%OUT texto Despliega
texto en pantalla.
Nombre
PROC tipo Señala
el inicio de un procedimiento de determinado tipo.
PAGE longitud,ancho Fija
los márgenes para el listado del programa (en caracteres).
PAGE+ Incrementa
la numeración de página.
PAGE Genera
un corte de página en el listado.
PUBLIC nombre... Hace
que cada variable, nombre, etiqueta o símbolo absoluto declarado esté disponible
para el resto de módulos en el programa.
.RADIX
expresión Fija
la base a expresión para la introducción
de números.
Nombre
RECORD campo:ancho[=expresión]... Define
una estructura para un registro de 8 ó 16 bits que contiene uno o más campos.
REPT expresión Marca
el inicio de un bloque será repetido el número de veces indicado por expresión.
.SALL Suprime
el listado de las expansiones de macros.
nombre SEGMENT[alineación][combine]['clase'] Marca el inicio de un segmento del programa
llamado nombre y que posee los
atributos indicados.
.SFCOND Suprime
el listado de cualquier bloque condicional subsecuente cuya condición IF sea falsa.
Nombre
STRUC Marca
el comienzo en la definición de una estructura.
SUBTTL[texto] Define
un subtítulo para el listado.
.TFCOND Fija
por defecto el listar los bloques condicionales.
TITLEtexto Títulos
para los listados de los programas.
.XALL Lista
sólo aquellas macros que generen código o datos.
.XCREF[nombre...] Suprime
el listado de las referencias cruzadas.
.XLIST Suprime
el listado de las líneas que sigan.
APÉNDICE E.- JUEGO DE INSTRUCCIONES DEL 8086,8087, 80186, 80286 Y 80287.
reg cualquiera
de los registros
segreg uno
de los registros de segmento
r/m uno de los operandos generales:
registro, memoria, basado, indexado o basado-indexado
inmed constante
o símbolo de 8 o 16 bits
mem un
operando de memoria: símbolo, etiqueta, variable.
etiqueta etiqueta de instrucciones.
src fuente
en operaciones de cadena
dest destino
en operaciones de cadena.
AAA Ajuste ASCII para
adición.
AAD Ajuste
ASCII para división.
AAM Ajuste ASCII para
multiplicación.
AAS Ajuste ASCII para
división.
ADC acum, inmed Suma con acarreo.
r/m,inmed
r/m, reg
reg, r/m
ADD acum,inmed Suma.
r/m,inmed
r/m, reg
reg, r/m
AND acum,inmed Operación
AND a nivel bit.
r/m,inmed
r/m, reg
reg, r/m
CALL
etiqueta Llamado.
r/m
CBW Convierte byte
apalabra.
CLC Limpia bandera de
acarreo.
CLD Limpia
bandera de dirección.
CLI Limpia bandera
de interrupción.
CMC Complementa bandera
de acarreo.
CMP acum,inmed Comparación
r/m,inmed
r/m, reg
reg, r/m
CMPS src,dest Comparación de cadenas.
CMPSB Compara cadenas byte por
byte.
CMPSW Compara cadenas palabra
por palabra.
CWD Convierte palabra
a palabra doble.
DAA Ajuste decimal para
adición.
DAS Ajuste decimal para
substracción.
DEC r/m Decremento.
reg
DIV r/m División.
ESC inmed, r/m Escape
con 6 bits.
HLT Alto.
IDIV r/m División
entera.
IMUL
r/m Mutiplicación
entera.
IN accum,inmed Entrada desde puerto.
acum, DX
INC r/m Incremento.
reg
INT3 Interrupción3
codificada como un byte.
INT inmed Interrupción0-255.
INTO Interrupción en overflow.
IRET Retorno de interrupción.
JMP
etiqueta Brinco
incondicional.
r/m
J(condición)etiqueta Brinca de acuerdo a las condiciones: A (arriba), AE (arriba o igual), B
(siguiente), BE (siguiente o igual),
C(acarreo), CXZ (CX en cero), E (igual), G (mayor), GE (mayor o igual), L
(menor), LE (menor o igual), NA (no anterior), NAE (no anterior o igual), NB
(no siguiente), NBE(no siguiente o igual), NC (no acarreo), NE (no igual), NG(no mayor), NGE (no mayor o igual), NL
(no menor), NLE (no menor o igual), NO(no sobreflujo), NP (no paridad), NS (no
signo), NZ (no cero), O(sobreflujo), P (paridad), PE(paridad par), PO (paridad impar), S
(signo), Z (cero).
LAHF Carga AH con las banderas.
LDS r/m Carga DS.
LEA r/m Carga
la dirección.
LES r/m Carga ES.
LOCK Cierra bus.
LODS src Carga cadena.
LODSB Carga byte de cadena
en AL.
LODSW Carga palabra de la cadena
en AX.
LOOP etiqueta Ciclo.
LOOPE etiqueta Ciclo
mientras igual.
LOOPNE etiqueta Ciclo
mientras no igual.
LOOPNZ etiqueta Ciclo
mientras no cero.
LOOPZ etiqueta Ciclo
mientras cero.
MOV acum,mem Mueve un valor del segundo al primer
operando
r/m,inmed
mem, acum
r/m, reg
r/m,segreg
reg, inmed
reg,r/m
segreg,r/m
MOVS dest, src Mueve
cadena.
MOVSB Mueve cadena byte por
byte.
MOVSW Mueve cadena palabra por
palabra.
MUL r/m Multiplicación.
NEG r/m Niega(complemento
a 2).
NOP Operación ociosa.
NOT r/m Invierte
valores de bits (complemento a 1).
OR acum, inmed Operación
OR a nivel de bit.
r/m,inmed
r/m, reg
reg,r/m
OUTDX,
accum Salida por el puerto
dado por el primer operando.
inmed, acum (inmediato de 8 bits)
POP r/m Recupera
valor de la pila.
reg
segreg
POPF Recupera banderas.
PUSH r/m Guarda valor en la pila.
reg
segreg
PUSHF Guarda banderas.
RCL r/m,1 Rotación a la izquierda con
acarreo.
r/m,CL
RCR r/m, 1 Rotación
a la derecha con acarreo.
r/m, CL
REP Repite.
REPE Repite si igual.
REPNE Repite si no igual.
REPNZ Repite si no cero.
REPZ Repite si cero.
RET [inmed] Regresa
después de recuperar bytes de la pila.
ROL
r/m,1 Rotación a la izquierda.
r/m, CL
ROR
r/m,1 Rotación a la derecha.
r/m, CL
SAHF Carga banderas con
el valor de AH.
SAL r/m, 1 Desplazamiento
aritmético a la izquierda.
r/m, CL
SAR r/m, 1 Desplazamiento aritmético a
la derecha.
r/m, CL
SBB acum, inmed Substracción
con acarreo.
r/m,inmed
r/m, reg
reg,r/m
SCAS
dest Explora
cadena.
SCASB Explora cadena para el
byte en AL.
SCASW Explora cadena por la
palabra en AX.
SHL r/m, 1 Desplazamiento a la izquierda.
r/m, CL
SHR r/m, 1 Desplazamiento a la derecha.
r/m, CL
STC Fija bandera de acarreo.
STD Fija bandera de dirección.
STI Fija bandera de
interrupción.
STOS
dest Guarda
cadena.
STOSB Guarda byte en AL en la cadena.
STOSW Guarda palabra en AX en la cadena.
SUB accum, inmed Substracción.
r/m,inmed
r/m, reg
reg,r/m
TEST
acum, inmed Comparación.
r/m,inmed
r/m, reg
reg,r/m
WAIT Aguarda.
XCHG
acum, reg Intercambio.
r/m,inmed
r/m, reg
reg,r/m
XLAT Traduce.
XOR
acum, reg Operación
XOR a nivel bit.
r/m,inmed
r/m, reg
reg,r/m
F2XM1 Calcula 2x-1.
FABS Toma valor absoluto
del tope de la pila.
FADD mem Suma real.
FADD ST,ST(i) Suma real desde la pila.
FADD ST(i),ST Suma real a la pila.
FADDP ST(i), ST Suma real y saca de pila.
FBLD mem Carga
un decimal empacado de 10 bytes en
lapila.
FBSTP mem Almacena
un decimal empacado de 10 bytes y saca de pila.
FCHS Cambia signo del valor
en el tope de la pila.
FCLEX Borra las excepciones
después de un WAIT.
FCOM Compara real.
FCOM ST Compara real con el tope de
la pila.
FCOM ST(i) Compara real con la pila.
FCOMP Compara real y saca de
pila.
FCOMP ST Compara real con el tope dela
pila y saca de pila.
FCOMP ST(i) Compara real con el tope de la
pila y saca.
FCOMPP Compara real y saca dos
valores de la pila.
FDECSTP Decrementa el apuntador de
la pila.
FDISI Deshabilita las interrupciones
después de un WAIT.
FDIV mem División
real.
FDIV ST,ST(i) División
real desde la pila.
FDIV ST(i), ST División
real en la pila.
FDIVPST(i),
ST División
real sacando valor de la pila.
FDIVR División real invertida.
FDIVR mem División
real invertida desde memoria.
FDIVR ST, ST(i) División real invertida desde la pila.
FDIVR ST(i), ST División real invertida desde la pila.
FDIVRPST(i),
ST División con
un real invertido y sacando valor de la pila.
FENI Habilita
interrupciones después de un WAIT.
FFREE Libera elemento
dela pila.
FIADD
mem Suma
entera de un número de2 ó 4 bytes.
FICOM mem Compara
enteros de 2 ó 4 bytes y saca de la pila.
FICOMP
mem Compara
entero de 2 ó4 bytes y saca de pila.
FIDIV
mem División entera.
FDIVR
mem División
entera invertida.
FILD
mem Carga
un entero de 2, 4 u 8 bytes en la pila.
FIMUL mem Multiplicación
entera de 2 ó 4 bytes.
FINCSTP Incrementa el apuntador
de la pila.
FINIT Inicializa el procesador
después de WAIT.
FIST mem Almacena
entero de 2 ó 4 bytes.
FISTP mem Almacena
entero de 2, 4 u 8 bytes y saca de la pila.
FISUB mem Resta
entero de 2 ó 4 bytes.
FISUBR mem Resta
entera de 2 ó 4 bytes invertida.
FLD mem Carga
real de 4, 8 ó 10 bytes en la pila.
FLD1 Pone +1.0 en el tope
de la pila.
FLDCW
mem Carga
la palabra de control.
FLDENV mem Carga
entorno 8087 (14 bytes).
FLDL2E Cargalog2 e en el tope
dela pila.
FLDL2T Cargalog2 10en el tope
de la pila.
FLDLG2 Cargalog102 en el tope
de la pila.
FLDLN2 Cargaloge2 en el tope
de la pila.
FLDPI Carga p en el tope
dela pila.
FLDZ Carga +0.0 en el tope
de la pila.
FMUL Multiplicación real.
MUL mem Multiplicación
real desde memoria.
FMUL ST, ST(i) Multiplicación real desde pila.
FMUL ST(i), ST Multiplicación real a la pila.
FMULP ST, ST(i) Multiplicación
real y saca de la pila.
FNCLEX Borra excepciones sin WAIT.
FNDISI Inhabilita interrupciones
sin WAIT.
FNENI Habilita interrupciones
sin WAIT.
FNINIT Inicializa
procesador sin WAIT.
FNOP Operación nula.
FNSAVE mem Salva
estado 8087 (94 bytes) sin WAIT.
FNSTCW mem Almacena
la palabra de control sin WAIT.
FNSTENV mem Guarda
el entorno 8087 sin WAIT.
FNSTSW
mem Almacena
el estado8087 sin WAIT.
FPATAN Función arcotangente parcial.
FPREM Residuo parcial.
FPTAN Función tangente parcial.
FRNDINT Redondea a entero
FRSTOR
mem Restablece
estado8087 (94 bytes)
FSAVE
mem Conserva
el estado8087 (94 bytes).
FSCALE Escala
FSQRT Raíz cuadrada
FST Almacena real.
FST ST Almacena real desde el
tope de la pila.
FST ST(i) Almacena real desde
lapila.
FSTCW mem Almacena
palabra de control con WAIT.
FSTENV mem Guarda
el entorno 8087 después de WAIT.
FSTP mem Guarda
real de 4, 8 ó 10 bytes y saca de la pila.
FSTSW mem Almacena
la palabra de estado depués de WAIT.
FSUB Substracción
real.
FSUB mem Substracción
real desde memora.
FSUB ST, ST(i) Substracción real desde
la pila.
FSUB ST(i), ST Substracción real a
la pila.
FSUBPST,
ST(i) Substrae
real y saca de pila.
FSUBR Substracción real invertida.
FSUBR mem Substracción
real invertida desde memoria.
FSUBR ST,ST(i) Substracción real invertida desde
la pila.
FSUBR ST(i), ST Substracción real invertida a la pila.
FSUBRPST(i),
ST Substracción
real invertida a la pila y saca.
FTST Prueba el tope
dela pila.
FWAIT Aguarda que la última
operación 8087 termine.
FXAM Examina
el elemento del tope de la pila.
FXCH Intercambia contenido
de los elementos de la pila.
FFREEST Intercambia
el elemento del tope de la pila.
FFREEST(i) Intercambia
el elemento del tope de la pila y el i-ésimo
elemento.
FXTRACT Extrae el exponente y significando.
FYL2X Calcula Y log2 X.
FYL2PI Calcula Y log2 (x+1)
80186/80188/80286
(modo no protegido)
BOUND reg, mem Detecta
valor fuera de rango.
ENTER
inmed16, inmed8 Hace
elemento en la pila para llamada a
procedimiento.
IMUL reg, inmed Multiplicación
entera.
reg, r/m,inmed
INS mem, DX Entrada de cadena desde el
puerto DX.
INSB
mem,DX Entrada de cadena de bytes
desde el puerto DX.
INSW mem DX Entrada de cadena de palabras
desde el puerto DX.
LEAVE Deja procedimiento.
OUTS DX, mem Salida
de cadena de bytes o palabras al puerto DX.
OUTSBDX,
mem Salida de cadena de bytes al puerto
DX.
OUTSW DX, mem Salida
de cadena de palabras al puerto DX.
POPA Saca todos los registros
de la pila.
PUSH inmed Introduce
a la pila
PUSHA Introduce
todos los registros.
RCL r/m, inmed Rotación
a la izquierda con acarreo
RCR r/m, inmed Rotación
a la derecha con acarreo.
ROL r/m, inmed Rotación
a la izquierda.
ROR r/m, inmed Rotación
a la derecha.
SAL r/m, inmed Desplazamiento
aritmético a la izquierda.
SAR r/m, inmed Desplazamiento
aritmético a la derecha.
SHL r/m, inmed Desplazamiento a
la izquierda.
SHR r/m, inmed Desplazamiento
a la derecha.
ARPL mem, reg Ajusta
petición de nivel de privilegio.
CLTS Limpia bandera de
conmutación de tareas.
LAR
reg, mem Carga
derechos de acceso.
LGDT
mem Carga
la tabla de descriptores globales (8 bytes).
LIDT
mem Carga
tabla de descriptores de interrupciones (8 bytes).
LLDT
mem Carga
la tabla de descriptores locales.
LMSW
mem Carga
la palabra de estado.
LSL
reg, mem Carga
el límite del segmento.
LTR
mem Carga
registro de tareas.
SGDT
mem Guarda
la tabla de descriptores locales (8 bytes).
SIDT
mem Guarda
tabla de descriptores de interrupciones (8 bytes).
SMSW
mem Guarda
la palabra de estado.
STR
mem Guarda
registro de tareas.
VERR
mem Verifica
acceso de lectura.
VERW
mem Verifica
acceso de escritura.
FSETPM Fija modo protegido.
FSTSWAX Almacena palabra de
estado en AX (aguarda).
FNSTSWAX Almacena palabra de estado
en AX (no aguarda).
(hex) (hex)
0-3 0
Division by zero
4-7 1 Single
step trace
8-B 2 Non
maskable interrupt
C-F 3 Break
point instruction
10-13 4 Overflow
14-17 5 Print
screen
18-1F 6,7 Reserved
20-23 8 Timer
24-27 9 Keyboard
interrupt
28-37 A,B,C,D Reserved
38-3B E Diskette
interrupt
3C-3F F Reserved
40-43 10 Video
screen I/O
44-47 11 Equipment
check
48-4B 12 Memory
size check
4C-4F 13 Diskette
I/O
50-53 14 Communication
I/O
54-57 15 Cassette
I/O
58-5B 16 Keyboard
input
5C-5F 17 Printer
Output
60-63 18 ROM
Basic entry code
64-67 19 Bootstrap
loader
68-6B 1A Time
of day
6C-6F 1B Get
control on keyboard break
70-73 1C Get
control on timer interrupt
74-77 1D Pointer
to video initialization table
78-7B 1E Pointer
to diskette parameter table
7C-7F 1F Pointer to table for graphics characters ASCII 128-255
80-83 20 DOS program terminate
84-87 21 DOS
function call
88-8B 22 DOS terminate address
90-93 24 DOS
fatal error vector
94-97 25 DOS
absolute disk read
98-9B 26 DOS
absolute disk write
9C-9F 27 DOS
terminate, fix in storage
A0-FF
28-3F Reserved for DOS
100-1FF 40-7F Not
used
200-217 80-85 Reserved
by BASIC
218-3C3 86-F0 Used
by BASIC interpreter
3C4-3FF F1-FF Not
Used
Este texto puede ser copiado y reproducido libremente mientras su contenido no sea alterado, se cite la fuente y referencias. Las marcas registradas son responsabilidad de sus dueños y el autor de este texto no tiene relación alguna con estos. M. en C. Eduardo René Rodríguez Avila. © Todos los derechos reservados.
|
Ultima actualización: . |