Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Unidad 2 Lenguajes de Interfaz
Unidad 2 Lenguajes de Interfaz
Programacin
bsica
Unidad 2
NDICE
Ensamblador y ligador a utilizar2
Ciclos numricos..4
Captura bsica de cadenas..5
Comparacin y prueba.........5
Saltos..5
Ciclos condicionales....6
Incremento y decremento...7
Captura de cadenas con formato 8
Instrucciones aritmticas9
Manipulacin de la pila ...10
Obtencin de una cadena con la representacin hexadecimal10
Instrucciones lgicas15
Desplazamiento y rotacin...15
Obtencin de una cadena con la representacin decimal..18
Captura y almacenamiento de datos numricos..19
Operaciones bsicas sobre archivos de disco....22
CICLOS NUMERICOS
Un bucle es un grupo de instrucciones que se ejecutan cclicamente un
nmero concreto de veces. Para construir bucles disponemos de las
siguientes instrucciones:
stas posibilitan el grupo de control ms elemental de nuestros
programas. Un bucle es un bloque de cdigo que se ejecuta varias
veces. Hay 4 tipos de bucles bsicos: o Bucles sin fin o Bucles por
conteo, Bucles hasta o Bucles mientras. Las instrucciones de control
de bucles son las siguientes:
INC incrementar
DEC decrementar
LOOP realizar un bucle
LOOPZ,LOOPE realizar un bucle si es cero
COMPARACION Y PRUEBA
Este grupo es una continuacin del anterior, incluye las siguientes
instrucciones:
TEST verifica
CMP compara
SALTOS
JMP salta
JE, JZ salta si es igual a cero
JNE, JNZ salta si no igual a cero
JS salta si signo negativo
JNS salta si signo no negativo
Ciclo IF
Una caracterstica del ciclo if/else es el uso de llaves { }, en el
ejemplo anterior pudo notar que no fueron utilizadas llaves { } para
delimitar las condicionales, al no emplearse este mecanismo, se
asume que el ciclo o condicional tendr efecto nicamente en la linea
operacin
verdadera
Ciclo While
En este ciclo el cuerpo de instrucciones se ejecuta mientras una
condicin permanezca como verdadera, en el momento en que la
condicin se convierte en falsa el ciclo termina.
Su formato general es:
Cargar o inicializar variable de condicin;
While (condicin)
{
Grupo cierto de instrucciones;
Instruccin(es) para salir del ciclo; };
INCREMENTO Y DECREMENTO
Las instrucciones del ensamblador
Instrucciones de transferencia Son utilizadas para mover los contenidos
de los operandos. Cada instruccin se puede usar con diferentes modos
de direccionamiento.
MOV
MOVS (MOVSB) (MOVSW)
Instruccin MOV
Propsito: Transferencia de datos entre celdas de memoria, registros y
acumulador.
Sintaxis:
MOV Destino, Fuente
NOP
Indicadores:
OF
DF
IF
TF
SF
ZF
AF
PF
CF
Realiza una operacin nula, es decir, el microprocesador decodifica la
instruccin y pasa
a la siguiente. Realmente se trata de la instruccin XCHG AX,AX.
ESC (Salida a un coprocesador).
Sintaxis:
ESC cdigo_operacin, origen
Indicadores:
OF
-
DF
-
IF
-
TF
-
SF
-
ZF
-
AF
-
PF
-
CF
-
DF
-
IF
-
TF
-
SF
-
ZF
-
AF
-
PF
-
CF
-
DF
-
IF
-
TF
-
SF
-
ZF
-
AF
-
PF
-
CF
-
Indicadores:
OF
-
DF
-
IF
-
TF
-
SF
-
ZF
-
AF
-
PF
-
CF
-
DF
-
IF
-
TF
-
SF
-
ZF
-
AF
-
PF
-
CF
-
OF
-
DF
-
IF
-
TF
-
SF
-
ZF
-
AF
-
PF
-
CF
-
Sintaxis:
RCL destino, contador
Indicadores:
OF
x
DF
-
IF
-
TF
-
SF
-
ZF
-
AF
-
PF
-
CF
x
Rotar a la izquierda los bits del operando destino junto con el indicador
de acarreo CF el nmero de bits especificado en el segundo operando. Si
el nmero de bits a desplazar es 1, se puede especificar directamente,
en caso contrario el valor debe cargarse en CL y especificar CL como
segundo operando. No es conveniente que CL sea mayor de 7, en bytes;
15, en palabras.
Ejemplos:
RCL AX,1
RCL AL,CL
RCL DI,1
RCR (Rotacin a la derecha con acarreo).
Sintaxis:
RCR destino, contador
Indicadores:
OF
x
DF
-
IF
-
TF
-
SF
-
ZF
-
AF
-
PF
-
CF
x
Rotar a la derecha los bits del operando destino junto con el indicador
de acarreo CF el nmero de bits especificado en el segundo operando. Si
el nmero de bits es 1 se puede especificar directamente; en caso
contrario su valor debe cargarse en CL y especificar CL como segundo
operando:
Ejemplos:
RCR BX,CL
RCR BX,
ROL (Rotacin a la izquierda).
Sintaxis:
ROL destino, contador
Indicadores:
OF
x
DF
-
IF
-
TF
-
SF
-
ZF
-
AF
-
PF
-
CF
x
DF
-
IF
-
TF
-
SF
-
ZF
-
AF
-
PF
-
CF
x
ROR AX,CL
OBTENCIN DE REPRESENTACION DE CADENAS DECIMAL
Instrucciones de Desplazamiento Lineal
AL/SHL (Desplazamiento aritmtico a la izquierda).
Sintaxis:
SAL/SHL destino, contador
Indicadores:
OF
DF
IF
TF
SF
ZF
AF
PF
CF
X
x
x
?
x
X
Desplaza a la izquierda los bits del operando el nmero de bits
especificado en el segundo operando que debe ser CL si es mayor que 1
los bits desplazados.
DF
-
IF
-
TF
-
SF
x
ZF
x
AF
?
PF
x
CF
x
Ejemplos:
SAR AX, CL
SAR BP,1
SHR (Desplazamiento lgico a la derecha).
Sintaxis:
SHR destino, contador
Indicadores:
OF
X
DF
-
IF
-
TF
-
SF
x
ZF
x
AF
?
PF
x
CF
x
Desplaza a la derecha los bits del operando destino el nmero de los bits
especificados en el segundo operando. Los bits de la izquierda se llena
con cero. Si el nmero de bits a desplazar es 1 se puede especificar
directamente en el caso en que no ocurra se pone el valor en CL:
Ejemplos:
SHR AX,CL
SHR CL,1
CAPTURA Y ALMACENAMIENTO DE DATOS NUMERICOS
Bloques en ensamblador
MODELOS DE MEMORIA.
Los modelos de memoria constituyen las diversas maneras de
acceder a la memoria por parte de los compiladores de C. En el caso del
Turbo C se pueden distinguir los siguientes:
TINY: Se emplea en los programas donde es preciso apurar el consumo
de memoria hasta el ltimo byte. Los 4 registros de segmento (CS, DS,
ES, SS) estn asignados a la misma direccin, por lo que existe un total
de 64 Kb donde se mezclan cdigo, datos y pila. Los programas de este
tipo pueden convertirse a formato COM.
Cdigo
Datos Pila
Cdigo
Datos
1 Mb 64 Kbfar
Compact
Large 1 Mb 1 Mb far
near
far
Huge 1 Mb 1 Mb
(Bloques > 64 Kb)
far
far
La instruccin popl %eax copia el valor del tope de la pila(4 bytes) a eax
e incrementa esp en 4. Qu sucede si no quieres copiar el valor del tope
de la pila a un registro?. Puedes ejecutar la instruccin addl $4, %esp el
cual simplemente incrementa el puntero de la pila.
#Listing 3
.globl main
main:
movl $10, %eax
call foo
ret
foo:
addl $5, %eax
ret
En Listing 3, la instruccin call foo pone la direccin de la instruccin
despus de call en la llamada al programa sobre la pila y va hacia foo.
La subrutina termina con ret, el cual transfiere el control a la instruccin
cuya direccin se toma desde el tope de la pila. Obviamente el tope de
la pila debe contener una direccin vlida