Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Leg
Leg
PROGRAMACIN BSICA
JAZMN MONTIEL RAMREZ
ISMA-VI
1|Pgina
JAZMN MONTIEL RAMREZ
ISMA-VI
UNIDAD II
ndice
Introduccin......3
2.-Programacin bsica......4
2.1 Ensamblador (y ligador) a utilizar. . .. . . . . .. . . . . . .6
2.2 Ciclos numricos. . . . . . . . . . . . . . . . . . . . ..... . .. .-7
2.3 Captura bsica de cadenas. . . . . . . .................................8
2.4 Comparacin y prueba.... ............................................10
2.5 Saltos....11
2.6 Ciclos condicionales. . . . . .... . . . . . .. ....12
2.7 Incremento y decremento. . . . . . . ... . . . . . . . ............13
2.8 Captura de cadenas con formato. . . . . ............................15
2.9 Instrucciones aritmticas. . . . . . . . . ....................................16
2.10 Manipulacin de la pila. . . . ..19
2.11 Obtencin de cadena con representacin decimal. . ...............21
2.12 Instrucciones lgicas.....................................................24
2.13 Desplazamiento y rotacin.24
2.14 Obtencin de una cadena con la representacin hexadecimal.................26
2.15 Captura y almacenamiento de datos numricos.29
2.16 Operaciones bsicas sobre archivos de disco.........31
Conclusin.......33
Bibliografa.....34
2|Pgina
JAZMN MONTIEL RAMREZ
ISMA-VI
UNIDAD II
Introduccin
En esta investigacin se va a mencionar la utilidad de una pila, la cual
consiste en salvaguarda (conservar)
datos
(la
otra
es
la
de
3|Pgina
JAZMN MONTIEL RAMREZ
ISMA-VI
UNIDAD II
2.-Programacin bsica
Un programa en lenguaje ensamblador consiste en un conjunto de enunciados. Los dos tipos de
enunciados o lneas de programacin son:
1.- Instruccin, tal como MOV y ADD, que el ensamblador traduce a cdigo objeto
2.- Directiva, que indican al ensamblador que realice una accin especfica, como definir un elemento
de dato.
ENUNCIADO O LINEA DE PROGRAMACIN:
[Etiqueta]
<Operacin
directiva>
[operando
(s)
] [
comentarios
el
ser
primer
interrogacin
_
(
$
@
el
primer
carcter)
()
)
)
)
carcter)
No debe tener espacios en blanco en medio de la etiqueta. Para definir una etiqueta se usan los
directivos DW, DB. Una etiqueta puede tener los siguientes usos:
a) Como variable.- Ejemplo:
num db 65
dicho dato.
ISMA-VI
UNIDAD II
ISMA-VI
UNIDAD II
FILA
db 3
db 4
Directiva DUP para definir una cierta cantidad de datos.
db 100 dup (0) ; define 100 bytes, todos con valor de( 0 )
El cdigo escrito en lengua je ensamblador posee una cierta dificultad de ser entendido ya
que su estructura se acerca al lengua je mquina, es decir, es un lengua je de bajo nivel.
Con el lenguaje ensamblador se tiene un control muy preciso de las tareas realizadas por
un microprocesador,
ineficientes de programar en un lenguaje de alto nivel, ya que, entre otras cosas, en el lengua je
ensamblador se dispone de instrucciones del CPU que generalmente no estn disponibles en los
lenguajes de alto nivel.
6|Pgina
JAZMN MONTIEL RAMREZ
ISMA-VI
UNIDAD II
Para crear un programa ejecutable utilizando lenguaje ensamblador es necesario realizar la serie de
pasos, conocida como ciclo de desarrollo de programas.
Para cada programa que se realice, habr eventualmente tres archivos en el disco. El paso inicial es
crear un archivo de programa fuente. Para crear este programa es necesario usar un editor ASCII, como el
programa EDIT de la versin 5.0 o posterior de MS-DOS. Este archivo contendr todas las instrucciones
de lenguaje ensamblador que conforman nuestro programa. Por convencin, los archivos escritos en
lenguaje ensamblador tienen asignados la extensin .ASM.
Los mdulos de programa fuente que constituyen un programa ejecutable pueden estar organizados
en una gran variedad de formas. Por ejemplo, pueden escribirse todos los procedimientos de un programa
en un solo mdulo o pueden dividirse estos procedimientos en diferentes mdulos, de acuerdo a la
especifidad de la tarea que realizan.
El programa en ensamblador, con extensin .ASM, es despus usado para convertir el archivo de
programa fuente en un archivo objeto, utilizando un traductor de lenguaje ensamblador, tal como el Macro
Assembler, o MASM, de Microsoft o el Turbo Assembler, o TASM, de Borland.
ISMA-VI
UNIDAD II
Instrucciones a realizar
Loop Etiqueta
La instruccin Loop ejecuta las instrucciones que se encuentran entre la Etiqueta:
y Loop Etiqueta el nmero de veces que indique el campo No_Veces.
Por ejemplo, el siguiente grupo de instrucciones incrementa en 1 el registro AX ,
esto lo repite 100 veces.
Mov CX,100 ; 100 veces
repetir: Nombre de la etiqueta
Inc AX ; AX = AX + 1
Loop repetir Regresa a la etiqueta y compara el ciclo
La instruccin Loop decrementa el registro CX en cada iteracin y se detiene cuando CX es igual a cero.
8|Pgina
JAZMN MONTIEL RAMREZ
ISMA-VI
UNIDAD II
SCAS
SCAS: SCAn String. Busca valor del acumulador en una cadena
Registros Implicados: Registros que debe inicializar antes de usar la
instruccin
Bit-D: Auto-decremento (STD) o auto-incremento (CLD) de DI
AL/AX/EAX: Dato a comparar. SCASB usa AL, SCASW usa AX,
SCASW usa EAX.
ES:DI: Indice para la cadena donde se buscar el dato.
REP SCAS
REP SCAS: REPite bsqueda de un dato mientras sea diferente (REPNE)
o igual (REPE) en una cadena. Termina bsqueda si el dato es igual
(REPNE), diferente (REPE) o el contador CX es cero
Registros Implicados: Registros que debe inicializar antes de usar la
instruccin
Bit-D: Auto-decremento (STD) o auto-incremento (CLD) de DI
AL/AX/EAX: Dato a comparar. SCASB usa AL, SCASW usa AX,
SCASW usa EAX
ES:DI: Indice para la cadena donde se buscar el dato
CX: Mximo no. comparaciones = Tamao de la cadena
MOVS
MOVS: MOVe String. Transfiere una cadena de [SI] a
[DI]. Nota: Existe MOVSB, MOVSW y MOVSD. Adems, no se
modifica el registro AX
Registros Implicados: Registros que debe inicializar antes de usar
la instruccin
Bit-D: Auto-decremento (STD) o auto-incremento (CLD) de SI/DI
DS:SI: ndice para la cadena origen
ES:DI: ndice para la cadena origen
REP MOVS
REP MOVS: Copia una cadena en una sola instruccin. El nmero de
caracteres a copiar se especifica en el registro CX.
Registros Implicados: Registros que debe inicializar antes de
usar la instruccin
Bit-D: Auto-decremento (STD) o auto-incremento (CLD) de SI/DI
DS:SI: Indice para la cadena origen
ES:DI: Indice para la cadena origen
CX: Tamao de la cadena
9|Pgina
JAZMN MONTIEL RAMREZ
ISMA-VI
UNIDAD II
ISMA-VI
UNIDAD II
2.5 Saltos
JMP Salta.
JE, JZ salta si es igual a cero.
JNE, JNZ salta si no es igual a cero.
JS salta si el signo es negativo
JNS salta si el signo no es negativo.
JP, JPE salta si la paridad es par
JNP, JOP salta si la paridad es impar.
JO salta si hay capacidad excedida.
JNO salta si no hay capacidad excedida.
JB, JNAE salta si es por abajo (no
encima o igual).
11 | P g i n a
JAZMN MONTIEL RAMREZ
ISMA-VI
UNIDAD II
ISMA-VI
UNIDAD II
JA o JNBE: Salta si est arriba o salta si no est por debajo o si no es igual (jump if above or jump if not
below or equal). El salto se efecta si la bandera de CF=0 o si la bandera Z F=0.
JAE o JNB: Salta si est arriba o es igual o salta si no est por debajo (jump if above or equal or jump if
not below). El salto se efecta si CF =0.
JB o JNAE: S alta si est por debajo o salta si no est por arriba o es igual (jump if below or jump if not
above or equal). El salto se efecta si CF=1.
JBE o JNA: Salta si est por debajo o es igual o salta si no est por arriba (jump if below or equal or jump
if not above). El salto se efecta si CF= 1 o ZF=1.
JE o JZ: Salta si es igual o salta si es cero (jump if equal or jump if zero). El salto s e efecta si ZF=1.
JNE o JNZ: Salta si no es igual o salta si no es cero (jump if not equal or jump if not zero). El salto se
efecta si ZF=0.
JG o JNLE: Salta si es mayor o salta si no es menor o igual (jump if greater or jump if not less or equal). El
salto se efecta si ZF=0 u OF=SF.
JGE o JNL: Salta si es mayor o igual o salta si no es menor (jump if greater or equal or j ump if not
less). El salto se efecta si SF=OF.
LOOP (bucle).
Sintaxis:
LOOP desplazamiento
Indicadores OF DF IF TF SF ZF AF PF CF
Decrementa el registro contador CX; si CX es cero, ejecuta la siguiente instruccin, en caso
contrario transfiere el control a la direccin resultante de sumar a IP + desplazamiento. El desplazamiento
debe estar comprendido entre -128 y +127.
Ejemplo:
MOV CX,10
BUCLE:
LOOP BUCLE
Con las mismas caractersticas que la instruccin anterior:
LOOPE/LOOPZ Bucle si igual, si cero. Z=1 Y CX<>0
LOOPNE/LOOPNZ Bucle si no igual, si no cero. Z=0 y CX<>0
ISMA-VI
UNIDAD II
R+1
Donde "R" representa un registro cualquiera de 8 a 16 bits. Si se trata de un registro doble (de 16 bits) se
incrementa el registro de orden bajo (por ejemplo, en el "BC" se incrementa "C"), y si ello hace que este
pase a valer "0", se incrementa tambin el de orden alto.
DECREMENTO: Es la inversa de la anterior, consiste en restar uno al contenido de un registro. Su
esquema es: R R-1 Si se trata de un registro doble, se decrementa el de orden bajo y, si esto hace que
pase
a
valer
255
(FFh),
se
decrementa
tambin
el
de
orden
alto.
14 | P g i n a
JAZMN MONTIEL RAMREZ
ISMA-VI
UNIDAD II
COMPLEMENTO: Consiste en realizar un "complemento a 1" del acumulador, es decir, cambiar los "unos"
por "ceros" y los "ceros" por "unos".
NEGACIN: Consiste en realizar un "complemento a 2" del acumulador, es decir, realizar un
"complemento a 1" y, luego, sumarle "1". Lo que se obtiene es el "negativo" del nmero que tenamos en el
acumulador. El efecto es el mismo que si restramos el acumulador de "cero", es decir: A 0-A
EL FLAG DE ACARREO: Existen dos instrucciones que afectan al indicador de acarreo del registro "F",
es posible ponerlo a "1" o "complementarlo" (ponerlo a "1" si era "0" y viceversa). No se ha previsto una
instruccin para poner a "0" el flag de acarreo, dado que esto se puede conseguir haciendo un "AND" o un
"OR" del acumulador consigo mismo.
STOS
STOS: STOre String. Graba un caracter de una cadena a la vez
Registros Implicados: Registros que debe inicializar antes de usar la instruccin
Bit-D: Auto-decremento (STD) o auto-incremento (CLD) de DI
AL/AX/EAX: Dato consultado. STOSB usa AL, STOSW usa AX, STOSW usa EAX
ES:DI: Apunta al elemento actual del bloque de memoria a grabar
LODS
LODS: LOaD String. Lee un caracter a la vez en el acumulador
Registros Implicados: Registros que debe inicializar antes de usar la instruccin
Bit-D: Auto-decremento (STD) o auto-incremento (CLD) de SI
AL/AX/EAX: Dato consultado. LODSB usa AL, LODSW usa AX, LODSW usa EAX
DS:SI: Apunta al elemento actual de la cadena consultada
REP SCAS
15 | P g i n a
JAZMN MONTIEL RAMREZ
ISMA-VI
UNIDAD II
REP SCAS: REPite bsqueda de un dato mientras sea diferente (REPNE) o igual (REPE) en una
cadena. Termina bsqueda si el dato es igual (REPNE), diferente (REPE) o el contador CX es cero
Registros Implicados: Registros que debe inicializar antes de usar la instruccin
Bit-D: Auto-decremento (STD) o auto-incremento (CLD) de DI
AL/AX/EAX: Dato a comparar. SCASB usa AL, SCASW usa AX, SCASW usa EAX
ES:DI: Indice para la cadena donde se buscar el dato
CX: Mximo no. comparaciones = Tamao de la cadena
Instrucciones Aritmticas
16 | P g i n a
JAZMN MONTIEL RAMREZ
ISMA-VI
UNIDAD II
Este tipo de instrucciones realizan operaciones aritmticas con los operandos. Y son: ADD, ADC,
DAA, AAA, SUB, SBB, DAS, AAS, NEG, MUL, IMUL, AAM, DIV, IDIV, AAD, CBW, CWB, INC, DEC.
ADD y ADC realizan la suma y la suma con acarreo (bit CF del registro de estado) de dos operandos,
respectivamente, y guardan el resultado en el primero de ellos. Admiten todos los tipos de
direccionamiento (excepto que ambos operando estn en memoria).
ADD/ADC reg, reg
Ejemplo:
; J = 34+f
MOV AX, F
ADD AX, 34
MOV J, AX
SUB y SBB realizan la resta y la resta con acarreo, respectivamente, de dos operandos y guardan el
resultado en el primero de ellos. Admiten todos los modos de direccionamiento, excepto dos operando en
memoria.
SUB/SBB reg, reg
Ejemplo:
; J = F-34
MOV AX, F
SUB AX, 34
MOV J, AX
Estas instrucciones afectan a los bits OF, SF, ZF, AF, PF, CF del registro de estado.
DAS realizan la correccin BCD empaquetado del resultado de una resta en AL. Actan de manera
similar a la instruccin de ajuste de la suma.
NEG realiza la operacin aritmtica de negado de un operando y guarda el resultado en el mismo
operando. Admite todos los tipos de direccionamiento, excepto inmediato.
NEG reg
NEG mem
La operacin que realiza es: 0 operando.
Estas instrucciones afectan a los bits OF, SF, ZF, AF, PF, CF del registro de estado.
DAA realizan la correccin BCD empaquetado del resultado de una suma en AL.
17 | P g i n a
JAZMN MONTIEL RAMREZ
ISMA-VI
UNIDAD II
El 8086/88 realiza las sumas asumiendo que los operados son ambos valores binarios, de manera
que se suman dos valores codificados en BCD empaquetado el resultado puede no ser un valor vlido en
este formato:
Instrucciones Generales
Mnemnico/Operando
Descripcin
Instrucciones de Adicin
aaa
daa
inc destino
Incremento
Instrucciones de Substraccin
aas
Compara
Das
dec destino
neg destino
Substrae
Substrae
Instrucciones de Multiplicacin
Aam
imul fuente
mul fuente
Multiplicar
Instrucciones de Divisin
Aad
Cbw
Cwd
div fuente
Divide
idiv fuente
Divisin de Enteros
Existen dos formas de incrementar el poder matemtico del lenguaje ensamblador. Primero, se puede
comparar) o escribir) un paquete de funciones matemticas con rutinas que implementan las funciones
matemticas de alto nivel que se necesitan. Otra solucin es comprar un chip coprocesador matemtico,
18 | P g i n a
JAZMN MONTIEL RAMREZ
ISMA-VI
UNIDAD II
aunque esto puede ser muy caro. Como una tercera opcin , y probablemente la mejor, es utilizar un
lenguaje de alto nivel como Pascal o C para codificar las expresiones de punto flotante. Estos lenguajes
vienen con un detector automtico de presencia de coprocesador matemtico o cambiar a un software
emulador para sistemas que carezcan del chip opcional. Despus de escribir el programa, se puede
combinar el cdigo compilado de alto nivel, con nuestro programa en lenguaje ensamblador. Ya que el
coprocesador matemtico tiene requerimientos estrictos acerca de los datos y formatos de instrucciones,
la mayora de los compiladores generan cdigo mquina optimizado, y hay poca ventaja en escribir
expresiones de punto flotante directamente en lenguaje ensamblador.
ISMA-VI
UNIDAD II
ax
push
bx
push
cx
cx
20 | P g i n a
ISMA-VI
UNIDAD II
pop
bx
pop
ax
En ste ejemplo, los registros ax, bx y cx, son posiblemente utilizados; por lo tanto, stos registros
son almacenados en el stack para preservar los valores de los registros. Por ltimo, los valores son
retirados (pop) del stack en orden inverso, restaurando los valores originales de los registros y
manteniendo el stack en sincrona.
PUSH y POP realizan las operaciones de apilado y desapilado en la pila del procesador
respectivamente, admiten todos los tipos de direccionamiento (excepto inmediato). Los operandos deben
ser siempre de 16 bits.
Se utiliza en combinacin con procesadores externos, tales como los coprocesadores de coma
flotante o de E/S, y abre al dispositivo externo el acceso a las direcciones y operando requeridos. Al
mnemnico ESC le siguen los cdigos de operacin apropiados para el coprocesador as como la
instruccin y la direccin del operando necesario.
21 | P g i n a
JAZMN MONTIEL RAMREZ
ISMA-VI
UNIDAD II
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 HLTpara 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:
Provoca la espera del procesador hasta que se detecta una seal en la patilla
TEST. Ocurre, por ejemplo, cuando el coprocesador ha terminado una operacin e indica su finalizacin.
Suele preceder a ESC para sincronizar las acciones del procesador y coprocesador.
XLAT (traduccin).
Sintaxis: XLAT tabla
Indicadores:
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.
Por ejemplo, el siguiente programa:
DATOS SEGMENT
TABLA DB 2, 3, 5, 8, 16, 23
DATOS ENDS
22 | P g i n a
JAZMN MONTIEL RAMREZ
ISMA-VI
UNIDAD II
CODIGO SEGMENT
MOVE BX, OFFSET TABLA; Inicializa BX con la direccin donde comienza la tabla
MOVE AL, 5
XLAT TABLA
CODIGO ENDS Hace que al final el contenido de AL sea 16 ya que es el quinto elemento de la tabla y AL
antes de XLAT TABLA contena el valor 5.
Otro ejemplo:
MOV BX, OFFSET TABLA
MOV AL, 4
XLAT TABLA Para finalizar con las instrucciones de transferencia veremos un grupo de tres
instrucciones:
LEA o cargar direccin efectiva
LDS o cargar el puntero en DS
LES o cargar el puntero en ES denominadas de transferencia de direcciones.
LEA (carga direccin efectiva).
Sintaxis:
LEA destino, origen Indicadores:
Transfiere el desplazamiento del operando fuente al operando destino.
Otras instrucciones pueden a continuacin utilizar el registro como desplazamiento para acceder a los
datos que constituyen el objetivo. El operando destino no puede ser un registro de segmento. En
general, esta instruccin es equivalente a MOV destino, OFFSET fuentey de hecho los buenos
ensambladores (TASM) la codifican como MOV para economizar un byte de memoria. Sin embargo,
LEA es en algunos casos ms potente que MOV al permitir indicar registros de ndice y
desplazamiento para calcular el offset: En el ejemplo de arriba, el valor depositado en DX es el OFFSET
de la etiqueta DATOS ms el registro SI. Estas son las instrucciones equivalentes a estas dos:
MOV DX, OFFSET DATOS
ADD DX, SI
LDS (carga un puntero utilizando DS).
Sintaxis:
LDS destino, origen
Indicadores:
ISMA-VI
UNIDAD II
Sintaxis:
LES destino, origen. Esta instruccin es anloga a LDS, pero utilizando ES en lugar de D.
ISMA-VI
UNIDAD II
Las instrucciones de desplazamiento son cuatro: shl, shr, sar y sal; y su objetivo es desplazar los bits
de un operando un determinado nmero de posiciones a la izquierda o a la derecha. La estructura de los
operandos manejados por estas instrucciones y su significado es idntico para las cuatro instrucciones.
Todas
ellas
trabajan
sobre
un operando
fuente
y
un
operando
destino.
El Operando Destino contiene el dato que va a ser objeto del desplazamiento y debe ser del tipo, registro o
memoria. El Operando Fuente determina la cantidad de posiciones que va a ser desplazado el operando
destino. El operando fuente slo puede ser un dato inmediato de 8 bits (I8) o bien el registro CL.
SHL
(Shift
Left
=
desplazamiento
a
la
izquierda)
Se desplazan a la izquierda los bits del operando destino tantas posiciones como indique el operando
fuente. El desplazamiento de una posicin se realiza de la siguiente forma: el bit de mayor peso del
operando se desplaza al bit CF del registro de estado, el resto de los bits se desplazan una posicin hacia
la izquierda, y la posicin de menor peso se rellena con un 0. Este proceso se representa en la figura
siguiente.
SHR
(Shift
Right
desplazamiento
la
derecha)
La instruccin shr funciona de la misma forma que shl, pero desplazando los bits a la derecha en lugar de
a la izquierda, tal y como se muestra en la figura siguiente.
SAR
(Shift
Arithmetic
Right
desplazamiento
aritmtico
la
derecha)
Esta instruccin desplaza los bits del operando destino a la derecha tantos bits como indique el operando
fuente. Esta forma de funcionamiento es similar a la de la instruccin shr; sin embargo, ambas
instrucciones se diferencian en que sar, en vez introducir ceros por la izquierda del operando, replica el bit
de mayor peso (bit de signo) en cada desplazamiento. esquemticamente, la instruccin sar trabaja de la
siguiente forma:
25 | P g i n a
JAZMN MONTIEL RAMREZ
ISMA-VI
UNIDAD II
El desplazamiento a la derecha realizado por la instruccin sar recibe el nombre de aritmtico porque
sirve
para
dividir
un
operando
entre
una
potencia
entera
de
2.
El desplazamiento aritmtico a la derecha de un operando (considerado con signo) n posiciones equivale a
la divisin entera del operando entre 2n. SAL (Shift Arithmetic Left = desplazamiento aritmtico a la
izquierda)
El objetivo de un desplazamiento aritmtico a la izquierda es multiplicar un operando, interpretado con
signo, por una potencia de 2.
Para llevar a cabo este tipo de desplazamiento, hay que desplazar los bits del operando hacia la
izquierda introduciendo ceros por su derecha. En realidad, este tipo de desplazamiento es idntico al
llevado a cabo por la instruccin shl; por tanto, sal y shl son, de hecho, la misma instruccin y se codifican
con el mismo cdigo mquina.
ISMA-VI
UNIDAD II
Sintaxis:
ESC cdigo_operacin, origen
Indicadores:
OF
DF
IF
TF
SF
ZF
AF
PF
CF
Se utiliza en combinacin con procesadores externos, tales como los coprocesadores de coma
flotante o de E/S, y abre al dispositivo externo el acceso a las direcciones y operandos requeridos. Al
mnemnico ESC le siguen los cdigos de operacin apropiados para el coprocesador as como la
instruccin y la direccin del operando necesario.
Ejemplo:
ESC 21,AX
HLT (Parada hasta interrupcin o reset).
Sintaxis:
HLT
Indicadores:
F
IF
TF
SF
ZF
AF
PF
F
F
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
-
Es una instruccin que se utiliza en aplicaciones de recursos compartidos para asegurar que no
accede simultneamente a la memoria ms de un procesador. Cuando una instruccin va precedida por
LOCK, el procesador bloquea inmediatamente el bus, introduciendo una seal por la patilla LOCK.
WAIT (Espera).
Sintaxis:
27 | P g i n a
JAZMN MONTIEL RAMREZ
ISMA-VI
UNIDAD II
WAIT
Indicadores:
OF
DF
IF
TF
SF
ZF
AF
PF
CF
Provoca la espera del procesador hasta que se detecta una seal en la patilla TEST. Ocurre, por
ejemplo, cuando el coprocesador ha terminado una operacin e indica su finalizacin. Suele preceder a
ESC para sincronizar las acciones del procesador y coprocesador.
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.
Ejemplo:
MOV BX, OFFSET TABLA
MOV AL, 4
XLAT TABLA
Para finalizar con las instrucciones de transferencia veremos un grupo de tres instrucciones:
LEA o cargar direccin efectiva
LDS o cargar el puntero en DS
LES o cargar el puntero en ES
Denominadas de transferencia de direcciones.
LEA (carga direccin efectiva).
Sintaxis:
LEA destino, origen
Indicadores:
OF
DF
IF
TF
SF
ZF
AF
PF
CF
Transfiere el desplazamiento del operando fuente al operando destino. Otras instrucciones pueden a
continuacin utilizar el registro como desplazamiento para acceder a los datos que constituyen el objetivo.
28 | P g i n a
JAZMN MONTIEL RAMREZ
ISMA-VI
UNIDAD II
El operando destino no puede ser un registro de segmento. En general, esta instruccin es equivalente a
MOV destino, OFFSET fuentey de hecho los buenos ensambladores (TASM) la codifican como MOV para
economizar un byte de memoria. Sin embargo, LEA es en algunos casos ms potente que MOV al permitir
indicar registros de ndice y desplazamiento para calcular el offset:
En el ejemplo de arriba, el valor depositado en DX es el OFFSET de la etiqueta DATO S ms el
registro SI. Esa sola instruccin es equivalente a estas dos:
MOV DX, OFFSET DATOS
ADD DX, SI
LDS (carga un puntero utilizando DS).
Sintaxis:
LDS destino, origen
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 endestino y,
con los otros dos, otra en DS.
Ejemplo:
PUNT DD 12345678H
LDS SI, PUNT
Como resultado de esta instruccin, en DS:SI se hace referencia a la posicin de memoria
1234h:5678h; 'DD' sirve para definir una variable larga de 4 bytes (denominada PUNT en el ejemplo).
LES (carga un puntero utilizando ES).
Sintaxis:
LES destino, origen
Esta instruccin es anloga a LDS, pero utilizando ES en lugar de D
ISMA-VI
UNIDAD II
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.
SMALL: Se utiliza en aplicaciones pequeas. Los segmentos de cdigo y datos son diferentes y no se
solapan. Por ello, hay 64 kb para cdigo y otros 64 Kb a repartir entre datos y pila.
MEDIUM: Este modelo es ideal para programas largos que no manejan demasiados datos. Se utilizan
punteros largos para el cdigo (que puede extenderse hasta 1 Mb) y cortos para los datos: la pila y los
datos juntos no pueden exceder de 64 Kb.
COMPACT: Al contrario que el anterior, este modelo es el apropiado para los programas pequeos
que emplean muchos datos. Por ello, el programa no puede exceder de 64 Kb aunque los datos que
controla pueden alcanzar el Mb, ya que los punteros de datos son de tipo far por defecto.
LARGE: Empleado en las aplicaciones grandes y tambin por los programadores de sistemas que no
tienen paciencia para andar forzando continuamente el tipo de los punteros (para rebasar el lmite de 64
Kb). Tanto los datos como el cdigo pueden alcanzar el Mb, aunque no se admite que los datos estticos
ocupen ms de 64 Kb. Este modo es el que menos problemas da para manejar la memoria, no siendo
quiz tan lento y pesado como indica el fabricante.
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.
A diferencia de una pila creciendo hacia arriba, en las mquinas intel crecen hacia abajo. En la Figura
2 muestra las capas de la pila despus de la ejecucin pushl $15. El punter de la pila es decrementado de
cuatro en cuatro y el nmero 15 es almacenando como lugares de 4 bytes, 1988, 1989, 1990 y 1991
30 | P g i n a
JAZMN MONTIEL RAMREZ
ISMA-VI
UNIDAD II
ISMA-VI
UNIDAD II
desde el punto de vista del proceso). Por otra parte, existen perifricos de almacenamiento tambin
llamados memorias auxiliares o masivas.
La mayora de los perifricos estn compuestos por una parte mecnica y otra parte electrnica.
Estas partes suelen separarse claramente para dar una mayor modularidad. A la componente electrnica
del perifrico se le suele denominar controlador del dispositivo o, tambin, adaptador del dispositivo. Si el
dispositivo no tiene parte mecnica (como, por ejemplo, la pantalla de un terminal), el controlador estar
formado por la parte digital del circuito. Frecuentemente los controladores de los dispositivos estn
alojados en una placa de circuito impreso diferenciada del resto del perifrico. En este caso es bastante
habitual que un mismo controlador pueda dar servicio a dispositivos de caractersticas similares.
El principal problema planteado por los perifricos es su gran variedad que tambin afecta a las
velocidades de transmisin. Por tanto, el mayor inconveniente que encontramos en los perifricos es la
diferencia entre sus velocidades de transmisin y la diferencia entre stas y la velocidad de operacin del
ordenador.
32 | P g i n a
JAZMN MONTIEL RAMREZ
ISMA-VI
UNIDAD II
CONCLUSIN
Se puede observar que un ensamblador es un lenguaje de bajo nivel para
las computadoras el cual es difcil de entender ya que utiliza de manera
simblica los nmeros en cdigo binario, en un lenguaje ensamblador se
realizan los ciclos numricos por medio de bucles y este es un es un grupo
de instrucciones que se ejecutan cclicamente N veces.
33 | P g i n a
JAZMN MONTIEL RAMREZ
ISMA-VI
UNIDAD II
BIBLIOGRAFA
Martnez, Jaime Garza JAOR. Organizacin y arquitectura de computadoras. Estado de
Mxico, Mxico.: Pretince Hall; 2000.
Canal, Ramn; Elias, Eduard; Gonzlez, Jos; Marcuello, Pedro; Molina,Carlos, Pea,
M.A.; Valero, Miguel. Estructura y Diseo de Computadores .Barcelona, 2000. Revert.
ISBN: 84-291-2619-8.
Blanco Viejo, Cecilio.Electrnica Digital. Universidad de Oviedo. ISBN: 84-8317-3727.http://books.google.com.mx/books?id=myOXwYAhOwgC&pg=PA209&dq=MEMORIA
+RAM&hl=en&s
Gil, Jos; Pealver, Lourdes; Pont, Ana; Robles, Antonio. Estructura de computadores
(vol I); Un recorrido por la Unidad Central de Pro cesos. Universidad Politcnica de
Valencia. ISBN: 84-7721-415-8.
Garca, Manuel; Lpez, Jos. Apuntes de Organizacin de Computadoras.Ediciones de
la Universidad de Oviedo. 2007. IS BN: 978-84-8317-606-1.
Tanenbaum, Andrew S. Sistemas Operativos Modernos; Segunda Edicin.Pearson
Educacin. Mx ico, 2003. ISBN: 970-26-0315-3. Pg.: 976.
http://www.infor.uva.es /cllamas/2/2-2.pdf
Apuntes de Modos de Direccionamiento. Departamento de Informtica, Universidad de
Valladolid. www.infor.uva.es/~bastida/OC/mo d os .pd.
34 | P g i n a
JAZMN MONTIEL RAMREZ
ISMA-VI
UNIDAD II