Está en la página 1de 2

Intel Assembler 80186 y superior

Tabla de Cdigos 1/2

1996-2003 por Roger Jegerlehner, Suiza


V 2.3ES Traducido por Lucas Violini, Argentina

TRANSFERENCIA
Nombre Comentario
MOV
Mover (copiar)
XCHG
Intercambiar

Cdigo
MOV Dest,Fuente
XCHG Op1,Op2

Operacin
Dest:=Fuente
Op1:=Op2 , Op2:=Op1

STC
CLC
CMC
STD
CLD
STI
CLI

Set the carry (Carry = 1)


Clear Carry (Carry = 0)
Complementar Carry
Setear direccin
Limpiar direccin
Flag de Interrupcin en 1
Flag de Interrupcin en 0

STC
CLC
CMC
STD
CLD
STI
CLI

CF:=1
CF:=0
CF:= CF
DF:=1 (interpreta strings de arriba hacia abajo)
DF:=0 (interpreta strings de abajo hacia arriba)
IF:=1
IF:=0

PUSH
PUSHF
PUSHA
POP
POPF
POPA

Apilar en la pila
Apila los flags
Apila los registros generales
Desapila de la pila
Desapila a los flags
Desapila a los reg. general.

PUSH Fuente
PUSHF
PUSHA
POP Dest
POPF
POPA

DEC SP, [SP]:=Fuente


O, D, I, T, S, Z, A, P, C 286+: Tambin NT, IOPL
AX, CX, DX, BX, SP, BP, SI, DI
Destino:=[SP], INC SP
O, D, I, T, S, Z, A, P, C 286+: Tambin NT, IOPL
DI, SI, BP, SP, BX, DX, CX, AX

CBW
CWD
CWDE

Convertir Byte a Word


Convertir Word a Doble
Conv. Word a Doble Exten.

CBW
CWD
CWDE

AX:=AL (con signo)


DX:AX:=AX (con signo)
EAX:=AX (con signo)

386

O D

Flags
T S Z A P C

1
0

1
0
1
0

IN
i Entrada
IN Dest,Puerto
OUT i Salida
OUT Puerto,Fuente
i para ms informacin ver especificaciones de la intruccin
ARITMTICOS
Nombre Comentario
Cdigo
ADD
Suma
ADD Dest,Fuente
ADC
Suma con acarreo
ADC Dest,Fuente
SUB
Resta
SUB Dest,Fuente
SBB
Resta con acarreo
SBB Dest,Fuente
DIV
Divisin (sin signo)
DIV Op
DIV
Divisin (sin signo)
DIV Op
DIV 386 Divisin (sin signo)
DIV Op
IDIV
Divisin entera con signo
IDIV Op
IDIV
Divisin entera con signo
IDIV Op
IDIV 386 Divisin entera con signo
IDIV Op
MUL
Multiplicacin (sin signo)
MUL Op
MUL
Multiplicacin (sin signo)
MUL Op
MUL 386 Multiplicacin (sin signo)
MUL Op
IMUL i Multiplic. entera con signo
IMUL Op
IMUL
Multiplic. entera con signo
IMUL Op
IMUL 386 Multiplic. entera con signo
IMUL Op
INC
Incrementar
INC Op
DEC
Decrementar
DEC Op

AL/AX/EAX := byte/word/double del puerto especifi.


Byte/word/double del puerto especifi. := AL/AX/EAX
Flags: =Afectado por esta instruccin ?=Indefinido luego de esta instruccin
Flags
Operacin
O D I T S Z A P
Dest:=Dest+ Fuente


Dest:=Dest+ Fuente +CF


Dest:=Dest- Fuente


Dest:=Dest-(Fuente +CF)


Op=byte: AL:=AX / Op
AH:=Resto ?
? ? ? ?
Op=word: AX:=DX:AX / Op
DX:=Resto ?
? ? ? ?
Op=doublew.: EAX:=EDX:EAX / Op EDX:=Resto ?
? ? ? ?
Op=byte: AL:=AX / Op
AH:=Resto ?
? ? ? ?
Op=word: AX:=DX:AX / Op
DX:=Resto ?
? ? ? ?
Op=doublew.: EAX:=EDX:EAX / Op EDX:=Resto ?
? ? ? ?
Op=byte: AX:=AL*Op
si AH=0
? ? ? ?
Op=word: DX:AX:=AX*Op
si DX=0
? ? ? ?
Op=double: EDX:EAX:=EAX*Op
si EDX=0
? ? ? ?
Op=byte: AX:=AL*Op
si AL es suficiente
? ? ? ?
Op=word: DX:AX:=AX*Op
si AX es suficiente
? ? ? ?
Op=double: EDX:EAX:=EAX*Op si EAX es sufi.
? ? ? ?
Op:=Op+1 (El Carry no resulta afectado !)


Op:=Op-1 (El Carry no resulta afectado !)

CMP

Op1-Op2

Comparar

CMP Op1,Op2

SAL
Desplazam. aritm. a la izq.
SAL Op,Cantidad
SAR
Desplazam. aritm. a la der. SAR Op,Cantidad
RCL
Rotar a la izq. c/acarreo
RCL Op,Cantidad
RCR
Rotar a la derecha c/acarreo RCR Op,Cantidad
ROL
Rotar a la izquierda
ROL Op,Cantidad
ROR
Rotar a la derecha
ROR Op,Cantidad
i para ms informacin ver especificaciones de la intruccin
LGICOS
Nombre Comentario
Cdigo
NEG
Negacin (complemento a 2) NEG Op
NOT
Invertir cada bit
NOT Op
AND
'Y' (And) lgico
AND Dest,Fuente
OR
'O' (Or) lgico
OR Dest,Fuente
XOR
'O' (Or) exclusivo
XOR Dest,Fuente
SHL
SHR

Desplazam. lgico a la izq.


Desplazam. lgico a la der.

SHL Op,Cantidad
SHR Op,Cantidad

?
?
?
?
?
?

i
i
i
i
i
i

?
?

entonces CF:=0, OF:=0 sino CF:=1, OF:=1

Operacin
Op:=0-Op
si Op=0 entonces CF:=0 sino CF:=1
Op:= Op (invierte cada bit)
Dest:=Dest Fuente
Dest:=DestFuente
Dest:=Dest (xor) Fuente

O D

Flags
T S Z A P C

0
0
0

?
?
?

0
0
0

i
i

?
?

Consiga la ltima versin gratuita de jegerlehner.ch/intel Esta pgina puede ser libremente distribuda sin costo alguno si no es modificada. Todos los derechos reservados

Intel Assembler 80186 y superior

Tabla de Cdigos 2/2

1996-2003 por Roger Jegerlehner, Suiza


V 2.3ES Traducido por Lucas Violini, Argentina

MISCELNEOS
Nombre Comentario
NOP
Hacer nada

Cdigo
NOP

Operacin
No hace operacin alguna

LEA

Cargar direciin Efectiva

LEA Dest,Fuente

Dest := direccin fuente

INT

Interrupcin

INT Num

Interrumpe el progr. actual, corre la subrutina de int.

SALTOS (generales)
Nombre Comentario
CALL
Llamado a subrutina

Cdigo
CALL Proc

JMP

Saltar

JMP Dest

JE
JZ
JCXZ
JP
JPE

Saltar si es igual
Saltar si es cero
Saltar si CX es cero
Saltar si hay paridad
Saltar si hay paridad par

SALTOS Sin Signo (Cardinal)


JA
Saltar si es superior
JAE
Saltar si es superior o igual
JB
Saltar si es inferior
JBE
Saltar si es inferior o igual
JNA
Saltar si no es superior
JNAE
Saltar si no es super. o igual
JNB
Saltar si no es inferior
JNBE
Saltar si no es infer. o igual
JC
Saltar si hay carry
JNC
Saltar si no hay carry

Operacin

JE Dest
JZ Dest
JCXZ Dest
JP Dest
JPE Dest

( JZ)
( JE)

JNE
JNZ
JECXZ
JNP
JPO

Saltar si no es igual
Saltar si no es cero
Saltar si ECX es cero
Saltar si no hay paridad
Saltar si hay paridad impar

JNE Dest
JNZ Dest
JECXZ Dest
JNP Dest
JPO Dest

( JNZ)
( JNE)

JA Dest
JAE Dest
JB Dest
JBE Dest
JNA Dest
JNAE Dest
JNB Dest
JNBE Dest
JC Dest
JNC Dest

( JNBE)
( JNB JNC)
( JNAE JC)
( JNA)
( JBE)
( JB JC)
( JAE JNC)
( JA)

JG Dest
JGE Dest
JL Dest
JLE Dest
JNG Dest
JNGE Dest
JNL Dest
JNLE Dest
JO Dest
JNO Dest
JS Dest
JNS Dest

( JNLE)
( JNL)
( JNGE)
( JNG)
( JLE)
( JL)
( JGE)
( JG)

( JPE)
( JP)

AL
87

EDX 386
DX
DH

DL
Data mul, div, IO

31

24 23

16 15

87

ECX 386
CX
CH

CL
Count loop, shift

31

24 23

16 15

87

EBX 386
BX
BH

BL
BaseX data ptr

31
Flags:

24 23

16 15

87

- - - - OD I T S

Cdigo
RET

Acumulador
16 15

Comentario
Retorno de subrutina

AX

24 23

Flags
T S Z A P C

Name
RET

EAX 386

31

Operacin

Registros Generales:

AH

O D

-A- P-C

Flags de Control (cmo se manejan las instrucciones):


D: Direccin 1=Los op's String se procesan de arriba hacia abajo
I: Interrupcin Indica si pueden ocurrir interrupciones o no.
T: Trampa
Paso por paso para debugging

SALTOS Con Signo (Integer)


JG
Saltar si es mayor
JGE
Saltar si es mayor o igual
JL
Saltar si es menor
JLE
Saltar si es menor o igual
JNG
Saltar si no es mayor
JNGE
Saltar si no es mayor o igual
JNL
Saltar si no es inferior
JNLE
Saltar si no es menor o igual
JO
Saltar si hay Overflow
JNO
Saltar si no hay Overflow
JS
Saltar si hay signo (=negativo)
JNS
Saltar si no hay signo (=posit.)
Ejemplo:
.DOSSEG
.MODEL SMALL
.STACK 1024
Two
EQU 2
.DATA
VarB
DB ?
VarW
DW 1010b
VarW2 DW 257
VarD
DD 0AFFFFh
S
DB "Hello !",0
.CODE
main:
MOV AX,DGROUP
MOV DS,AX
MOV [VarB],42
MOV [VarD],-7
MOV BX,Offset[S]
MOV AX,[VarW]
ADD AX,[VarW2]
MOV [VarW2],AX
MOV AX,4C00h
INT 21h
END main

386

( JPO)
( JNP)

; Programa de demostracin

; Constante
; define un Byte, cualquier valor
; define un Word, en binario
; define un Word, en decimal
; define un DoubleWord, en hexa
; define un String
; resuelto por el linker
; inicializa el reg. de segmento de datos
; inicializa VarB
; setea VarD
; direccin de "H" de "Hello !"
; poner el valor en el acumulador
; suma VarW2 a AX
; almacena AX en VarW2
; regresa al sistema

Flags de Estado (resultado de las operaciones):


C: Carry
resultado de operac. sin signo es muy grande o inferior a cero
O: Overflow resultado de operac. sin signo es muy grande o pequeo.
S: Signo
Signo del resultado. Razonable slo para enteros. 1=neg. 0=pos.
Z: Cero
Resultado de la operacin es cero. 1=Cero
A: Carru Aux. Similar al Carry, pero restringido para el nibble bajo nicamente
P: Paridad
1=el resultado tiene cantidad par de bits en uno

Consiga la ltima versin gratuita de jegerlehner.ch/intel Esta pgina puede ser libremente distribuda sin costo alguno si no es modificada. Todos los derechos reservados

También podría gustarte