Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Unidad2 LenguajesdeInterfaz
Unidad2 LenguajesdeInterfaz
Programacin
bsica
Unidad 2
Ciclos numricos..4
Comparacin y prueba.........5
Saltos..5
Ciclos condicionales....6
Incremento y decremento...7
Instrucciones aritmticas9
Instrucciones lgicas15
Desplazamiento y rotacin...15
Ensamblado
tasm /zi /l nombre donde nombre es el nombre del fichero .asm con
el cdigo fuente. La extensin no es necesaria ponerla y los parmetros
/zi y /l slo son tiles si queremos hacer un proceso de depuracin
(debug) con el Turbo Debugger. Tras la ejecucin de esta lnea se nos
crear un fichero nombre.obj
Linkado y montado
CICLOS NUMERICOS
siguientes instrucciones:
COMPARACION Y PRUEBA
TEST verifica
CMP compara
SALTOS
JMP salta
CICLOS DE CONDICIONALES
Ciclo For
La Sintaxis empleada por el ciclo for es la siguiente:
for (valores de entrada ; condicin de terminacin ; iteracin
por ciclo)
Las tres partes del ciclo se encuentran separadas por ; (punto y
coma)
La primer parte del ciclo especifica valores previos a su inicio.
La segunda parte indica la condicin de terminacin para el ciclo, la
cual est directamente relacionada con los valores iniciales.
Finalmente, la ltima parte especifica cmo sern manipulados los
valores iniciales en cada iteracin del ciclo.
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 contigua a su
inicio. Aunque es recomendable utilizar llaves ({ } ) para incrementar
la legibilidad del cdigo, es importante sealar que esta sintaxis de no
utilizar llaves ({ } ) es vlida y muy comn (Lamentablemente) .
Existe otra variacin de if/else que agrupa las condicionales en una sola
expresin:
Ciclo While
While (condicin)
INCREMENTO Y DECREMENTO
MOV AX,BL
REP repetir
INSTRUCCIONES ARITMTICAS
Instrucciones Aritmticas.
a. Grupo de adicin:
ADD suma
b. Grupo de sustraccin:
SUB resta
c. Grupo de multiplicacin:
MUL multiplicacin
d. Grupo de divisin:
DIV divisin
e. Conversiones:
NEG negacin
MANIPULACIN DE PILA
PUSH introducir
Procesos de Control
Sintaxis:
NOP
Indicadores:
OF DF IF TF SF ZF AF PF CF
- - - - - - - - -
Realiza una operacin nula, es decir, el microprocesador decodifica la
instruccin y pasa
Sintaxis:
Indicadores:
OF DF IF TF SF ZF AF PF CF
- - - - - - - - -
Ejemplo:
ESC 21,AX
Sintaxis:
HLT
Indicadores:
OF DF IF TF SF ZF AF PF CF
- - - - - - - - -
El procesador se detiene hasta que se restaura el sistema o se recibe una
interrupcin. Como en los PC se producen normalmente 18,2
interrupciones de tipo 8 por segundo (del temporizador) algunos
programadores utilizan HLT para hacer pausas y bucles de retardo. Sin
embargo, el mtodo no es preciso y puede fallar con ciertos controladores
de memoria.
LOCK (Bloquea los buses).
Sintaxis:
LOCK
Indicadores:
OF DF IF TF SF ZF AF PF CF
- - - - - - - - -
WAIT (Espera).
Sintaxis:
WAIT
Indicadores:
OF DF IF TF SF ZF AF PF CF
- - - - - - - - -
XLAT (traduccin).
Sintaxis:
XLAT tabla
Indicadores:
OF DF IF TF SF ZF AF PF CF
- - - - - - - - -
La instruccin XLAT tabla carga en el registro AL el contenido de la
posicin [BX][AL], en donde el registro BX ha de apuntar al comienzo de
una tabla. Dicho de otra manera, AL hace de ndice de la tabla y de
almacn destino del contenido de la tabla.
DATOS SEGMENT
TABLA DB 2, 3, 5, 8, 16, 23
DATOS ENDS
CODIGO SEGMENT
MOVE AL, 5
XLAT TABLA
CODIGO ENDS
Otro ejemplo:
MOV AL, 4
XLAT TABLA
Sintaxis:
OF DF IF TF SF ZF AF PF CF
- - - - - - - - -
ADD DX, SI
Sintaxis:
Indicadores:
OF DF IF TF SF ZF AF PF CF
- - - - - - - - -
Traslada un puntero de 32 bits (direccin completa de memoria
compuesta por segmento y desplazamiento), al destino indicado y a DS.
A partir de la direccin indicada por el operando origen, el procesador
toma 4 bytes de la memoria: con los dos primeros forma una palabra que
deposita en destino y, con los otros dos, otra en DS.
Ejemplo:
PUNT DD 12345678H
Sintaxis:
INSTRUCCIONES LGICAS
NOT negacin
OR suma lgica
DESPLAZAMIENTO Y ROTACIN
Sintaxis:
OF DF IF TF SF ZF AF PF CF
x - - - - - - - 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
Sintaxis:
Indicadores:
OF DF IF TF SF ZF AF PF CF
x - - - - - - - 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,
Indicadores:
OF DF IF TF SF ZF AF PF CF
x - - - - - - - x
Ejemplos:
ROL DX,CL
ROL AH,1
Sintaxis:
Indicadores:
OF DF IF TF SF ZF AF PF CF
x - - - - - - - x
Ejemplos:
ROR CL,1
ROR AX,CL
Sintaxis:
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.
Sintaxis:
Indicadores:
OF DF IF TF SF ZF AF PF CF
X - - - x x ? x x
Ejemplos:
SAR AX, CL
SAR BP,1
Sintaxis:
SHR destino, contador
Indicadores:
OF DF IF TF SF ZF AF PF CF
X - - - x x ? x 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
Bloques en ensamblador
MODELOS DE MEMORIA.
Segmentos Punteros
Modelo Cdigo Datos Pila Cdigo Datos
Huge 1 Mb 1 Mb
HUGE: Similar al anterior, pero con algunas ventajas: por un lado, todos
los punteros son normalizados automticamente y se admiten datos
estticos de ms de 64 Kb. Por otro, y gracias a esto ltimo, es factible
manipular bloques de datos de ms de 64 Kb cada uno, ya que los
segmentos de los punteros se actualizan correctamente. Sin embargo,
este modelo es el ms costoso en tiempo de ejecucin de los programas.
Usando la pila
Una seccin de la memoria del programa es reservado para el uso de una
pila. La Intel 80386 y procesadores superiores contienen un registro
llamado puntero a la pila, esp, el cual almacena la direccin del tope de
la pila, la figura 1 de abajo muestra 3 valores enteros, 49, 30 y 72,
almacenados en la pila(cada entero ocupando 4 bytes) con el registro esp
apuntando a la direccin del tope de la pila.
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
ENTRADA Y SALIDA
Dispositivos externos