Está en la página 1de 12

Instituto Tecnolgico De Estudios Superiores De Los Cabos

Unidad 2. Elementos del lenguaje


2.3. Tipos de ciclos. Un ciclo, conocido tambin como iteracin, es la repeticin de un proceso un cierto nmero de veces hasta que alguna condicin se cumpla . En estos ciclos se utilizan los brincos "condicionales" basados en el estado de las banderas. 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 (231)

La intruccion LOOP requiere de un valor inicial en el registro CX, en cada iteracion, LOOP de forma automatica disminuye 1de CX. Si el valor en el CX es cero, el control pasa ala instruccin que sigue; si el valor en el CX no es cero, el control pasa ala direccion del operando. La distancia debe de ser un salto corto, desde -128 hasta +127 bytes para una operacin que exeda este limite, el ensamblador envia un mensaje como salto relativo fuera de rango

Formato general para loop: [etiqueta:]LOOP direccion corta Existen dos variaciones de la instruccin LOOP, ambas tambien decrementan el CX en 1. LOOPE/LOOPZ (repite el ciclo mientras sea igual o repite el ciclo mientras sea cero) continua el ciclo mientras el valor en el CX es cero o la condicion de cero esta establecida. LOOPNE/LOOPNZ(repite el ciclo mientras no sea igual o repite el ciclo mientras sea cero) continua el ciclo mientras el valor en el CX no es cero o la condicion de cero no esta establecida. LOOPE: Esta instruccin decrementa CX en 1. Si CX es diferente a cero y ZF es igual a 1, entonces el flujo del programa se transfiere a la etiqueta indicada como operando.

Lenguaje Ensamblador

Instituto Tecnolgico De Estudios Superiores De Los Cabos

LOOPNE: Esta instruccin decrementa a CX en 1 y transfiere el flujo del programa solo si ZF es diferente a 0. LOOPNZ: Repite mientras no sea igual / cero. Controla la ejecucin repetitiva de una rutina desde Short label si CX no es igual a 0 y ZF=0, CX -1 --> CX LOOPZ: Repite mientras sea igual / cero. Controla la ejecucin repetitiva de una rutina desde Short label si CX no es igual a 0 y ZF=1, CX -1 --> CX (232)

Lenguaje Ensamblador

Instituto Tecnolgico De Estudios Superiores De Los Cabos

2.4. Operadores lgicos Instruccin AND (241) Realiza la conjuncin de los operandos bit por bit. Sintaxis: AND destino, fuente Con esta instruccin se lleva a cabo la operacin "y" lgica de los dos operandos: Fuente Destino | Destino -------------------------11|1 10|0 01|0 00|0 El resultado de la operacin se almacena en el operando destino. Instruccin NEG Genera el complemento a 2 Sintaxis: NEG destino Esta instruccin genera el complemento a 2 del operando destino y lo almacena en este mismo operando. Por ejemplo, si AX guarda el valor de 1234H, entonces: NEG AX Nos dejara almacenado en el registro AX el valor EDCCH. (241) Instruccin NOT Lleva a cabo la negacin bit por bit del operando destino. (241) Sintaxis: NOT destino El resultado se guarda en el mismo operando destino.
Lenguaje Ensamblador

Instituto Tecnolgico De Estudios Superiores De Los Cabos

Instruccin OR (241) OR inclusivo lgico Sintaxis: OR destino, fuente La instruccin OR lleva a cabo, bit por bit, la disyuncin inclusiva lgica de los dos operandos: Fuente Destino | Destino -------------------------11|1 10|1 01|1 00|0 Instruccin TEST (241) Comparar lgicamente los operandos Sintaxis: TEST destino, fuente Realiza una conjuncin, bit por bit, de los operandos, pero a diferencia de AND esta instruccin no coloca el resultado en el operando destino, solo tiene efecto sobre el estado de las banderas. Instruccin XOR (241) OR exclusivo Sintaxis: XOR destino, fuente Su funcin es efectuar bit por bit la disyuncin exclusiva lgica de los dos operandos. Fuente Destino | Destino -------------------------11|0 10|1 01|1 00|0

Lenguaje Ensamblador

Instituto Tecnolgico De Estudios Superiores De Los Cabos

2.5. Desplazamiento Las instrucciones de corrimiento, que son parte de la capacidad lgica de la computadora, pueden realizar las siguientes acciones: 1. Hacer referencia a un registro o direccin de memoria. 2. Recorre bits a la izquierda o a la derecha. 3. Recorre hasta 8 bits en un byte, 16 bits en una palabra y 32 bits en una palabra doble. 4. Corrimiento lgico (sin signo) o aritmtico (con signo). (251) (252) (253) (254) El segundo operando contiene el valor del corrimiento, que es una constante (un valor inmediato) o una referencia al registro CL. Para los procesadores 8088/8086, la constante inmediata solo puede ser 1; un valor de corrimiento mayor que 1 debe estar contenido en el registro CL. Procesadores posteriores permite constantes de corrimiento inmediato hasta 31. (251) (252) (253) (254) El formato general para el corrimiento es: | [Etiqueta:] | Corrimiento | {registro/memoria}, {CL/inmediato} | Las instrucciones de rotacin, que son parte de la capacidad lgica de la computadora, pueden realizar las siguientes acciones: 1. Hacer referencia a un byte o a una palabra. 2. Hacer referencia a un registro o a memoria. 3. Realizar rotacin a la derecha o a la izquierda. El bit que es desplazado fuera llena el espacio vacante en la memoria o registro y tambin se copia en la bandera de acarreo. 4. Realizar rotacin hasta 8 bits en un byte, 16 bits en una palabra y 32 bits en una palabra doble.
Lenguaje Ensamblador

Instituto Tecnolgico De Estudios Superiores De Los Cabos

5. Realizar rotacin lgica (sin signo) o aritmtica (con signo). (251) (252) (253) (254) El segundo operando contiene un valor de rotacin, el cual es una constante (un valor inmediato) o una referencia al registro CL. Para los procesadores 8088/8086, la constante inmediata solo puede ser 1; un valor de rotacin mayor que 1 debe estar contenido en el registro CL. Procesadores posteriores permite constantes inmediatas hasta el 31. (251) (252) (253) (254) El formato general para la rotacin es: | [Etiqueta:] | Rotacin | {registro/memoria}, {CL/inmediato} | 2.5.1. Desplazamiento lineal Corrimiento a la derecha Los corrimientos hacia la derecha (SHR y SAR) mueven los bits hacia la derecha en el registro designado. El bit recorrido fuera del registro mete la bandera de acarreo. Las instrucciones de corrimiento a la derecha estipulan datos lgicos (sin signo) o aritmticos (con signo): (251) (252) (253) (254)

Figura 2.5.1.1 Las siguientes instrucciones relacionadas ilustran SHR y datos con signo: INSTRUCCION MOV MOV CL, 03 AL, 10110111B ; AL = 10110111 ; AL = 01011011 ; AL = 00001011 Un corrimiento a la derecha Tres corrimientos adicionales a la COMENTARIO

SHR AL, 01 SHR AL, CL

derecha
Lenguaje Ensamblador

Instituto Tecnolgico De Estudios Superiores De Los Cabos

El primer SHR desplaza el contenido de AL un bit hacia la derecha. El bit de ms a la derecha es enviado a la bandera de acarreo, y el bit de mas a la izquierda se llena con un cero. El segundo SHR desplaza tres bits ms a AL. La bandera de acarreo contiene de manera sucesiva 1, 1 y 0; adems, tres bits 0 son colocados a la izquierda del AL. (251) (252) (253) (254) SAR se difiere de SHR en un punto importante: SAR utiliza el bit de signo para llenar el bit vacante de ms a la izquierda. De esta manera, los valores positivos y negativos retienen sus signos. Las siguientes instrucciones relacionadas ilustran SAR y datos con signo en los que el signo es un bit 1: En especial, los corrimientos a la derecha son tiles para (dividir entre 2) obtener mitades de valores y son mucho ms rpidas que utilizar una operacin de divisin. Al terminar una operacin de corrimiento, puede utilizar la instruccin JC (Salta si hay acarreo) para examinar el bit desplazado a la bandera de acarreo. Corrimiento a la izquierda Los corrimientos hacia la izquierda (SHL y SAL) mueven los bits a la izquierda, en el registro designado. SHL y SAL son idnticos en su operacin. El bit desplazado fuera del registro ingresa a la bandera de acarreo. Las instrucciones de corrimiento hacia la izquierda estipulan datos lgicos (sin signo) y aritmticos (con signo): (251) (252) (253) (254) SHL: Desplazamiento lgico a la izquierda aritmtico a la izquierda. (251) (252) (253) (254) SAL: Desplazamiento

Figura 2.5.1.2 Las siguientes instrucciones relacionadas ilustran SHL para datos sin signo: INSTRUCCION MOV CL, 03 COMENTARIO

Lenguaje Ensamblador

Instituto Tecnolgico De Estudios Superiores De Los Cabos

MOV

AL, 10110111B

; AL = 10110111 ; AL = 01101110 Un corrimiento a la izquierda

SHL AL, 01 SHL AL, CL

; AL = 01110000 Tres corrimientos mas

El primer SHL desplaza el contenido de AL un bit hacia la izquierda. El bit de ms a la izquierda ahora se encuentra en la bandera de acarreo, y el ltimo bit de la derecha del AL se llena con cero. El segundo SHL desplaza tres bits ms a AL. La bandera de acarreo contiene en forma sucesiva 0, 1 y 1, y se llena con tres ceros a la derecha del AL. (251) (252) (253) (254) Los corrimientos a la izquierda llenan con cero el bit de mas a la derecha. Como resultado de esto, SHL y SAL don idnticos. Los corrimientos a la izquierda en especial son tiles para duplicar valores y son mucho ms rpidos que usar una operacin de multiplicacin. (251) (252) (253) (254) Al terminar una operacin de corrimiento, puede utilizar la instruccin JC (Salta si hay acarreo) para examinar el bit que ingreso a la bandera de acarreo. 2.5.2. Desplazamiento circular Rotacin a la derecha Las rotaciones a la derecha (ROR y RCR) desplazan a la derecha los bits en el registro designado. Las instrucciones de rotacin a la derecha estipulan datos lgicos (sin signo) o aritmticos (con signo): (251) (252) (253) (254)

Figura 2.5.2.1 Las siguientes instrucciones relacionadas ilustran ROR:

Lenguaje Ensamblador

Instituto Tecnolgico De Estudios Superiores De Los Cabos

INSTRUCCION MOV MOV ROR ROR CL, 03 BH, 10110111B BH, 01 BH, CL

COMENTARIO

; BH = 10110111 ; BH = 11011011 ; BH = 00001011 Una rotacin a la derecha Tres rotaciones a la derecha

El primer ROR desplaza el bit de ms a la derecha del BH a la posicin vacante de ms a la izquierda. La segunda y tercera operaciones ROR realizan la rotacin de los tres bits de mas a la derecha. (251) (252) (253) (254) RCR provoca que la bandera de acarreo participe en la rotacin. Cada bit que se desplaza fuera de la derecha se mueve al CF y el bit del CF se mueve a la posicin vacante de la izquierda. (251) (252) (253) (254) Rotacin a la izquierda Las rotaciones a la izquierda (ROL y RCL) desplazan a la izquierda los bits del registro designado. Las instrucciones de rotacin a la izquierda estipulan datos lgicos (sin signo) y aritmticos (con signo): (251) (252) (253) (254)

Figura 2.5.2.2 Las siguientes instrucciones relacionadas ilustran ROL:

INSTRUCCION MOV MOV CL, 03 BL, 10110111B

COMENTARIO

; BL = 10110111

Lenguaje Ensamblador

Instituto Tecnolgico De Estudios Superiores De Los Cabos

SHR SHR

BL, 01 BL, CL

; BL = 11011011 ; BL = 00001011

Una rotacin a la izquierda Tres rotaciones a la izquierda

El primer ROL desplaza el bit de ms a la izquierda del BL a la posicin vacante de ms a la derecha. La segunda y tercera operaciones ROL realizan la rotacin de los tres bits de mas a la izquierda. (251) (252) (253) (254) De manera similar a RCR, RCL tambin provoca que la bandera de acarreo participe en la rotacin. Cada bit que se desplaza fuera por la izquierda se mueve al CF, y el bit del CF se mueve a la posicin vacante de la derecha. Puede usar la instruccin JC (salta si hay acarreo) para comprobar el bit rotado hacia la CF en el extremo de una operacin de rotacin. Codigo implementado

; Uso y desplazamiento de funciones .model tiny .code .stack start: ;inicio del programa mov ax,10 ;ax=10 mov bx,20 ;bx=20 mov cx,3 ;cx=3 call desplazad ;llamada a subrutina desplazamiento call desplazai ;llamada a subrutina desplazamiento call rotad ;llamada a subrutina rotacion call rotai ;llamada a subrutina rotacion mov ax,4c00h ;terminacion del programa int 21h ;vuelta al Dos ;subrutinas desplazad proc ;inicio de subrutina shr ax,1 ;logico sar ax,1 ;aritmetico ret ;vuelve de subrutina desplazad endp ;fin de subrutina
Lenguaje Ensamblador

10

Instituto Tecnolgico De Estudios Superiores De Los Cabos

desplazai proc ;inicio de subrutina shl ax,1 ;logico sal ax,1 ;aritmetico ret ;vuelve de subrutina desplazai endp ;fin de subrutina rotad proc ;inicio de subrutina ror bx,1 rcr bx,1 ;rotacion a traves de carry ret ;vuelve de subrutina rotad endp ;final de subrutina rotai proc ;inicio de subrutina rol bx,1 rcl bx,1 ;rotacion a traves de carry ret ;retorno rotai endp ;fin de subrutina end start; ;Fin de programa (255)

Lenguaje Ensamblador

11

Instituto Tecnolgico De Estudios Superiores De Los Cabos

Referencias 231)http://proton.ucting.udg.mx/dpto/maestros/mateos/novedades/ensamblador/68 HC11.html 232) Lenguaje ensamblador y programacin para IBM PC y compatibles 241) http://moisesrbb.tripod.com/unidad4.htm 251) www.itescam.edu.mx/principal/sylabus/fpdb/recursos/r52144.DOCX 252) www.itescam.edu.mx/principal/sylabus/.../r36917.DOC 253) http://ensam1.blogspot.com/2005/09/64-corrimiento-y-rotacion.html 254) Peter Abel. Lenguaje ensamblador para PC IBM y compatibles. Tercera edicin. Editorial Prentice Hall. Pginas 127-130 255) www.dea.icai.upco.es/sadot/EyTC/Practica_14_Shifts.pdf

Lenguaje Ensamblador

12