Professional Documents
Culture Documents
Ensamblador
DESVENTAJAS
Tiempo de programacin
Programas fuente grandes
Peligro de afectar recursos inesperadamente
Falta de portabilidad
UNIDAD DE CONTROL
Es la seccin del procesador que contiene la lgica de
funcionamiento del mismo; es decir, esta circuitera
gobierna el comportamiento de los distintos elementos en
el procesador, coordinando los procesos , as como las
distintas microoperaciones necesarias para la ejecucin.
Por tanto, tiene dos funciones principales:
Generar la secuencia de estados del procesador, lo que
logra gracias a la ejecucin del microcdigo.
Decodificar las instrucciones, determinando as los pasos
para su ejecucin.
REGISTROS DE PROPOSITO
GENERAL
AX: Registro de acumulador
Este registro es el ms usado, siendo de
propsito general; y tiene ciertas
especializaciones, de ah su nombre:
Es el nico que puede ser usado como
multiplicando en la multiplicacin
Es el nico que puede ser usado como
dividendo en la divisin
Es el parmetro que selecciona los distintos
servicios del Sistema Operativo, usados
mediante el mecanismo de Interrupciones.
REGISTROS DE PROPOSITO
GENERAL
BX: Registro de Base
Este registro, adems de las
caractersticas generales de los registros
de propsito general, se especializa
en el acceso a memoria en combinacin
con los registros de ndice, especialmente
para el manejo de arreglos.
REGISTROS DE PROPOSITO
GENERAL
CX: Registro de Contador
Este registro, como su nombre indica, ser
ampliamente usado como contador. Puede ser
usado como cualquier registro de propsito
general, pero tiene capacidades especiales para
ser usado en instrucciones:
de manejo de ciclos
como contador en los corrimientos
de manejo de memoria y strings
REGISTROS DE PROPOSITO
GENERAL
DX: Registro de Datos
Este registro de propsito general tiene como
especializaciones:
Formar con AX nmeros de 32 bits, siendo en
este caso la parte ms significativa.
El acceso a puertos. Las instrucciones IN y
OUT, que permiten dicho acceso, requerirn en
ciertos casos que el nmero de puerto est en
DX.
REGISTROS INDICES
REGISTROS DE PILA
BANDERAS
ZF: Bandera de resultado 0
Se prende cuando el resultado de la ltima operacin
realizada en el ALU fue un 0.
CF: Bandera de carry
Se prende cuando el resultado de la ltima operacin
realizada en el ALU (necesariamente, una suma o resta)
gener un carry o un borrow.
OF: Bandera de overflow
Se prende cuando el resultado de la ltima operacin
realizada en el ALU excedi la capacidad del registro
donde se almacena (overflow).
BANDERAS
SF: Bandera de signo
Se prende cuando el resultado de la ltima operacin
realizada en el ALU fue negativo, segn la
representacin de complemento a 2 q
AF: Bandera de carry auxiliar
Se prende cuando el resultado de la ltima operacin
realizada en el ALU gener un carry cuando estaba a la
mitad. Por ejemplo, si sumamos dos nmeros de 16 bits,
nos indicar si la suma de las partes bajas (primeros 8
bits) haba generado carry; si sumamos dos nmeros de
8 bits, indica si el resultado intermedio despus de
sumar los 4 bits menos significativos, gener carry para
sumarse a los bits 5.
BANDERAS
MODOS DE
DIRECCIONAMIENTO
Direccionamiento implcito
Depende solamente de la instruccin, es decir, la instruccin
no lleva parmetros.
Particularmente en instrucciones que no accesan memoria, o
bien que tienen una forma especfica de accesarla.
Ejemplos: PUSHF, POPF, NOP
MODOS DE
DIRECCIONAMIENTO
Modo registro
Usa solamente registros como operandos
Es el ms rpido, pues minimiza los recursos
necesarios (toda la informacin fluye dentro del EU
del CPU)
Ejemplo:
MOV AX, BX
MODOS DE
DIRECCIONAMIENTO
Modo inmediato
Tiene dos operandos: un registro y una constante
que se usa por su valor.
El valor constante no se tiene que buscar en
memoria, pues ya se obtuvo al hacer el "fetch" de la
instruccin.
Por tanto, es rpido aunque no tanto como el modo
registro; requiere ir al BIU por el dato.
Ejemplo:
MOV AH, 9
MODOS DE
DIRECCIONAMIENTO
Modo directo
Uno de los operandos involucra una localidad
especfica de memoria
El valor constante se tiene que buscar en memoria,
en la localidad especificada.
Es ms lento que los anteriores, pero es el ms
rpido para ir a memoria, pues ya "sabe" la
localidad, la toma de la instruccin y no la tiene que
calcular.
Ejemplo:
MOV AH, [0000]
MOV AH, Variable
MODOS DE
DIRECCIONAMIENTO
Modo indirecto
Se usan los registros SI, DI como apuntadores
El operando indica una localidad de memoria, cuya
direccin (slo la parte desplazamiento) est en SI o DI.
Es ms lento que los anteriores, pues tiene que
"calcular" la localidad
Ejemplos:
MOV AL, [SI]
MOV BL, ES:[SI] ; Aqu se dice que se usa un "segment
override", donde se indica que en vez de usar el
segmento de datos por defecto, se use en su lugar como
referencia el segmento extra.
MODOS DE
DIRECCIONAMIENTO
Modo indexado de base
Formato:
[
BX o BP
+ SI o DI (opcionales)
+ constante (opcional)
]
BX o BP indica una localidad base de la memoria
A partir de BX o BP, se puede tener un desplazamiento variable y uno
constante
La diferencia es el segmento sobre el que trabajan por defecto:
BX por defecto en el segmento de datos
BP por defecto en el segmento de pila.
Ejemplos:
MOV AX, [BX]
MOV DX, [BX+2]
MOV CX, [BX+DI]
MOV DL, [BX+SI+3]
Instrucciones aritmticas:
Instruccin
Operandos
Funcin equivalente en
"C"
ADD
op1, op2
SUB
op1, op2
ADC
op1, op2
SBB
op1, op2
INC
op1
op1 ++;
DEC
op1
op1 --;
MUL
op1
AX = AL * op1
(DX:AX) = AX * op1
AL = AX / op1
DIV
op1
Resultados
AH = AX % op1
Si op1 es tipo word:
NEG
op1
op1 = - op1
ROTACIONES Y
DESPLAZAMIENTOS
OPERACIONES LOGICAS
Instruccin
Operandos
AND
op1, op2
OR
op1, op2
XOR
op1, op2
NOT
op1
op1 = ~op1
CONDICIONES Y SALTOS
Instruccin
Operandos
JMP
etiqueta
CMP
op1, op2
Descripcin
Bandera
Examinada
Comparaciones
sin signo
JB/JNAE
etiqueta
CF
JNB/JAE
etiqueta
CF
JBE/JNA
etiqueta
CF, AF
JNBE/JA
etiqueta
CF, ZF
JE/JZ
etiqueta
ZF
JNE/JNZ
etiqueta
ZF
CONDICIONES Y SALTOS
Bandera
Examinada
Instruccin
Operandos
Descripcin
JL/JNGE
etiqueta
SF, OF
JNL/JGE
etiqueta
SF, OF
JLE/JNG
etiqueta
ZF, SF, OF
JNLE/JG
etiqueta
ZF, SF, OF
JP/JPE
etiqueta
PF
JNP/JPO
etiqueta
PF
JS
etiqueta
SF
JNS
etiqueta
SF
JC
etiqueta
CF
JNC
etiqueta
CF
JO
etiqueta
OF
JNO
etiqueta
OF
Uso de
procedimientos/subrutinas
Instruccin
Operandos
CALL
etiqueta
Llamada a funcin
PUSH IP
PUSH CS ; Slo si es llamada larga (CALL FAR)
JMP etiqueta
RET
(ninguno)
return
POP IP-temp
POP CS-temp ; Slo si es llamada larga (RETF)
JMP CS-temp:IP-temp
Formato de Programa
.MODEL SMALL
.CODE
.DATA
Programa:
MOV AX,4C00H
INT 21H
.STACK
END Programa
Llamada a procedimientos
Page 60,132
Title llamada a procedimiento
.model small
.stack 64
.data
;
.code
Empezar proc far
Call B10
Mov AX, 4C00H
Int 21H
Empezar endp
;.
B10 proc near
Call C10
Ret
B10 endp
;.
C10 proc near
Ret
C10 endp
;...
End empezar