Académique Documents
Professionnel Documents
Culture Documents
Captulo I.
Organizacin de la
computadora digital.
1.1.- Introduccin.
La organizacin de una computadora digital y su arquitectura estn ntimamente
relacionadas; sin embargo, son dos conceptos diferentes que muchas veces se toman como
sinnimo.
La organizacin de una computadora digital se refiere a las unidades lgicas que la
componen (como la Unidad Central de Proceso, la Unidad de Memoria y la Unidad de
Entrada/ Salida), las funciones que realizan, su operacin y la forma en que se relacionan y
se comunican unas con otras.
La arquitectura de las computadoras se enfoca en la forma de construir cada una de
estas unidades lgicas para que realicen las funciones especificadas por su organizacin, as
como la manera en que estas unidades van a comunicarse para interactuar entre ellas.
1.2.- Arquitectura.
Una computadora digital, en su forma mas simple, consta de una Unidad Central de
Proceso, una Unidad de Memoria y una Unidad de Entrada/ Salida. Estas unidades estn
interconectadas mediante un conjunto de lneas de comunicacin que recibe el nombre de
BUS.
La Unidad Central de Proceso (CPU) internamente contiene la Unidad de Control
(CU), la Unidad Aritmtica/ Lgica (ALU) y varios registros. Estn arquitectura bsica se
muestra en forma esquemtica en la figura. 1.1.
Las lneas de datos proporcionan un camino para mover los datos entre los mdulos
del sistema. Estas lneas se llaman en conjunto, el BUS DE DATOS. El bus de datos
consta de por ejemplo 8, 16, o 32 lneas separadas, a este nmero de lneas se hacen
referencia como la anchura del bus de datos.
Como cada lnea puede llevar slo un bit a la vez, el nmero de lneas determina el
nmero de bits que pueden transferir a un tiempo. La anchura del bus de datos es un factor
clave para determinar la ejecucin general del sistema.
Por ejemplo, si el bus de datos es de 8 bits de ancho y cada instruccin es de 16 bits
de longitud, entonces la CPU debe acceder dos veces el mdulo de memoria durante cada
ciclo de instruccin.
Las lneas de direccin se utilizan para designar el origen o el destino de los datos en
el bus de datos. Por ejemplo, si la CPU desea leer una palabra de datos (8,16,32 bits) de la
memoria, coloca la direccin de la palabra deseada en la lnea de direccin. Es claro que la
anchura del bus de direcciones determina la mxima capacidad posible de memoria del
sistema, aplicado la siguiente ecuacin:
Donde:
N= Nmero de lneas del bus de direccin.
Adems, por general las lneas de direccin son empleadas tambin para direccionar
los puertos de E/S.
Las lneas de control se utilizan para controlar el acceso y el uso de los datos y las
lneas de direccin. Puesto que los datos y las lneas de direccin se comparten por todos
los componentes, debe existir un medio para controlar su uso. Las seales de control
transmiten tanto el comando como la informacin de temporizacin entre mdulos del
sistema. Las seales de temporizacin indican la validez de los datos y de la informacin de
direccin. Las seales de comando especifican las operaciones a efectuarse. Es comn que
las lneas de control incluyan:
Escritura a E/S: Causa que los datos que estn en el bus salgan hacia el puerto de
E/S direccionando.
Lectura de E/S: Causa que se coloquen en el bus los datos del puerto de E/S
direccionar.
BUS
CPU
MEMORIA
E/S
Mtodo de arbitraje
Centralizado
Distribuido
Temporizacin
Sncrona
Asncrona
Mtodo de arbitraje.
En todos, excepto en los sistemas demasiado simples, ms de un mdulo podra
necesitar control, del bus. Por ejemplo, un mdulo de E S puede necesitar leer o escribir
directo a memoria, sin enviar los datos a la CPU. Puesto que solo una unidad a la vez puede
transmitir con xito sobre el bus, se necesita algn mtodo de arbitraje. Los diversos
mtodos pueden clasificarse como centralizados o distribuidos. En un esquema
centralizado, un solo dispositivo de hardware, al que se hace referencia como controlador
del bus o rbitro, es responsable de asignar tiempo en el bus. El dispositivo puede ser un
mdulo separado o parte de la CPU. En un esquema distribuido, no hay un controlador
central. En su lugar, cada mdulo contiene lgica de control de acceso y los mdulos actan
juntos para compartir el bus. Con ambos mtodos de arbitraje, el propsito es designar a un
dispositivo como maestro (o amo), ya sea la CPU o un mdulo de E S. Entonces, el
maestro puede iniciar una transferencia de datos (lectura o escritura, por ejemplo) con algn
otro dispositivo, el cul acta como esclavo para ste intercambio en particular.
Temporizacin.
La temporizacin se refiere a la forma en la que se coordinan los eventos en el bus.
Con la temporizacin sncrona, la ocurrencia de los eventos en el bus est determinada por
un reloj. El bus incluye una lnea de reloj sobre la cul un reloj transmite una secuencia
regular de unos y ceros alternados de igual duracin. A una transmisin simple 1 0 se le
conoce como un ciclo de reloj o ciclo de bus y define una ranura de tiempo. Todos los
otros dispositivos en el bus pueden leer la lnea de reloj y, por consiguiente, todos los
eventos inician al principio de un ciclo de reloj. Otras seales de bus pueden cambiar en el
flanco de subida de la seal de reloj (con una ligera reaccin de retrazo).
Con una temporizacin asncrona, la sucesin de un evento en un bus sigue y
depende de la ocurrencia de un evento previo.
1.4 La memoria.
La memoria es aquella parte del sistema computacional que se utiliza para el
almacenamiento y la recuperacin subsiguiente de datos e instrucciones.
Desempeo.
Tiempo de acceso.
Tiempo de ciclo.
Razn de transferencia.
Capacidad
Tamao de la palabra
Numero de palabras
Tipo Fsico.
Semiconductor
Superficie magntica.
Unidad de Transferencia
Palabra
Bloque
Caractersticas fsicas.
Voltil / No voltil
Borrable / No borrable
10
Donde:
TN = Tiempo promedio para leer o escribir N bits.
TA = Tiempo promedio de acceso.
N = Nmero de bits.
R = Razn de transferencia, en bits por segundo (bps).
Una variedad de tipos fsicos de memoria se han empleado. Los dos ms comunes
en la actualidad, son la memoria de semiconductor, que utiliza la tecnologa LSI o VLSI, y
la memoria de superficie magntica, que se utiliza para el disco y la cinta.
Varias caractersticas fsicas de almacenamiento de datos son importantes. En una
memoria voltil, la informacin decae en forma natural o se pierde cuando la potencia
elctrica se apaga. En una memoria no voltil, la informacin una vez registrada permanece
sin deterioro hasta que se cambia de manera deliberada. No se necesita potencia elctrica
para retener la informacin. Las memorias de superficie magntica son no voltiles. La
memoria de semiconductor puede ser voltil o no voltil. La memoria no borrable no puede
ser alterada, excepto mediante la destruccin de la unidad de almacenamiento. La memoria
de semiconductor de este tipo se conoce como memoria de solo lectura (ROM, read only
memory). Por necesidad, una memoria prctica no borrable tambin debe ser no voltil.
Para la memoria de acceso aleatorio, la organizacin es un asunto clave de diseo.
Por organizacin se da a entender el arreglo fsico de los bits para formar palabras.
12
Existen varios tipos de chips de RAM dinmica. El tipo ms antiguo que continua
en uso es la DRAM FPM. (Modo de pgina rpida, Fast Page Mode) internamente, la
organizacin es una matriz de bits; el hardware presenta una direccin de rengln y luego
recorre las direcciones de columna.
13
La DRAM FPM esta siendo reemplazada gradualmente por la DRAM EDO (salida
de datos extendida, Extended Data Output), que permite iniciar una segunda referencia a la
memoria antes de que la anterior se haya completado.
Este sencillo uso de conductos nos hace que una sola referencia a la memoria sea
ms rpida, pero si mejora el ancho de banda de la memoria, que produce las palabras por
segundo.
Tanto los chips FPM como los EDO son asncronos, lo que significa que las lneas
de direccin y de datos no estn controladas por un mismo reloj. En contraste, la SDRAM
(DRAM sincrnica) es un hbrido de RAM esttica y dinmica y es controlado por un solo
reloj sincrnico.
Categora
Borrado
Memoria de acceso
Aleatorio (RAM)
Memoria de
Lectura/
Escritura
Elctrico a
Nivel
byte
Memoria de solo
Lectura /ROM
ROM Programable
(PROM)
Volatibilidad
Voltil
Mscaras
Memoria de solo
lectura
No es
Posible
ROM Programable
(EPROM)
Luz UV a
Nivel chip
Memoria Flash
Electrnico
nivel bloque
Elctrico a
nivel byte
PROM borrable
Elctricamente
(EEPROM)
Mecanismo de
Escritura
De manera
Electrnica
Memoria de
Lectura
Principalmente
De
Manera
Electrnica
No
Voltil
14
15
Presentan dos estados estables (o semi estables), que pueden emplearse para
representar el 1 y el 0 binarios.
Puede escribirse en ellas (al menos una vez) para fijar su contenido.
16
Captulo II.
El P 8086.
17
18
19
20
21
22
23
24
25
Tabla 2.1. Tabla que muestra los segmentos de memoria y los registros de
segmento.
Segmento de memoria
Registro de segmento
seleccionado
Instrucciones
CODIGO (CS)
Stack
Stack (SS)
Datos locales
DATA (DS)
Datos Externos
(Globales)
EXTRA (ES)
5612
01
5613
04
5614
XX
26
palabra de la memoria, otra vez invierte los bytes, restablecindolos de manera correcta en
el registro como 0401H.
Aunque sta caracterstica es enteramente automtica, tiene que estar alerta cuando
programe y depure programas en lenguaje ensamblador.
Al programar el lenguaje ensamblador se tiene que distinguir claramente entre la
direccin y los contenidos de una localidad de memoria. En el ejemplo anterior, el
contenido de la localidad 5612 es 01 y el contenido de la localidad 5613 es 04.
2.11.- Registros.
Los registros del procesador se emplean para controlar instrucciones en ejecucin,
manejar direccionamiento de memoria y proporcionar capacidad aritmtica. Los registros
son direccionables por medio de un nombre. En el P8086 existen 14 registros (todos de 16
bits), como se aprecia en la figura 2.6.
28
29
microprocesadores 8086 a 80486. Se debe tener en cuenta que las banderas son compatibles
hacia arriba desde el 8086/8088 hasta el 80486. El 8086-80286 contiene un registro de
banderas, FLAG (16 bits) y los 80386-80486 contienen un registro EFLAG (registro de
bandera extendido, de 32 bits).
Los bits de bandera cambian despus de ejecutar muchas de las instrucciones
aritmticas y lgicas. Algunas de las banderas se utilizan para controlar ciertas
caractersticas del microprocesador.
S(signo).- Indica el signo aritmtico del resultado despus de una suma o una resta. Si
S=1, el resultado es negativo. Si S=0, el resultado es positivo. Se debe tener en cuenta que el
valor del bit ms significativo del resultado se coloca en el bit de signo para cualquier
instruccin que afecte a las banderas.
T(trampa).- Permite la operacin del procesador el modo de un paso, los
programas depuradores, como DEBUG, activan esta bandera de manera que puedan
avanzar en la ejecucin de una sola instruccin a un tiempo,y as examinar el efecto de esa
instruccin sobre los registros y la memoria.
I(interrupcin).- Controla el funcionamiento de la terminal de la entrada INTR
(interrupcin). Si I=1, se habilita la entrada INTR y si I=0, se deshabilita la entrada INTR.
El estado de la bandera I se controla con las instrucciones STI (activar la bandera I) y CLI
(desactivar la bandera I).
D(direccin).- Controla la seleccin de incremento o decremento automtico de los
registros DI o SI durante las instrucciones de cadenas o arreglos. Si D=1 hay decremento
automtico en los registros y si D=0 hay incremento automtico. La bandera D se activa
con la instruccin STD y se desactiva con la instruccin CLD.
OF(sobre flujo).- Es una condicin que ocurre cuando se suman o restan nmeros
con signo. Un sobreflujo indica que el resultado ha excedido de la capacidad de la mquina.
Para operaciones sin signo, no se toma en cuenta sta bandera.
Las banderas ms importantes parea la programacin en ensamblador son O, S, Z y
C para operaciones de comparacin y aritmtica, y D para operaciones con cadenas de
caracteres.
33
El DOS define de manera automtica la pila para un programa .COM, mientras que
para un programa .EXE se debe definir en forma explcita la pila. Cada elemento de dato en
la pila es una palabra (2 bytes). El registro SS como es inicializado por el DOS , contiene la
direccin del inicio de la pila.
Inicialmente, el SP contiene el tamao de la pila, un valor que apunta al byte que
est pasando al final de la pila. La pila difiere de otros segmentos en su mtodo de
almacenar los datos: empieza en la localidad ms alta y almacena los datos hacia abajo por
la memoria.
.........
SS
Direccin del segmento de la
pila
SP
Tope de la pila
.........
SS
Direccin del segmento de la
pila
SP=28
Tope de la pila
34
2.- PUSH AX.- Disminuye el SP en 2 (a 26H) y almacena el contenido del AX, 015AH, en
la pila. Observe que la operacin invierte la secuencia de bytes almacenados, de modo
que 015A se almacena como 5A01:
.........
5A01
SS
Direccin del segmento de la
pila
SP=26
Tope de la pila
3.- PUSH BX.- Disminuye el SP en 2 (a 24H) y almacena el contenido del BX, 03D2H en
la pila:
.........
SS
Direccin del segmento de la
pila
D203
5A01
SP=24
Tope de la pila
4.- POP BX.- Regresa la palabra que se encuentra en la pila, en donde apunta el SP, y la
enva al registro BX e incrementa el SP en 2 (a 26H). El BX ahora contiene 13D2H, con los
bytes correctamente invertidos.
.........
SS
Direccin del segmento de la
pila
D203
5A01
SP=26
Tope de la pila
35
5.- POP AX.- Regresa la palabra que se encuentra en la pila, en donde apunta el SP, y la
enva al registro AX e incrementa el SP en (a 28H). El AX ahora contiene 0154H, con los
bytes correctamente invertidos:
.........
D203
SS
Direccin del segmento de la
pila
5A01
SP=28
Tope de la pila
Note que las instrucciones POP son codificadas en secuencia inversa a las
instrucciones PUSH. As, en el ejemplo se guardaron AX y BX, pero se sacaron el BX y
AX, en ese orden. Adems los valores sacados de la pila aun estn all, aunque el SP ya no
apunta a ellos.
Siempre debe asegurarse que el programa coordine los valores que guarda en la pila
con los valores que saca de ella. Como ste es un requisito directo, un error puede causar
que un programa no funcione. Tambin, para un programa EXE se tiene que definir una pila
que sea suficientemente grande para contener todos los valores que podran ser guardados
en ella.
36
Operacin
Copia BL en AL
Copia CL en CH
Copia CX en AX
Copia BP en SP
Copia AX en DS
Copia SI en DI
Copia ES en BX
No se permite (segmento a segmento)
No se permite (tamaos mixtos)
No se permite (CS no se puede usar como registro destino)
37
DX
1234
CX
(73CD)
BX
1234
AX
BX
AX
A895
(FECD)
PROGRAMA
3456
B85634
MOV AX,3456H
38
procesador sepa que el operando es un nmero y no una etiqueta. Para los datos decimales
no se coloca sufijo. Tambin se pueden poner caracteres ASCII entre apstrofos y a los
datos binarios se les pone una B al final.
En la tabla 2.2.1 se presenta varias instrucciones MOV con diferentes datos
inmediatos.
En la Fig. 2.7 se muestra que el registro AX contiene FECDH y le estamos
ordenando al P que le ponga a AX el dato 3456H; el contenido de AX cambiar y en lugar
de tener FECDH, tendr 3456H.
Operacin
Mueve 44 dcimas (2CH) al BL
Mueve 44 hexadecimal a AX
Mueve 0000H hacia SI
Mueve 100 (64H) hacia CH
Mueve ASCII (41H) hacia AL
Mueve BA ASCII (4241H) hacia AX
Mueve 11001110 Binario hacia CL
39
Figura 2.11. (a) Ejecucin de MOV AL,DATO y (b) ejecucin de MOV AX,DATO.
40
Operacin
MOV NOTAS, AL
MOV AH, AX
41
Lenguaje Ensamblador
MOV CH,CAN
MOV CH,[1000]
MOV ES,DATO6
MOV DATO,BP
MOV NUMERO,SP
Operacin
Carga en el registro CH, el contenido de la
localidad de memoria CAN
Carga en el registro el contenido de la
localidad de memoria 1000H
Carga en ES el contenido tamao palabra de
la localidad de memoria DATO6
Se carga a BP en la localidad de memoria
DATO
Se carga SP en la localidad de memoria
NUMERO
42
Registros
Memoria
AX
6A
42
6A
02001H
BX
20
00
42
02000H
Lenguaje Ensamblador.
MOV CX, [BX]
MOV [BP], DL
MOV [DI], BH
MOV [DI], [BX]
Operacin
Se carga en CX una palabra de la localidad
de la memoria seleccionada por BX
Se carga el byte del registro DL en la
localidad de memoria direccionada por BP.
Se carga el byte del registro BH en la
localidad de memoria direccionada por DI
No se permiten las transferencias de
memoria, excepto con instrucciones de
cadena
Esta instruccin no se permite, por que el
registro utilizado para el direccionamiento
indirecto de la memoria no se puede cambiar
con la misma instruccin.
La instruccin MOV BYTE PTR [DI],10H muestra con claridad que la localidad
direccionada por DI es una localidad de tamao byte en la memoria.
43
44
Lenguaje Ensamblador.
MOV CX,[BX + DI]
MOV CH,[BP + SI]
MOV [BX + SI],SP
Operacin
Se carga en CX el contenido palabra de la
localidad de memoria direccionada por BX +
DI.
Se carga CH el contenido byte de la
localidad de memoria direccionada por BP +
SI.
Se carga el contenido palabra de SP, en la
localidad de memoria direccionada por BX +
SI
Se almacena el contenido palabra de CX en
la localidad de memoria direccionada por BP
+ DI.
45
Registros
Memoria
AX
A0
76
A0
03101H
BX
01
00
76
03100H
Operacin.
Se transfiere a AX el contenido palabra de la
localidad de memoria, direccionada por DI +
100H
Se carga el contenido byte de BL en la
localidad direccionada por ARRAY ms SI.
Se carga el contenido byte de CL en la
localidad direccionada por la suma de LIST,
SI y 2.
Se carga DI en el contenido de la localidad
de memoria direccionada por SETS mas BX.
46
Registros
Memoria
AX
A0
76
A0
10131H
BX
00
20
76
10130H
SI
00
10
47
Lenguaje Ensamblador.
Operacin.
Se carga DX con el contenido de la localidad
direccionada por BX + DI + 20H.
Se carga AX con el contenido de la localidad
direccionada por ARCHIVO + BX + DI
Se carga el contenido de CL en la localidad
direccionada por LISTA + BP + DI.
Se carga el contenido de DH en la localidad
de memoria direccionada por LISTA + BP +
SI + 4.
48
Transferencia de datos.
El conjunto de instrucciones del 8086 incluye instrucciones para transferencia de
datos que transfieren bytes o palabras de datos entre la memoria y los registros as como
entre el acumulador y los puertos de E/S. En la tabla 2.9 aparecen algunas de estas
instrucciones y se describen en forma breve las caractersticas de funcionamiento de cada
una.
Instruccin
Funcin
LAHF
LEA
MOV
OUT
POP
POPF
PUSH
PUSHF
SAHF
XCHG
IN
49
Aritmtica.
La familia 8086 puede sumar, restar, multiplicar y dividir datos como bytes o
palabras. El sistema suma y resta con el empleo de datos con signo o sin signo y datos BCD
o ASCII. Multiplica y divide nmeros ASCII y nmeros con signo y sin signo. En la tabla
2.10 se encuentran algunas de las instrucciones aritmticas utilizadas en la familia de
procesadores 8086.
Tabla 2.10. Instrucciones aritmticas.
Instruccin
AAA
AAD
AAM
AAS
ADD
ADC
CBW
CMP
DAA
DAS
DEC
DIV
IDIV
IMUL
INC
MUL
NEG
SBB
SUB
Funcin
Ajuste ASCII para la suma.
Ajuste ASCII para la divisin.
Ajuste ASCII para la multiplicacin.
Ajuste ASCII para resta.
Suma datos entre registros o la memoria y otros registros.
Suma datos con la bandera de acarreo.
Convierte byte a palabra.
Compara los datos.
Ajuste decimal de AL despus de una suma BCD.
Ajuste decimal de AL despus de una resta BCD.
Decrementar.
Divisin sin signo.
Divisin con signo.
Multiplicacin con signo.
Incrementar.
Multiplicacin sin signo.
Cambia el signo (lo vuelve negativo)
Resta con prstamo.
Resta datos entre los registros y la memoria u otro registro.
Manipulacin de bits.
Las instrucciones para la manipulacin de bits binarios se utilizan para controlar los
datos hasta el nivel de bits en la familia de microprocesadores 8086. Estas instrucciones
incluyen operaciones lgicas, corrimientos y rotaciones. En la tabla 2.11 aparece una breve
descripcin de algunas instrucciones y su cdigo simblico de funcionamiento.
50
Funcin.
Y (AND) lgica.
Invertir (complemento a 1).
O lgica.
Corrimiento aritmtico a la derecha.
Corrimiento a la izquierda.
Corrimiento lgico a la derecha.
Rotacin a la izquierda con acarreo.
Rotacin a la izquierda.
Rotacin a la derecha con acarreo.
Rotacin a la derecha.
Operacin con el AND lgico, pero solo afectando banderas.
O exclusivo.
Funcin.
Comparacin entre memoria y memoria.
Carga al acumulador.
Mover de memoria a memoria.
Comparacin entre la memoria y el acumulador.
Almacenar en el acumulador.
51
Transferencia de programa.
Las instrucciones para la transferencia de programa incluyen saltos, llamadas (CALL)
a procedimientos y retorno de procedimientos. En la tabla 2.13 se presentan instrucciones
para transferencia de programa.
Funcin.
Llama a un procedimiento (subrutina)
Interrumpir.
Interrupcin tipo 3.
Interrumpir por sobre flujo.
Retornar de una interrupcin.
Brinca si en mayor.
Brinca si es mayor o igual que.
Brinca si es menor.
Brinca si es menor o igual.
Brinca si hay acarreo.
Brinca si es igual o saltar si es cero.
Brinca si es mayor que.
Brinca si es mayor o igual.
Brinca si es menor que.
Brinca si es menor o igual.
Brinca a otra parte del programa.
Brinca si no hay acarreo.
Brinca si no es igual o si no es cero.
Brinca si no hay desbordamiento.
Brinca si no hay paridad (impar).
Brinca si no es signo positivo.
Brinca si hay desbordamiento.
Brinca si hay paridad (par).
Brinca si tiene signo (negativo).
Repite ciclo CX veces
Brinca si CX es cero.
Retorna de un procedimiento (subrutina).
52
Control de procesador.
Las instrucciones para control del procesador habilitan y deshabilitan las
interrupciones, modifican los bits de bandera y sincronizan los eventos externos. En la tabla
2.14 se presenta una lista de instrucciones de control del procesador.
Funcin.
CLC
CLD
CLI
CMC
LOCK
NOP
STC
STD
STI
WAIT
53
Captulo III.
Operadores y Directivas
En
Lenguaje Ensamblador.
54
55
3.4.- Identificadores.
Un identificador es un nombre que se aplica a elementos en el programa. Los dos
tipos de identificadores son: nombre, que se refiere a la direccin de un elemento de dato,
y etiqueta, que se refiere a la direccin de una instruccin. Las mismas reglas se aplican
tanto para los nombres como para las etiquetas. Un identificador puede utilizar los
siguientes caracteres:
56
3.5.- Instrucciones.
Un programa en lenguaje ensamblador consiste en un conjunto de enunciados. Los
dos tipos de enunciados son:
1.
Instrucciones, tal como MOV y ADD, que el ensamblador traduce a cdigo objeto.
2.
Directivas, que indican el ensamblador que realice una accin especfica, como definir
un elemento de dato.
[Identificador]
Operacin
[operando(s)] [;comentario]
Un identificador (si existe), una operacin y un operando (si existe) estn separados
por al menos un espacio en blanco o un carcter de tabulador. Existe un mximo de 132
caracteres en una lnea (512 desde MASM 6.0), aunque la mayora de los programadores
prefiere permanecer en los 80 caracteres ya que es el nmero mximo que cabe en la
pantalla. A continuacin se presentan dos ejemplos de enunciados:
Identificador
Operacin
Operando
Comentario
Directiva: COUNT
Instruccin:
DB
MOV
1
AX,0
Identificador.
Como ya se explic, el termino nombre se aplica al nombre de un elemento o
directiva definida mientras que el termino etiqueta se aplica al nombre de una instruccin.
57
Operacin.
La operacin que debe ser codificada, es con mayor frecuencia usada para la
definicin de reas de datos y codificacin de instrucciones. Para un elemento de datos, una
operacin tal como DB o DW define un campo, de rea de trabajo o constante. Para una
instruccin, una operacin como MOV o ADD indica una accin a realizar.
Operando.
El operando (si existe) proporciona informacin para la operacin que acta sobre el.
Para un elemento de datos, el operando identifica su valor inicial. Por ejemplo, en la
definicin siguiente de un elemento de datos llamado CONTADOR, la operacin DB
significa "definir byte", y el operando inicializa su contenido con un valor cero:
Nombre
Contador
Operacin
DB
Operando
0
Comentario
; Define un byte (DB) con el valor cero
Operando
CX
AX,12
Comentario
; Regresa
; Incrementa al registro CX
; Suma 12 a AX
Operando
Ninguno
Uno
Dos
3.6.- Directivas.
El lenguaje ensamblador permite usar diferentes enunciados que permiten controlar la
manera en que un programa ensambla y lista. Estos enunciados, llamados directivas, actan
solo durante el ensamblado de un programa y no generan cdigo ejecutable de mquina.
Las directivas ms comunes son explicadas a continuacin:
3.6.1. Directivas para listar: PAGE y TITLE.
Las directivas PAGE y TITLE ayudan a controlar el formato de un listado de un
programa en ensamblador. Este es su nico fin, y no tiene efecto sobre la ejecucin
subsecuente del programa.
58
OPERACION
SEGMENT
ENDS
OPERANDO
[opciones]
COMENTARIO
;inicia el segmento
59
Nomproc
Nomsegmto
Operacin
SEGMENT
PROC
.
.
.
ENDP
ENDS
Operando
PARA
FAR
Comentario
;un procedimiento
;dentro del segmento.
;de cdigo
60
El nombre del procedimiento debe estar presente, ser nico y seguir las reglas para la
formacin de nombres del lenguaje. El operando FAR en este caso esta relacionado con la
ejecucin del programa. Cuando solicita la ejecucin de un programa, el cargador de
programas del DOS utiliza el nombre del procedimiento como el punto de entrada para la
primera instruccin a ejecutar.
La directiva ENDP indica el fin de un procedimiento y contiene el mismo nombre que
el enunciado PROC para permitir que el ensamblador relacione a los dos. Ya que los
procedimientos deben estar por completo dentro de un segmento, ENDP define el final de
un procedimiento antes que ENDS defina el final de un segmento.
El segmento de cdigo puede contener cualquier nmero de procedimientos usados
como subrutinas cada uno de los cuales va con su caracterstico conjunto de enunciados
PROC y ENDP. Cada PROC adicional por lo comn se codifica con (o por omisin) el
operando NEAR.
3.6.4. Directiva ASSUME
Un programa utiliza al registro SS para direccionar la pila, al registro DS para
direccionar el segmento de datos y al registro CS para direccionar el segmento de cdigo.
Para este fin, se tiene que indicar al ensamblador el propsito de cada segmento en el
programa. La directiva para este propsito es ASSUME, codificada en el segmento de
cdigo como sigue:
Operacin
Operando
ASSUME
SS: nompila significa que el ensamblador asocia el nombre del segmento de la pila
con el registro SS, y de manera similar, con los otros operandos mostrados. Los operandos
pueden aparecer en cualquier orden. ASSUME tambin puede contener una entrada para el
ES, tal como ES:nomsegdatos; si el programa no utiliza el registro ES, se puede omitir su
referencia o codificar ES: NOTHING.
Directiva END.
Como ya se menciono, la directiva ENDS finaliza un segmento y la directiva ENDP
finaliza un procedimiento. Una directiva END finaliza todo el programa. Su formato
general es:
61
Operacin
Operando
END
[nomproc]
Dn
Expresin
Nombre.- Un programa que hace una referencia a un elemento de dato lo hace por medio
de un nombre. Por otro lado, el nombre de un elemento es opcional.
Directivas.- Las directivas que definen elementos de datos son DB (byte) y DW (palabra).
Cada uno indica de manera explcita la longitud del elemento definido.
Expresin.- La expresin es un operando que puede contener un signo de interrogacin
para indicar un elemento no utilizado, como:
FLD1
DB
; Elemento no inicializado
DB
25
; Elemento inicializado
62
Puede usar con libertad este valor inicializado en su programa y aun puede cambiar el
contenido de FLD2.
Una expresin puede contener varios valores constantes separados por comas y
limitados solo por la longitud de la lnea, como sigue:
FLD3
DB
[nombre]
Dn
El tercer ejemplo genera cuatro copias del dgito 8 (8888) y duplica el valor tres
veces, produciendo un total doce 8.
Cadenas de caracteres.
Las cadenas de caracteres son usadas para datos descriptivos como nombres de
personas y ttulos de pginas. La cadena esta definida dentro de apstrofos, como 'PC', o
dentro de comillas, como "PC". El ensamblador traduce las cadenas de caracteres en cdigo
objeto en formato ASCII normal.
63
Descripcin
Definir byte (s)
Definir una palabra
Directivas convencionales
DB
DW
TITLE
;
;
FLD1DB
FLD2DB
FLD3DB
FLD4DB
FLD5DB
FLD6DB
FLD7DB
;
FLD1DW
FLD2DW
FLD3DW
64
FLD4DW
FLD5DW
DW
DW
3,4,7,8,9
5 DUP (0)
EQU
10
El nombre en este caso TIMES, puede ser cualquier nombre aceptable por el
ensamblador. Ahora, siempre que una instruccin o en otra directiva aparezca la palabra
TIMES, el ensamblador la sustituye por el valor 10. Por ejemplo, el ensamblador convierte
la directiva.
FIELDA
DB
TIMES
DUP (?)
Su valor equivalente
FIELDA
DB
10
DUP (?)
Una instruccin tambin puede tener un operador con EQU, como en el siguiente :
COUNTR
EQU
05
.
.
.
MOV CX,COUNTR
; El ensamblador sustituye 05
La ventaja de EQU es que muchos enunciados pueden utilizar valores definidos por
COUNTR. Si el valor ha sido cambiado, solo necesita cambiar el enunciado EQU. No
necesita decirse que puede usar un valor igualado (con EQU) solo en donde una sustitucin
tenga sentido para el ensamblador. Tambin se puede igualar (con EQU) nombres
simblicos como el siguiente cdigo:
65
TOTALPAY
.
.
.
TP
MPY
DW
EQU TOTALPAY
EQU
MUL
14
15-16
EXPLICACIN
La directiva PAGE para este listado establece 60 lneas y 132 columnas por
pgina.
La directiva TITLE identifica el nombre del programa PO4ASM1.
Las lneas 3,7,11 son comentarios que califican la declaracin de los segmentos
definidos.
Estos enunciados definen el segmento de pila, STACKSG(pero no su
contenido).
Estos enunciados definen el segmento de datos, DATASG(pero no su
contenido).
Estos enunciados definen el segmento de cdigo, CODESG.
Estos enunciados definen el segmento del cdigo del nico procedimiento,
llamado BEGIN. Este procedimiento ilustra los requisitos comunes de
inicializacin y de salida para dar programa. EXE. Los dos requisitos para
inicializar son (1) avisar al ensamblador que segmentos asocia con los registros
de segmentos y (2) cargar el DS con la direccin de segmentos de datos.
La directiva ASSUME avisa al ensamblador que asocie ciertos segmentos con
ciertos registros de segmentos. Al asociar segmentos con registros de
segmentos, el ensamblador puede determinar en le pila, para los elementos en
el segmento de datos y para las instrucciones en el segmento de cdigo.
Dos Instrucciones inicializan la direccin al segmento de datos en el registro
DS:
MOV DS, AX; Almacena la direccin en DS.
El primer MOV carga la direccin del segmento de datos en el registro AX y el
segundo MOV copia la direccin del AX al DS. Se requieren dos MOV ya que
66
18-19
22
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
67
Captulo III.
Manejo Bsico de
Pantalla y Teclado.
68
Ubicacin en pantalla
Esquina superior izquierda
Esquina superior derecha
Centro de la pantalla
Esquina inferior izquierda
Esquina inferior derecha
Formato Decimal
Formato Hexadecimal
Rengln
Columna Rengln
Columna
00
00
00H
00H
00
79
00H
4FH
12
39 / 40
OCH
27H / 28H
24
00
18H
00H
24
79
18H
4FH
4.3. Funciones ms comunes del BIOS (INT 10H) para el manejo de la pantalla.
4.3.1.- Colocacin del cursor.
La colocacin del cursor es un requisito comn en modo de texto, ya que su posicin
determina en donde ser desplegado el siguiente caracter. (El modo grfico no permite el
uso del cursor). La INT 10H es la operacin del BIOS para manejo de la pantalla, y la
69
AH
; Funcin 06H.
AL
; 00H para la pantalla completa.
BH
; Nmero del atributo.
CX
; Rengln: columna iniciales.
DX
; Rengln: columna finales.
En el ejemplo siguiente el atributo 71H establece toda la pantalla con fondo blanco
(7) con primer plano azul (1).
MOV AH, 06H
MOV AL, 00H
MOV BH, 71H
MOV CH, 00H
MOV CL, 00H
MOV DH, 18H
MOV DL, 4FH
; Funcin 06H
; Pantalla completa.
; Numero de atributo (fondo blanco, letras azules)
; Rengln inicial.
; Columna inicial.
; Rengln final.
; Columna final.
70
; cadena de despliegue.
Una manera de hacer ms eficaz el uso de despliegues es utilizar los caracteres de control:
Retorno de carro, Avance de lnea y el Tabulador. Puede codificarlos como valores ASCII o
nmeros hexadecimales, as:
Carcter de control
Retorno de carro
Avance de lnea
Tabulador
ASCII
13
10
09
HEX
Efecto en el cursor
0DH Restablece a la posicin de la extrema izquierda.
0AH Avanza a la lnea siguiente.
09H Avanza a la siguiente marca de tabulador
Mensaje
MOV AH,09H
; Peticin de despliegue.
LEA DX, MENSAJE
; Carga la direccin del titulo
INT 21H
; Llama al DOS.
El uso de EQU para redefinir los caracteres de control puede hacer que un programa
sea mas legible:
CR
LF
TAB
Mensaje
EQU 13
; (o EQU 0DH)
EQU 10
; (o EQU 0AH)
EQU 09
; (o EQU 09H)
DB TAB, 'UAMSZ Ingeniera', CR, LF, '$'
72
INT 21h
; Llama al DOS
El ejemplo siguiente muestra como utilizar este servicio para desplegar una cadena
de caracteres. La cadena a desplegar esta definida en CONAME. El programa carga la
direccin de CONAME en el registro DI y su longitud en el CX. El cdigo es como sigue:
Coname
A30:
.
.
.
MOV AH,02H
MOV CX,19
LEA DI ,CONAME
MOV DL,[DI]
INT21H
LOOP A30
4.4.4.- Funcin 01H de la INT 21H: Entrada del teclado con eco en pantalla.
Esta operacin acepta un carcter desde un bufer del teclado o, si no esta presente
alguno, espera una entrada del teclado. La expresin con eco en pantalla, significa que
cuando se emplea otra funcin para desplegar el carcter capturado en la pantalla, ste
aparece repetido). La operacin regresa uno de dos cdigos de estado.
4.4.5.- Funcin 07Hde la INT 21H: Entrada del teclado sin eco.
Esta operacin funciona igual que la 01H, excepto que el carcter ingresado no se
repite en la pantalla. Podra utilizar la operacin para introducir una contrasea (o
password) que sea invisible o en donde no se quiere que la pantalla sea perturbada.
73
Captulo V.
PROGRAMAS
ENSAMBLADORES.
74
En este capitulo podemos observar las reglas para ensamblar, enlazar, generar
archivos de referencias cruzadas y convertir programas .EXE a .COM. la versin de
ensamblador de Microsoft es MASM, la de Borland es TASM y la de SRL es OPTASM,
todas ellas son similares. Desde la versin 6.0 de Microsoft utiliza el comando ML, que
realiza un ensamblador y enlace en un comando.
5.1.- Ensamblado un programa.
Se puede utilizar una lnea de comando para solicitar un ensamblador, aunque MASM
tambin proporciona indicaciones (prompts).
5.1.1.- Ensamblado un programa.
El formato general para usar una lnea de comando para ensamblador es:
MASM/TASM [opciones] fuente [,objeto] [,listado] [,refcrz]
las opciones son explicadas posteriormente.
Fuente, identifica el programa fuente. El ensamblador supone la extensin .ASM as
que no necesita ingresarla. Tambin puede teclear la unidad de disco o la ruta (ambas).
Objetivo, proporciona un archivo OBJ. La unidad o rutina y el nombre del archivo
pueden ser los mismos o diferentes a los de la fuente
Listado, provee de un archivo .LIST que contiene los cdigos fuente y objeto. La
unidad o ruta y el nombre del archivo pueden ser los mismos o diferentes a los del
fuente.
Referz, provee un archivo generado con los smbolos para un listado de referencias
cruzadas. La extensin .CRF para MASM y .XRF para TASM. La unidad y el nombre
del archivo pueden ser los mismos o diferentes.
Este ejemplo escribe todos los archivos.
MASM D: nombre, ASM: nombre,. OBJ,D: nombre, LST: nombre. CRF
El siguiente comando abreviado permite, por omisin, los valores para los archivos
objeto. De listado y referencias cruzadas, todos con el mismo nombre:
MASM D: nomarchivo, D:, D:, D:,
75
Ensamblando un programa.
Opciones de Ensamblador.
Las opciones de ensamblador para MASM, TASM y OPTAS incluyen las siguientes:
/A
/C
/D
/E
/H
/L
/ML
/MU
/MX
/N
/R
/S
/T
/V
77
Length
Aling
Combine
Class
78