Está en la página 1de 2

Intel Assembler 80186 y superior

TRANSFERENCIA Nombre Comentario MOV Mover (copiar) XCHG Intercambiar STC CLC CMC STD CLD STI CLI PUSH PUSHF PUSHA POP POPF POPA CBW CWD CWDE 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 Apilar en la pila Apila los flags Apila los registros generales Desapila de la pila Desapila a los flags Desapila a los reg. general. Convertir Byte a Word Convertir Word a Doble Conv. Word a Doble Exten.

Tabla de Cdigos 1/2


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

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

Cdigo MOV Dest,Fuente XCHG Op1,Op2 STC CLC CMC STD CLD STI CLI PUSH Fuente PUSHF PUSHA POP Dest POPF POPA CBW CWD CWDE

O D

Flags T S Z A P C

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 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 AX:=AL (con signo) DX:AX:=AX (con signo) EAX:=AX (con signo)

1 0 1 0 1 0

386

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 CMP 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

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 !) Op1-Op2 i i i i i i
entonces CF:=0, OF:=0 sino CF:=1, OF:=1

C ? ? ? ? ? ?

? ?

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 0 0 0 i i

Flags T S Z A P C ? ? ? ? ? 0 0 0

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


MISCELNEOS Nombre Comentario NOP Hacer nada LEA INT Cargar direciin Efectiva Interrupcin Cdigo NOP

Tabla de Cdigos 2/2


Operacin No hace operacin alguna Dest := direccin fuente

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

O D

Flags T S Z A P C

LEA Dest,Fuente INT Num

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

SALTOS (generales) Nombre Comentario CALL Llamado a subrutina JMP JE JZ JCXZ JP JPE Saltar Saltar si es igual Saltar si es cero Saltar si CX es cero Saltar si hay paridad Saltar si hay paridad par

Cdigo CALL Proc JMP Dest JE Dest JZ Dest JCXZ Dest JP Dest JPE Dest

Operacin

Name RET JNE JNZ JECXZ JNP JPO

Comentario Retorno de subrutina 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

Cdigo RET JNE Dest JNZ Dest JECXZ Dest JNP Dest JPO Dest

Operacin

( JZ) ( JE) ( JPE) ( JP)

( JNZ) ( JNE)
386

( JPO) ( JNP)

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 Registros Generales: EAX 386 AX AH 31 24 23 16 15 EDX 386 DX DH 31 24 23 16 15 ECX 386 CX CH 31 24 23 16 15 EBX 386 BX BH 31 Flags: 24 23 16 15 87 BL 87 CL 87 DL 87 AL

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)

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

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)

; Programa de demostracin

Acumulador 0

; 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

Data mul, div, IO 0

Count loop, shift 0

BaseX data ptr 0

- - - - OD I T S

-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

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