Ensamblador 8086

Embed Size (px)

DESCRIPTION

Ensamblador del procesador 8086

Citation preview

Ensamblador 8086/881.2.3.4.5.6.IntroduccinRegistros internosModos de direccionamientoJuego de InstruccionesEtiquetas, cometarios y directivasProblemas1. IntroduccinEl lenguaje ensamblador como cualquier lenguaje de programacin es un conjunto de palabrasque le indican al ordenador lo que tiene que hacer. Sin embargo la diferencia fundamental es quecada instruccin escrita en lenguaje ensamblador tiene una correspondencia exacta con unaoperacin en el procesador. Por lo que son operaciones muy sencillas tales como: Cargar 32 enel registro BX o Transferir el contenido del registro CL al CH. As pues, las palabras del lenguajeensamblador son nemotcnicos que representan el cdigo mquina, lenguaje que entiende elprocesador.1.1. Tamao de los datosEn el 8086/88 se definen los siguientes tamaos de datos:4 bits8 bits16 bits32 bitsnibblebyteworddword1.2. Almacenamiento de datosEl 8086/88 usa el formato de almacenamiento denominado little endian, esto quiere decir que elbyte menos significativa (LSB) del dato es guardada en la parte baja de la memoria. Por ejemploel dato 0x1122 ser almacenado en memoria:000.02211FFF.FEs importante tener esto en cuanta a la hora de acceder a los datos para operar con ellos.1.3. SegmentacinEl 8086/88 tiene un ancho de bus de datos de 16 bits y un ancho de bus de direcciones de 20 bits.Con 20 bits de direcciones se puede acceder a 220 = 1 Mega posiciones de memoria. Como cadadireccin de memoria contiene un byte, el total de memoria accedido por el procesador es de 1Mbyte. El bus de datos de 16 bits lo que implica que en cada acceso a memoria se leen dos1Ensamblador 8086/88posiciones. Esta es la razn por que la que es importante saber el modo de almacenamiento delos datos en memoria, visto en el apartado anterior.El problema que se les plante a los diseadores fue que siendo los registros internos delprocesador de 16 bits, y el bus de direcciones de 20; faltaban 4 bits para poder aprovechar almximo las capacidades de direccionamiento del procesador. Para resolver esto, cada direccinde memoria ser especificada como un segmento y un desplazamiento dentro de ese segmento.Esta solucin divide la memoria en segmemtos de 64 K, lo cual limit bastante los diseos de losprocesadores posteriores de la familia (80286,80386 etc.); aunque posteriormente se idearonmtodos para resolver este problema, como la memoria extendida (no compatible, por supuesto,con el 8086/88).As pues el 8086/88 dispone de una serie de registros para almacenar los valores de segmentos,como veremos en los siguientes apartados.Para obtener la direccin de memoria (direccin efectiva): se toma el valor de registro desegmento, se desplaza 4 bits, y se le suma el valor del desplazamiento.SegmentoDesplazamiento +Direccin efectiva0000 0000 0000 10100101 1111 0000 10100000 0101 1111 0101 1010desplazado 4 bitsEsta operacin la realiza el procesador de forma interna automticamente.2. Registros internosEl 8086/88 dispone de 4 registros de datos, 4 registros de segmento, 5 registros de ndice y 1registro de estado.2.1. Registros de datosLos registros de datos son de 16 bits, aunque estn divididos. lo que permite su acceso en 8 bits.Estos registros son de propsito general aunque todos tiene alguna funcin por defecto.AX (acumulador) se usa para almacenar el resultado de las operaciones, es al nico registro conel que se puede hacer divisiones y multiplicaciones. Puede ser accedido en 8 bits como AH parala parte alta (HIGH) y AL (LOW) para la parte baja.AX:AHALBX (registro base) almacena la direccin base para los accesos a memoria. Tambin puedeaccederse como BH y BL, parte alta y baja respectivamente.CX (contador) acta como contador en los bucles de repeticin. CL (parte baja del registro)almacena el desplazamiento en las operaciones de desplazamiento y rotacin de mltiples bits.DX (datos) es usado para almacenar los datos de las operaciones.2.2. Registros de segmentoLos registros de segmento son de 16 bits (como ya se dicho antes) y contienen el valor desegmento.CS (segmento de cdigo) contiene el valor de segmento donde se encuentra el cdigo. Acta enconjuncin con el registro IP (que veremos ms adelante) para obtener la direccin de memoriaque contiene la prxima instruccin. Este registro es modificado por las instrucciones de saltoslejanos.2Departamento de Arquitectura y Tecnologa de Computadores: Universidad de SevillaDS (segmento de datos) contiene el segmento donde estn los datos.ES (segmento extra de datos) es usado para acceder a otro segmento que contiene ms datos.SS (segmento de pila) contiene el valor del segmento donde est la pila. Se usa conjuntamentecon el registro SP para obtener la direccin donde se encuentra el ltimo valor almacenado en lapila por el procesador.2.3. Registros de ndiceEstos registros son usados como ndices por algunas instrucciones. Tambin pueden ser usadoscomo operandos (excepto el registro IP).IP (ndice de programa) almacena el desplazamiento dentro del segmento de cdigo. Este registrojunto al registro CS apunta a la direccin de la prxima instruccin. No puede ser usado comooperando en operaciones aritmtico/lgicas.SI (ndice de origen) almacena el desplazamiento del operando de origen en memoria en algunostipos de operaciones (operaciones con operandos en memoria).DI (ndice de destino) almacena el desplazamiento del operando de destino en memoria enalgunos tipos de operaciones (operaciones con operandos en memoria).SP (ndice de pila) almacena el desplazamiento dentro del segmento de pila, y apunta al ltimoelemento introducido en la pila. Se usa conjuntamente con el registro SS.BP (ndice de base) se usa para almacenar desplazamiento en los distintos segmentos. Pordefecto es el segmento de la pila2.4. Registro de estadoEl registro de estado contiene una serie de banderas que indican distintas situaciones en las quese encuentra el procesador15----OF DF IFTF SF ZF-AF-PF-0CFOF: DesbordamientoDF: Direccin en operaciones con cadenasIF: Indicador de interrupcinTF: Modo trazaSF: Indicador de signo en operaciones con signoZF: Indicador de ceroAF: Acarreo del bit 3 en ALPF: Bit de paridadCF: AcarreoOF (desbordamiento) es el principal indicador de error producido durante las operaciones consigno. Vale 1 cuando:La suma de dos nmeros con igual signo o la resta de dos nmeros con signo opuestoproducen un resultado que no se puede guardar (ms de 16 bits).El bit ms significativo (el signo) del operando ha cambiado durante una operacin dedesplazamiento aritmtico.El resultado de una operacin de divisin produce un cociente que no cabe en el registrode resultado.DF (direccin en operaciones con cadenas) si es 1 el sentido de recorrido de la cadena es deizquierda a derecha, si es 0 ir en sentido contrario.IF (indicador de interrupcin) cuando vale 1 permite al procesador reconocer interrupciones. Si sepone a 0 el procesador ignorar las solicitudes de interrupcin.3Ensamblador 8086/88TF (modo traza) indica al procesador que la ejecucin es paso a paso. Se usa en la fase dedepuracin.SF (indicador de signo) solo tiene sentido en las operaciones con signo. Vale 1 cuando en una deestas operaciones el signo del resultado es negativo.ZF (indicador de cero) vale 1 cuando el resultado de una operacin es cero.AF (acarreo auxiliar) vale 1 cuando se produce acarreo o acarreo negativo en el bit 3.PF (paridad) vale 1 si el resultado de la operacin tiene como resultado un nmero con un nmeropar de bits a 1. Se usa principalmente en transmisin de datos.CF (bit de acarreo) vale 1 si se produce acarreo en una operacin de suma, o acarreo negativo enuna operacin de resta. Contiene el bit que ha sido desplazado o rotado fuera de un registro oposicin de memoria. Refleja el resultado de una comparacin.3. Modos de direccionamientoLos modos de direccionamiento indican la manera de obtener los operandos y son:Direccionamiento de registroDireccionamiento inmediatoDireccionamiento directoDireccionamiento indirecto mediante registroDireccionamiento indirecto por registro baseDireccionamiento indexadoDireccionamiento indexado respecto a una baseEl tipo de direccionamiento se determina en funcin de los operandos de la instruccin.La instruccin MOV realiza transferencia de datos desde un operando origen a un operandodestino (se ver ms con ms detalle en los siguientes apartados). Su formato es el siguiente:MOV destino, origen3.1. Direccionamiento de registroCuando ambos operando son un registro.Ejemplo:MOV AX,BX;transfiere el contenido de BX en AX3.2. Direccionamiento inmediatoCuando el operando origen es una constante.Ejemplo:MOV AX,500;carga en AX el valor 500.3.3. Direccionamiento directoCuando el operando es una direccin de memoria. sta puede ser especificada con su valor entre[ ], o bien mediante una variable definida previamente (cmo definir etiquetas se ver msadelante).Ejemplo:MOV BX,[1000]MOV AX,TABLA; almacena en BX el contenido de la direccin dememoria DS:1000.; almacena enAX el contenido de la direccin dememoria DS:TABLA.4Departamento de Arquitectura y Tecnologa de Computadores: Universidad de SevillaSEGMENTODE DATOSMOV AX, TABLAAXAABB00000001000200030004BBAATABLATABLA + 23.4. Direccionamiento indirecto mediante registroCuando el operando esta en memoria en una posicin contenida en un registro (BX, BP, SI o DI).Ejemplo:MOV AX,[BX]; almacena en AX el contenido de la direccin dememoria DS:[BX].SEGMENTODE DATOSMOV AX, [BX]00000001000200030004BXAX0001AABBBBAAMOV [BP],CX; almacena en alcontenido de CX.direccinapuntadaporBPen3.5. Direccionamiento por registro baseCuando el operando esta en memoria en una posicin apuntada por el registro BX o BP al que sele aade un determinado desplazamientoEjemplo:MOV AX, [BP] + 2 ; almacena en AX el contenido de la posicin de memoria que resulte de sumar 2 al contenido de BP (dentro de segmento de pila). Equivalente a MOV AX, [BP + 2]5Ensamblador 8086/88MOV AX, [BP]+2SEGMENTO DE PILA001A001B001C001D001E001F+BPAX001AAABBBBAAEste tipo de direccionamiento permite acceder ,de una forma cmoda, a estructuras de datos quese encuentran en memoria.3.6. Direccionamiento indexadoCuando la direccin del operando es obtenida como la suma de un desplazamiento ms un ndice(DI, SI).Ejemplo: MOV AX, TABLA[DI]; almacena en AX el contenido de la posicinde memoria apuntada por el resultado de sumarle a TABLA el contenido deDI.SEGMENTODE DATOS0001000200030004TABLA + 2TABLAMOV AX, TABLA[DI]+DI0004AXAABB00050006BBAATABLA + 43.7. Direccionamiento indexado respecto a una baseCuando la direccin del operando se obtiene de la suma de un registro base (BP o BX), de unndice (DI, SI) y opcionalmente un desplazamiento.Ejemplo: MOV AX, TABLA[BX][DI] ; almacena en AX el contenido de la posicinde memoria apuntada por la suma de TABLA, el contenido de BX y elcontenido de DI.4. Juegos de InstrucccionesLas instrucciones del 8086/88 se pueden dividir en varios grupos:Instrucciones de transferencia de datosInstrucciones aritmticas6Departamento de Arquitectura y Tecnologa de Computadores: Universidad de SevillaInstrucciones lgicasInstrucciones de desplazamiento y rotacionesInstrucciones de E/SInstrucciones de control del flujo del programaInstrucciones de cadena de caracteres4.1. Instrucciones de transferencia de datosLas instrucciones de transferencia de datos copian datos de un sitio a otro y son: MOV, XCHG,XLAT, LEA, LDS, LES, LAHF, SAHF, PUSH, PUSHF, POP, POPF.MOV realiza la transferencia de datos del operando de origen al destino. Como ya hemos visto enla parte de los modos de direccionamiento, MOV admite todos los tipos de direccionamiento.Ambos operandos deben ser del mismo tamao y no pueden estar ambos en memoria.MOVMOVMOVMOVMOVMOVMOVMOVMOVreg, reg; reg es cualquier registro.mem, reg; mem indica una posicin de memoriareg, memmem, dato ; dato es una constantereg, datoseg-reg, mem;seg-reg es un registro de segmentoseg-reg, regmem, seg-regreg, seg-regXCHG realiza el intercambio entre los valores de los operandos. Puede tener operando enregistros y en memoria:XCHG reg, memXCHG reg, regXCHG mem, regEjemplo:XCHG AX, BXAXBX12340001AXBX00011234XLAT carga en AL el contenido de la direccin apuntada por [BX+AL].Ejemplo:XLAT0FFFSEGMENTODE DATOSALBXAL1000011000+10011002BBBB100310047Ensamblador 8086/88LEA carga en un registro especificado la direccin efectiva especificada como en el operandoorigen:LEA reg, memEjemplos:LEA AX, [BX]; carga en AX la direccin apuntada por BX.LEA AX, 3[BP+SI] ; carga en AX la direccin resultado de multiplicar por 3 la suma de los contenido de BP y SI.Para este tipo de acceso (el del segundo ejemplo) la instruccin LEA es mas eficiente, que con lainstruccin MOV e instrucciones de multiplicacin.LDS y LES carga el contenido de una direccin de memoria de 32 bits de la siguiente manera: laparte baja en el registro especificado y la parte alta en el registro DS y ES respectivamente.LDS reg, mem32Ejemplo:SEGMENTODE DATOS0FFFLDS AX, [1000h]AXDSBBAADDCC10001001100210031004AABBCCDDPUSH y POP realizan las operaciones de apilado y desapilado en la pila del procesadorrespectivamente, admiten todos los tipos de direccionamiento (excepto inmediato). Los operandosdeben ser siempre de 16 bitsPUSH regPUSH memPUSH seg-regPOP regPOP memPOP seg-regEjemplos:PUSH AXPOP DS; enva a la pila AX; carga el primer elemento de la pila en DSPUSHF y POPF apila y desapila el registro de estado, respectivamente.LAHF carga la parte baja del registro de estado en AH.SAHF carga AH en el la parte baja del registro de estado.4.2. Instrucciones aritmticasEste tipo de instrucciones realizan operaciones aritmticas con los operandos. Y son: ADD, ADC,DAA, AAA, SUB, SBB, DAS, AAS, NEG, MUL, IMUL, AAM, DIV, IDIV, AAD, CBW, CWB, INC,DEC.ADD y ADC realizan la suma y la suma con acarreo (bit CF del registro de estado) de dosoperandos, respectivamente, y guardan el resultado en el primero de ellos. Admiten todos los tiposde direccionamiento (excepto que ambos operando estn en memoria).8Departamento de Arquitectura y Tecnologa de Computadores: Universidad de SevillaADD/ADCADD/ADCADD/ADCADD/ADCADD/ADCEjemplo:; JMOVADDMOVreg,mem,reg,reg,mem,regregmeminmediatoinmediato= 34+fAX, FAX, 34J, AXEstas instrucciones afectan a los bits OF, SF, ZF, AF, PF, CF del registro de estado.DAA realizan la correccin BCD empaquetado del resultado de una suma en AL.El 8086/88 realiza las sumas asumiendo que los operados son ambos valores binarios, de maneraque se suman dos valores codificados en BCD empaquetado el resultado puede no ser un valorvlido en este formato:0010 0110+ 0101 01010111 1011(= BCD 26)(= BCD 55)(=7B)DAA0111 1011+ 0000 01101000 0001(= 7B)(= 06)(= BCD 81)Esta instruccin si AF = 1 o el valor de los 4 bits menos significativos del AL es mayor que 9,entonces realiza el primer ajuste BCD. Para ello suma a AL el valor 06h.Despus si CF = 1 o el valor de los 4 bits ms significativos de AL es mayor que 9, realizar elsegundo ajuste BCD. Para ello suma a AL el valor 60hEsta instruccin afecta tambin a los bits OF, SF, ZF, AF y PF del registro de estado.SUB y SBB realizan la resta y la resta con acarreo, respectivamente, de dos operandos yguardan el resultado en el primero de ellos. Admiten todos los modos de direccionamiento,excepto dos operando en memoria.SUB/SBBSUB/SBBSUB/SBBSUB/SBBSUB/SBBEjemplo:; JMOVSUBMOV= F-34AX, FAX, 34J, AXreg,mem,reg,reg,mem,regregmeminmediatoinmediatoEstas instrucciones afectan a los bits OF, SF, ZF, AF, PF, CF del registro de estado.DAS realizan la correccin BCD empaquetado del resultado de una resta en AL. Actan demanera similar a la instruccin de ajuste de la sumaNEG realiza la operacin aritmtica de negado de un operando y guarda el resultado en el mismooperando. Admite todos los tipos de direccionamiento, excepto inmediato.NEG regNEG memLa operacin que realiza es: 0 operando.Afecta a todos lo bits del registro de estado, poniendo el bit AF a 1.9Ensamblador 8086/88MUL e IMUL realizan la multiplicacin y multiplicacin con signo, respectivamente, de contenidode AX y del operando indicado, guardando el resultado en AX, para operaciones de 8 bits y enDX:AX para operaciones de 16 bits. Los formatos son:MUL/IMUL regMUL/IMUL memEjemplo:MOV AX, FFF0hMOV BX, 3MUL BX;DX:AX = FFF0h*3AXFFD000030002AXBXFFF00003BXDXDIV e IDIV realizan la divisin y la divisin con signo, respectivamente. De AX entre el operandopara operaciones de 8 bits, guardando el cociente en AL y el resto en AH; y DX:AX entre eloperando para operaciones de 16 bits guardando el cociente en AX y el resto en DX.DIV/IDIV regDIV/IDIV memEjemplo:MOV AX, FFF1hMOV BX, 7DIV BXAXAXBXFFF50007BXDX249000070005RestoCocienteCBW y CWD realizan la extensin del bit de signo de byte a WORD y de WORD a DWORD,actuando sobre AX y DX:AX, respectivamente. Tal y como se muestra en el figura. Tras estaoperacin el contenido de AH es FFh.7AH07AL0CBW15DX015AX0CWD10Departamento de Arquitectura y Tecnologa de Computadores: Universidad de SevillaEjemplo:MOV AL, -3CBW;AX=-3INC y DEC realizan las operaciones de incremento y decremento, respectivamente, de unoperando, guardando el resultado en el mismo operando. Admiten todos los modos dedireccionamiento excepto el inmediato.INC/DEC regINC/DEV memAfectan a todos los bits de estado del registro de estado.4.3. Instrucciones lgicasRealizan las operaciones lgicas y son: OR, XOR, AND, NOT, TEST, CMP.OR, XOR y AND realizan las operaciones lgicas O, O exclusiva e Y, respectivamente, dedos operandos, guardando el resultado en el primero de ellos. Estas operaciones son bit a bit. Latabla de verdad de estas funciones es:Operandos00110101AND0001OR0111XOR0110Admiten todos los modos de direccionamiento excepto los dos operandos en memoria.AND/OR/XORAND/OR/XORAND/OR/XORAND/OR/XORAND/OR/XORreg,reg,mem,reg,mem,regmemreginmediatoinmediatoAfectan a los bits SF, ZF, PF del registro de estado. Adems ponen a cero los bits CF y OF.NOT realiza la operacin de negado lgico de los bits del operando, guardando el resultado en elmismo operando. Admite todos los modos direccionamiento excepto inmediato.NOT regNOT memNo afecta a ningn bit del registro de estado.4.4. Instrucciones de comparacinEstas instrucciones realizan funciones de comparacin no guardando el resultado, pero si afectaal registro de estado (no cambian a los operandos). Son muy tiles en las instrucciones de saltoque se vern ms adelante.TEST realiza la operacin lgica Y de dos operandos, pero NO afecta a ninguno de ellos, SLOafecta al registro de estado. Admite todos los tipos de direccionamiento excepto los dosoperandos en memoriaTEST reg, regTEST reg, mem11Ensamblador 8086/88TEST mem, regTEST reg, inmediatoTEST mem, inmediatoAfecta a todos los bits del registro de estado, de la misma manera que la instruccin AND.CMP realiza la resta de los dos operandos (como la instruccin SUB) pero NO afecta a ninguno deellos, SLO afecta al registro de estado. Admite todos lo modos de direccionamiento, excepto losdos operando en memoria.CMPCMPCMPCMPCMPreg,reg,mem,reg,mem,regmemreginmediatoinmediatoSe usa con las instrucciones de salto que veremos ms adelante.Instrucciones de desplazamiento y rotacionesRealizan operaciones de desplazamiento y rotaciones de bits, y son: SAL/SHL, SAR, SHR, ROL,ROR, RCL, RCR.SAL/SHL realiza desplazamiento a la izquierda del primer operando tantos bits como indique elsegundo operando, introduciendo un 0 y guardando el bit que sale en el bit CF del registro deestado.CF0Admite los siguientes formatos:SAL/SHL reg, 1; desplaza 1 vez el contenido de regSAL/SHL mem, 1SAL/SHL reg, CL; desplaza tantas veces el contenido de reg como indique CL.SAL/SHL mem, CLAfecta a los bit OF, CF del registro de estado.SAR realiza el desplazamiento a la derecha del operando, repitiendo el bit de signo y guardandoel resultado en el bit CF del registro de estado.CFAdmite los siguientes formatos:SAR reg, 1; desplaza 1 vez el contenido de regSAR mem, 1SAR reg, CL; desplaza tantas veces el contenido de reg como indique CL.SAR mem, CLAfecta a todos los bit del registro de estado.SHR realiza el desplazamiento a la derecha del operando, introduciendo un 0 y guardando elresultado en el bit CF del registro de estado.0CFAdmite los siguientes formatos:SHR reg, 1; desplaza 1 vez el contenido de regSHR mem, 1SHR reg, CL; desplaza tantas veces el contenido de reg como indique CL.12Departamento de Arquitectura y Tecnologa de Computadores: Universidad de SevillaSHR mem, CLAfecta a los bit OF, CF del registro de estado.RCL realiza la rotacin a la izquierda de los bits del operando a travs del bit CF (acarreo) delregistro de estado.CFAdmite los siguientes formatos:RCL reg, 1; desplaza 1 vez el contenido de regRCL mem, 1RCL reg, CL; desplaza tantas veces el contenido de reg como indique CL.RCL mem, CLAfecta a los bit OF, CF del registro de estado.RCR realiza la rotacin a la derecha de los bits de operando a travs del bit CF del registro deestado.CFAdmite los siguientes formatos:RCR reg, 1; desplaza 1 vez el contenido de regRCR mem, 1RCR reg, CL; desplaza tantas veces el contenido de reg como indique CL.RCR mem, CLAfecta a los bit OF, CF del registro de estado.ROL realiza la rotacin a la izquierda de los bits del operando, ignorando el bit CF del registro deestado, aunque en CF se almacena el bit que se rota.CFAdmite los siguientes formatos:ROL reg, 1; desplaza 1 vez el contenido de regROL mem, 1ROL reg, CL; desplaza tantas veces el contenido de reg como indique CL.ROL mem, CLAfecta a los bit OF, CF del registro de estado.ROR realiza la rotacin a la derecha de los bits del operando, ignorando el bit CF del registro deestado, aunque en CF se almacena el bit que se rota.CFAdmite los siguientes formatos:ROL reg, 1; desplaza 1 vez el contenido de regROL mem, 1ROL reg, CL; desplaza tantas veces el contenido de reg como indique CL.ROL mem, CLAfecta a los bit OF, CF del registro de estado.13Ensamblador 8086/88NOTA: Las instrucciones SHL/SAL y SAR se suelen usar para hacer divisiones y multiplicaciones,respectivamente, por nmeros potencia de dos (2, 4, 8,16, 32, 64 y 128), de manera ms eficienteque las instrucciones DIV y MUL.Ejemplo:MOV AX, 40hMOV CL, 2SHL AX, CL; es equivalente y mas eficiente queMOV AX, 40hMOV DX, 00hMOV BX, 04hDIV BX4.5. Instrucciones de E/SSe usan para la comunicacin con los dispositivos perifricos. Y son IN, OUT.IN lee de un puerto (slo si la direccin del puerto es menor que 255). Admite las siguientesformas:IN AX, inmediatoIN AX, DX ;obtiene un WORD del puerto especificado y lo guarda en AX;obtiene un WORD del puerto especificado en DX y loguarda en AXOUT escribe en un puerto (slo si la direccin del puerto es menor que 255). Admite las siguientesformas:OUT inmediato, AXOUT DX, AX ;escribe un WORD (contenido en AX) en el puerto especificado;escribe un WORD (contenido en AX) en el puertoespecificado en DX.4.6. Instrucciones de control del programaSe utilizan para el control del programa, son instrucciones de salto, bucles y llamadas aprocedimientos.Instrucciones de saltoEstas instrucciones permiten saltar a otras partes del cdigo. Todas cambian el registro IP(contador de programa) y el registro CS (segmento de cdigo) si es un salto lejano. Un salto eslejano cuando la direccin a la que se salta no est en el mismo segmento de cdigo.Existen dos tipos de saltos: los absolutos; en lo que se especifica la direccin absoluta a la que sesalta; y los relativos; que son saltos hacia delante o hacia atrs desde el valor de IP.JMP realiza un salto incondicional a la direccin especificada. La siguiente tabla relaciona los tiposde saltos y los argumentos que puede tomar esta instruccin.CercanoRelativoAbsoluto8 16 bitsMemregLejano-InmediatomemSaltos condicionales estas instrucciones realizan el salto a la direccin especificada en funcinde si se cumple o no una condicin. Para evaluar la condicin se considera el registro de estado,esto quiere decir que la condicin depende directamente de la instruccin anterior. En la siguiente14Departamento de Arquitectura y Tecnologa de Computadores: Universidad de Sevillatabla se presentan estas instrucciones en funcin del tipo de operandos y la condicin que sequiere evaluar.Condicin=>