0022002818

Page 1

Intel Assembler 80186 y superior

Tabla de Códigos 1/2

© 1996-2003 por Roger Jegerlehner, Suiza V 2.3ES Traducido por Lucas Violini, Argentina

TRANSFERENCIA Nombre Comentario MOV Mover (copiar) XCHG Intercambiar

Código MOV Dest,Fuente XCHG Op1,Op2

Operación 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 dirección Limpiar dirección Flag de Interrupción en 1 Flag de Interrupción 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+: También NT, IOPL AX, CX, DX, BX, SP, BP, SI, DI Destino:=[SP], INC SP O, D, I, T, S, Z, A, P, C 286+: También 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

I

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 más información ver especificaciones de la intrucción ARITMÉTICOS Nombre Comentario Código 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 División (sin signo) DIV Op DIV División (sin signo) DIV Op DIV 386 División (sin signo) DIV Op IDIV División entera con signo IDIV Op IDIV División entera con signo IDIV Op IDIV 386 División entera con signo IDIV Op MUL Multiplicación (sin signo) MUL Op MUL Multiplicación (sin signo) MUL Op MUL 386 Multiplicación (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 instrucción ?=Indefinido luego de esta instrucción Flags Operación 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 más información ver especificaciones de la intrucción LÓGICOS Nombre Comentario Código NEG Negación (complemento a 2) NEG Op NOT Invertir cada bit NOT Op AND 'Y' (And) lógico AND Dest,Fuente OR 'O' (Or) lógico OR Dest,Fuente XOR 'O' (Or) exclusivo XOR Dest,Fuente SHL SHR

Desplazam. lógico a la izq. Desplazam. lógico a la der.

SHL Op,Cantidad SHR Op,Cantidad

C ± ± ± ± ? ? ? ? ? ? ± ± ± ± ± ±

±

±

±

±

±

±

i i i i i i

± ±

± ±

? ?

± ±

± ± ± ± ± ±

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

Operación Op:=0-Op si Op=0 entonces CF:=0 sino CF:=1 Op:=¬ Op (invierte cada bit) Dest:=Dest∧ Fuente Dest:=Dest∨Fuente Dest:=Dest (xor) Fuente

O D ±

I

Flags T S Z A P C ± ± ± ± ±

0 0 0

± ± ±

± ± ±

? ? ?

± ± ±

0 0 0

i i

± ±

± ±

? ?

± ±

± ±

Consiga la última versión gratuita de jegerlehner.ch/intel Esta página puede ser libremente distribuída sin costo alguno si no es modificada. Todos los derechos reservados


Intel Assembler 80186 y superior

Tabla de Códigos 2/2

© 1996-2003 por Roger Jegerlehner, Suiza V 2.3ES Traducido por Lucas Violini, Argentina

MISCELÁNEOS Nombre Comentario NOP Hacer nada

Código NOP

Operación No hace operación alguna

LEA

Cargar direciión Efectiva

LEA Dest,Fuente

Dest := dirección fuente

INT

Interrupción

INT Num

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

SALTOS (generales) Nombre Comentario CALL Llamado a subrutina

Código 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

Operación

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

0

EDX 386 DX DH

DL Data mul, div, IO

31

24 23

16 15

87

0

ECX 386 CX CH

CL Count loop, shift

31

24 23

16 15

87

0

EBX 386 BX BH

BL BaseX data ptr

31 Flags:

24 23

16 15

87

- - - - OD I T S

0

Código RET

Acumulador 16 15

0

Comentario Retorno de subrutina

AX

24 23

Flags T S Z A P C

Name RET

EAX 386

31

I

Operación

Registros Generales:

AH

O D

0

-A- P-C

Flags de Control (cómo se manejan las instrucciones): D: Dirección 1=Los op's String se procesan de arriba hacia abajo I: Interrupción 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 demostración

; 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 ; dirección 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 pequeño. S: Signo Signo del resultado. Razonable sólo para enteros. 1=neg. 0=pos. Z: Cero Resultado de la operación 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 versión gratuita de jegerlehner.ch/intel Esta página puede ser libremente distribuída sin costo alguno si no es modificada. Todos los derechos reservados


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.