Vous êtes sur la page 1sur 15

UNIDAD II

--------------------------------------------------------------------------------------------------------------
UNIDAD II PROGRAMACIN
LENGUAJE ENSAMBLADOR
En el lenguaje ensamblador el programador utiliza instrucciones simblicas en lugar de
instrucciones de maquina y nombres descriptivos para los elementos de datos y para las
localidades de memoria. Usted escribe un programa en ensamblador de acuerdo con un
conjunto estricto de reglas que despus utiliza el programa traductor de ensamblador para
convertir el programa ensamblador en cdigo m!quina.
E"isten # clases de lenguajes de programacin$ de alto nivel y de bajo nivel. %os
programadores que escriben en un lenguaje de alto nivel &como ' y (ascal)* codi+ican
comandos poderosos* cada uno de los cuales puede generar muc,as instrucciones en
lenguaje de m!quina. (or otro lado* los programadores que escriben en un lenguaje
ensamblador de bajo nivel codi+ican instrucciones simblicas* cada una de las cuales genera
una instruccin en lenguaje maquina. A pesar del ,ec,o de que codi+icar en un lenguaje de
alto nivel es mas productivo* algunas ventajas de codi+icar en lenguaje ensamblador son$
(roporciona m!s control sobre el manejo particular de los requerimientos de
,ard-are.
.enera mdulos ejecutables m!s peque/os y mas compactos.
'on mayor probabilidad tiene una ejecucin mas r!pida.
Una pr!ctica com0n es combinar los bene+icios de ambos niveles de programacin. Un
lenguaje de alto nivel utiliza un compilador para traducir el cdigo +uente a lenguaje
maquina. Un lenguaje de bajo nivel utiliza un ensamblador para realizar la traduccin.
Un programa en lenguaje ensamblador consiste en un conjunto de enunciados. %os dos
tipos de enunciados o l1neas de programacin son$
2.- Instruccin* tal como 345 y ADD* que el ensamblador traduce a cdigo objeto
#.- Directiva* que indican al ensamblador que realice una accin especi+ica* como de+inir un
elemento de dato.

ENUNCIADO O LINEA DE PROGRAMACIN:
[Etiqueta] <Operacin o irecti!a" [ operano #$% ] [ & co'entario$ ]
NOTA: Los corchetes indican una entrada opcional
A continuacin se ,ar! un comentario de c 6elemento$
27
UNIDAD II
--------------------------------------------------------------------------------------------------------------
E(I)UE(A o IDEN(I*ICADOR+, Es un nombre para designar un dato y la
direccin donde se encuentra dicho dato. Puede consistir de los siguientes
caracteres:
Letras del alfabeto: A- a -!
"#gitos: $% &' $no puede ser el primer car(cter'
)aracteres especiales: signo de interrogacin $*'
+ubrayado $ , '
+igno de pesos $ - '
Arroba $ . '
Punto $ . ' $no puede ser el primer car(cter'
no debe tener espacios en blanco en medio de la eti/ueta. Para definir una
eti/ueta se usan los directi0os "12 "3. 4na eti/ueta puede tener los siguientes
usos:
a' )omo 0ariable.- E5emplo:
num db 67 8 A num se le asocia el 0alor 67 y la direccin donde se encuentra
dicho dato.
Tambi9n podemos hacer:
num d: 676;<
b' )omo direccin.- En la cual puede continuar el programa:
+4=A: A"" A>2 ">
,,,,,,,,,,,,,
,,,,,,,,,,,,,
?=P +4=A
OPERACIN O DIREC(I-A+, En este campo deber( estar el nombre de la
operacin $=nemnico' /ue el micro deber( reali!ar2 o el nombre de una orden
$directi0a' /ue el programa ensamblador deber( e5ecutar al momento de
ensamblar nuestro programa. Al ensamblarse nuestro programa se genera un
cdigo e5ecutable2 /ue el micro entiende. La directi0a no genera cdigo e5ecutable
solo el mnemnico.
$@nstruccin' Eti/A: =OB A>2 C%<
$"irecti0a' )onstante E/u A%%
Algunas directi0as ser#an:
.=odel @ndica el modelo de memoria /ue usara el programa
.+tacD @ndica el tamaEo del +tacD o pila
."ata @ndica el inicio del segmento de datos
.)ode @ndica el inicio del segmento de cdigo
End @ndica el fin del programa
#8
UNIDAD II
--------------------------------------------------------------------------------------------------------------
OPERANDO+, $+i eFiste' proporciona informacin para la operacin /ue actGa
sobre el. Para un elemento de datos2 el operando identifica su 0alor inicial. Por
e5emplo2 en le definicin siguiente de un elemento de datos llamado )O4NTEH2 la
operacin "3 significa Idefinir byteJ .
ETIQUETA OPERACIN OPERANDO COMENTARIO
)ounter "3 % 8 define un byte con 0alorK%
Para una instruccin un operando indica en donde reali!ar la operacin. 4na
instruccin puede tener uno2 dos o tal 0e! ningun operando. A/u# est(n tres
e5emplos:
OPERACIN OPERANDO COMENTARIO
HET 8 Hegresa
@N) )> 8 @ncrementa el registro )>
A"" A>2 AC 8 +uma AC al registro A>
COMEN(ARIO.+, Empie!an con $ 8 ' y me5oran la claridad del programa2 donde
el propsito de un con5unto de instrucciones en especial no es claro.
E.(RUC(URA DE UN PROGRAMA+, 4n programa escrito en lengua5e
ensamblador se ensambla por medio de un programa ensamblador: Los
programas mas comunes para el L%LL2 L%L6 con el Turboensamblador $TA+=' de
la compaE#a 3orland y el de la compaE#a =icrosoft $=A+='.
Los re/uerimientos m#nimos para un programa escrito en lengua5e
ensamblador son:
.=odel +=ALL 8 indica el modelo de memoria $+=ALL'
.+TA)M C%% 8 indica el tamaEo del +TA)M $bytes'
."ATA 8 indica /ue la siguiente informacin
,,, 8 deber( /uedar en el segmento de datos
,,,
,,,
.)O"E 8 indica /ue la siguiente informacin
,,, 8 es el programa e5ecutable
,,,
,,,
=OB A<2N)< 8necesario para terminar el programa
@NT CA< 8 y regresar al prompt )O
EN" 8 @ndica el fin del programa
#2
UNIDAD II
--------------------------------------------------------------------------------------------------------------
(IPO. DE MODELO. DE MEMORIA
=odel TPNP )+ K "+ En A solo segmento d 6NM
=odel +=ALL )+ K 6NMb "+ K 6NMb
=odel =E"@4= )+ O 6NMb "+ Q 6NMb
=odel )O=PA) )+ Q 6NMb "+ O 6NMb
=odel LAHRE )+ O 6NMb "+ O 6NMb$Los arreglos de datos
"eben ocupar menos de 6N M'
=odel <4RE )+ O 6NMb "+ O 6NMb$Los arreglos de datos
Pueden ocupar mas de 6N Mb'
INICIALI/ACION DE DA(O.
Los datos pueden tener diferentes longitudes2 asi podemos hablar de
3PTE+ $L bits'2 de palabras 1OH" $A6 bits' de doble palabra $SC bits'.
"ependiendo de la longitud del dato se usa un directi0o diferente para
declararlo.
"3 Abyte
"1 Cbyte
"" Nbyte
"T o "P 6byte
"U Lbyte
"T A%byte

Podemos usar una eti/ueta para definir un arreglo2 e5emplo:
Arreglo db %2 A2 C2 S2 N 8 define 7 bytes con 0alores$%2A2C2S2N'
Otra forma de iniciali!ar arreglo.
Arreglo db %
db A
db C
db S
db N
"irecti0a "4P para definir una cierta cantidad de datos.
T@LA db A%% dup $%' 8 define A%% bytes2 todos con 0alor de$ % '

##
UNIDAD II
--------------------------------------------------------------------------------------------------------------
MODOS DE DIRECCIONAMIENTO
INMEDIATO.- El dato a cargar en el operando destino es una constante. El
usuario especifica un byte o palabra como operando fuente. Esta constante
se ensambla como parte de la instruccin. Por e5emplo:
=OB A>2AL 8)oloca el num. AL en el reg. A>.
DE REGISTRO.- El dato a cargar en el operando destino se obtiene de un
registro . E5emplo :
=OB A>2 3>
Es un e5emplo de direccionamiento de registro en donde la unidad de
e5ecucin $E4' toma el operando del registro 3>2 determina como destino el
registro A> y ordena a la AL4 lle0ar a cabo la operacin.
DIRECTO.- El dato a cargar en el operando destino esta guardado en una
0ariable $Eti/ueta'. En este direccionamiento la direccin efecti0a $EA'2 para
una localidad de memoria2 esta contenida en la instruccin. Para obtener la
direccin de C% bits2 se suman el despla!amiento /ue tiene la eti/ueta y el
contenido del registro "+. La siguiente instruccin es un e5emplo de este
tipo de direccionamiento.
=OB A>2 BAHA
"onde pre0iamente se defini en el segmento de datos a BAHA
BAHA "3 C%<
DE REGISTRO INDIRECTO.- El dato a cargar en el operando destino esta
guardado en una 0ariable$Normalmente un arreglo' y se carga al operando
destino indirectamente a tra09s de uno de los siguientes registros: 012 0P2
.I o DI+ Para e0itar confundir este modo de direccionamiento con el de
registro2 en la instruccin2 los registros deben aparecer entre par9ntesis
rectangulares. )omo la EA es una direccin y no el contenido de una
localidad de memoria2 antes de utili!ar los registros mencionados2 estos
deben contener direcciones. 4na t9cnica para asegurar lo anterior es
utili!ar el operador OTT+ET.
=OB 3>2 OTT+ET AHHERLO

Este modo de direccionamiento se puede usar para colocar el
contenido de la localidad de memoria a la /ue apunta 3>2 por e5emplo en
A>.
=OB A>2 V 3> W
"onde V3>W es un despla!amiento relati0o a "+ $ "+:V 3> W '
#9
UNIDAD II
--------------------------------------------------------------------------------------------------------------
RELATIVO A LA BASE.- Al hacer uso de este modo de direccionamiento2
la EA del operando fuente se obtiene al sumar un despla!amiento a los
siguientes registros: 0P o 01+ En este caso2 los registros deben contener la
direccin del despla!amiento. 4n e5emplo del uso de este tipo de
direccionamiento lo ofrece la siguiente instruccin:
=OB A>2 V 3>XC W
INDEXADO DIRECTO.- En este modo2 la $EA' es la suma del contenido de
un registro #ndice #.I o DI% 3 un e$p4a5a'iento. 4n e5emplo comGn lo
construye una secuencia de instrucciones2 donde primero se carga una
direccin en un registro #ndice y despu9s la misma se combina con una
localidad de memoria.
=OB +@2 C
=OB A>2 AHHERLOV +@ W
En este caso2 en el registro A> se coloca el contenido de la localidad de
memoria cuya direccin es la de AHHERLO X C.
INDEXADO DE BASE.- La $EA' es la suma de los contenidos del registro
base #01%2 un registro #ndice #.I o DI% 3 un e$p4a5a'iento $opcional'. La
siguiente es una secuencia de instrucciones /ue ilustra este tipo de
direccionamiento.
=OB 3>2OTT+ET ET@U4ETA
=OB +@2
=OB A>2V 3> X +@ XC W
#:
UNIDAD II
--------------------------------------------------------------------------------------------------------------
CONJUNTO DE INSTRUCCIONES
Las instrucciones est(n agrupadas en los siguientes grupos y subgrupos:
A.- THAN+TEHEN)@A "E "ATO+.
a' "e propsito general.
b' EntradaY+alida.
c' "e operando direccin.
d' Transferencia de banderas.
C.-@N+TH4))@ONE+ AH@T=ENT@)A+.
a' +uma.
b' Hesta.
c' =ultiplicacin.
d' "i0isin.
S.-=AN@P4LA)@ON "E 3@T.
a' Lgicas.
b' "espla!amiento.
c' Riro.
N.-"E )A"ENA.
7.-"E THAN+TEHEN)@A "E PHORHA=A.
a' @ncondicional.
b' )ondicional.
c' )ontrol de iteraciones.
6.-"E @NTEHH4P)@ONE+.

;.-)ONTHOL "EL PHO)E+A"OH.
A' Operaciones con banderas.
b' +incroni!acin eFtrema.
c' NOP.

#;
UNIDAD II
--------------------------------------------------------------------------------------------------------------
CON6UN(O DE IN.(RUCCIONE.+
A' THAN+TEHEN)@A "E "ATO+.
A' "E PHOPO+@TO RENEHAL
A.- =OB destino2 Tuente 8=ue0e datos
C.- P4+< fuente 8=ete datos a la Pila
S.- POP destino 8+aca datos de la Pila
N.- >)<R destino2 fuente 8@ntercambia contenidos
7.- >LAT 8Traduce $4so para tablas'

3' RH4PO "E ENTHA"A-+AL@"A.
A.- @N acumulador2 puerto 8Lee un dato del Puerto
C.- O4T puerto2 acumulador 8+aca un dato por el puerto

)' "E OPEHAN"O "E "@HE))@ON.
A.- LEA destino2 fuente 8)arga una direccin efecti0a
C.- L"+ destino2 fuente 8)arga el reg. "e segmento datos
S.- LE+ destino2 fuente 8)arga el reg. "e segmento eFtra

"' THAN+TEHEN)@A "E 3AN"EHA+.
A.- LA<T 8)arga al reg. A< con las banderas
C.- +A<T 8En0#a el reg A< al reg. de 3anderas
S.- P4+<T 8Ruarda las banderas en el stacD
N.- POPT 8Lo /ue saca del stacD lo pone en el
reg. "e banderas

C' @N+TH4))@ONE+ AH@T=ET@)A+
A' "E +4=A
A.- A"" destino2 fuente 8+uma de nGmeros binarios
C.- A") destino2 fuente 8+uma con carry
S.- @N) destino 8 @ncrementos de A
N.- "AA 8A5uste decimal despu9s de sumar
7.- AAA 8A5uste A+)@@ despu9s de sumar
3' "E HE+TA
A.- +43 destino2 fuente 8resta 0alores binarios
C.- +33 destino2 fuente 8resta con borro:
S.- )=P destino2 fuente 8compara datos
N.- "A+ 8A5uste decimal despu9s de restar
7.- AA+ 8A5uste A+)@@ despu9s de restar
#<
UNIDAD II
--------------------------------------------------------------------------------------------------------------
)' "E =4LT@PL@)A)@ON.
A.- =4L fuente $sin signo' 8=ultiplica sin signo
C.- @=4L fuente $con signo' 8=ultiplica con signo$enteros'
S.- AA= 8A5uste A+)@@ para la multiplicacin
"' "@B@+@ON
A.- "@B fuente $sin signo' 8"i0ide sin signo
C.- @"@B fuente $con signo' 8"i0ide con signo
S.- AA" 8A5uste A+)@@ para la di0isin
S' @N+TH4))@ONE+ "E =AN@P4LA)@ON "E 3@T+
A' LOR@)A+
A.- NOT destino 8Negacin lgica $No'
C.- AN" destino2 fuente 8)on5uncin lgica $y'
S.- OH destino2 fuente 8"isyuncin lgica $o'
N.- >OH destino2 fuente 8OH EFclusi0a
7.- TE+T destino2 fuente 8Prueba bits
6.- NER destino 8Negacin
3' "E "E+PLAA=@ENTO
A.- +<L destino2 contador 8)orrimiento lgico a la i!/uierda
C.- +AL destino2 contador 8)orrimiento algebraico a la i!/.
S.- +<H destino2 contador 8)orrimiento lgico a la "erecha
N.- +AH destino2 contador 8 )orrimiento algebraico a la "er.
)' R@HO+
A.- HOL destino2 contador 8Hotacin a la i!/uierda
C.- HOH destino2 contador 8Hotacin a la derecha
S.- H)L destino2 contador 8 Hotacin a la i!/uierda con carry
N.- H)H destino2 contador 8 Hotacin a la iderecha con carry
N' @N+TH4))@ONE+ "E )A"ENA
A.- =OB+ cadena-destino2 cadena-fuente 8 =ue0e cadenas
=OB+3 ----- =OB+1
C.- LO"+ cadena-fuente 8carga cadena
S.- +TO+ cadena-destino2 cadena-fuente 8Almacena una cadena
+TO+3 -----+TO+1
#=
UNIDAD II
--------------------------------------------------------------------------------------------------------------
N.- )=P+ cadena-destino2 cadena-fuente 8)ompara cadenas
)=P+3 ------)=P+1

7.- +)A+ cadena-destino 8EFplora una cadena
+)A+3 ------+)A+1
7' @N+TH4))@ONE+ "E THAN+TEHEN)@A "E PHORHA=A

A' THAN+TEHEN)@A @N)ON"@)@ONAL
A.- )ALL destino 8llama a un procedimiento
C.- HET $HETN2 HETT' 8regresa de un procedimiento
S.- ?=P destino 8+alto incondicional
3' THAN+TEHEN)@A )ON"@)@ONAL
A.- ?3Y?NAE $+alta si es ba5o Y no arriba ni igual' )TKA
C.- ?AEY?N3 $+alta si esta arriba o igual Y no esta ba5o' )TK%
S.- ?3EY?NA $+alta si es ba5o igual Y no esta arriba' )TKA o TKA
N.- ?AY?N3E $+alta si esta arriba Y no ba5o ni igual' )TK% y TK%
7.- ?EY? $+alta si fueron iguales' TKA
6.- ?NEY?N $+alta si no es igual a' TK%
;.- ?LY?NRE $menorYno mas grande ni igual' +T diferente de OT
L.- ?REY?NL $mas grande o igual Yno menor' +TKOT
&.- ?LEY?NR $menor o igualYno mas grande' TKA o +T diferente
de %T.
A%.- ?RY?NLE $mas grandeYno menos ni igual' TK% o +TKOT
AA.- ?PY?PE $paridad puestoYsi hay paridad par' PTKA
AC.- ?NPY?PO $paridad no puestaY paridad impar' PTK%
AS.- ?+ $bit de signo puesto' +KA
AN.- ?N+ $bit de signo no puesto' +TK%
A7.- ?) $carry puesto' )TKA
A6.- ?N) $carry no puesto' )TK%
A;.- ?O $sobreflu5o puesto' OTKA
AL.- ?NO $sobreflu5o no puesto' OTKA
)' )ONTHOL "E @TEHA)@ONE+

A.- LOOP ET@U 8 Hepetir hasta /ue )>K%
C.- LOOPEYLOOP ET@U 8Hepetir hasta /ue )>K% o KA
S.- LOOPNEYLOOPN ET@U 8Hep. hasta /ue )>K% o K%
N.- ?)> ET@U 8+alta si )>K%
#>
UNIDAD II
--------------------------------------------------------------------------------------------------------------
6' @N+TH4))@ONE+ "E @NTEHH4P)@ON
A.- @NT 0ector 8peticin de @nterrupcin
C.- @HET 8Hegreso de una interrupcin
;' @N+TH4))@ONE+ "E )ONTHOL "EL PHO)E+A"OH
a. OPEHA)@ONE+ )ON 3AN"EHA+
A.- +T) Pone la bandera de carry )KA
C.- )L) Limpia la bandera de carry )K%
S.- )=) )omplementa la bandera de carry
N.- +T" Pone la bandera de direccin "KA
7.- )L" Limpia la bandera de direccin "K%
6.- +T@ Pone la bandera de interrupcin habilitada @TKA
;.- )L@ Limpia la bandera de interrupcin habilitada @TK%
3. @N+TH4))@ONE+ "E )ONTHOL "EL PHO)E+A"OH

A.- <LT Pone al micro en estado est(tico.
C.- 1A@T Entra en edo. de espera hasta /ue se acti0e la l#nea
TE+T.

L' @N+TH4))@ONE+ "E )ONBEH+@ON

A.- )31 )on0ersin de 3yte a palabra
C.- )1" )on0ersin de palabra a doble palabra


#7
UNIDAD II
--------------------------------------------------------------------------------------------------------------
MODOS DE PROGRAMACIN
EFisten C tipos de programas:
a'.- Los programas .E>E
b'.- Los programas .)O=
Algunas de las diferencias b(sicas entre un programa /ue es para e5ecutarse
como .E>E y un programa /ue es para e5ecutarse como .)O= implica el tamaEo
del programa2 la segmentacin y la iniciali!acin.
4n programa .)O= es mas pe/ueEo /ue un programa .E>E
4n programa .)O= est( restringido a un solo segmento de 6NMb. El
segmento de cdigo2 el segmento de datos2 el segmento de stacD y el
segmento eFtra est(n todos traslapados en uno solo. Esto no sucede as# en
los programas .E>E
En un programa .)O= los datos est(n en el mismo segmento /ue el de
cdigo2 por lo tanto la primera instruccin es un salto a donde continua el
cdigo del programa 2 e0itando /ue el )P4 lea los datos como si fueran
instrucciones. En los programas .E>E no eFiste este problema ya /ue el
segmento de cdigo y el de datos est(n separados2 mas sin embargo las
primeras instrucciones en este tipo de programas son para obtener la
direccin en donde el sistema operati0o guardo los datos2 y carg(rsela al
registro "+.
=OB A>2 . "ATA
=OB "+2 A>
DI*ERENCIA. 0A.ICA. EN .U *ORMA(O DE PROGRAMA:
FORMATO .COM FORMATO .EXE
.=odel T@NP .=odel +=ALL <4RE
.)ode .+TA)M C%%
OHR A%%< ."ATA
+TAHT: ?=P @N@)@O
BarA "3 %%< BarA db %%<
BarC "3 %%< BarC db %%<
@N@)@O: @N@)@O: mo0 A>2."ATA
,,,, mo0 "+2A>
,,,, ,,,
,,,, ,,,
,,,, ,,,

mo0 A<2N)< mo0 A<2N)<
@nt CA< int CA<
EN" EN"
98
UNIDAD II
--------------------------------------------------------------------------------------------------------------
PHORHA=A+ .)O=
- Todos los segmentos inician en la misma direccin )+K"+KE+K++ o sea
/ue se encuentran traslapados en un segmento de 6NM $modelo T@NP'.
- El programa inicia en la direccin A%%<2 ya /ue este espacio lo reser0a
para el P+P $Program +egment prefiF'
- La primera instruccin es brinco al inicio del cdigo2 reser0ando el espacio
para datos.
- Tienen brincos y llamados cortos $NEAH'.
PHORHA=A+ .E>E
- Puede tener modelos de memoria2 desde el +=ALL hasta <4RE.
- +us segmentos pueden estar en direcciones diferentes.
- Al inicio del segmento de cdigos las primeras instrucciones son para
recuperar la direccin del segmento de datos.
- Pueden tener ambos tipos de brincos y llamados $NEAH:TAH'.
92
UNIDAD II
--------------------------------------------------------------------------------------------------------------
EJEMPLOS DE PROGRAMACIN BASICA
(?I3E? (?4.?A3A DE E@E3(%4&Aormato .EBE)$
Uso de las +unciones 82C* 87C y :'C de la IND #2C
Funcion (01H) INT 21H
ACE 82C Auncion para leer 2 tecla del teclado* regresa el codigo
asscii de la tecla presionada en el registro A%
Funcion (09H) INT 21H
ACE 87C Auncion para sacar una cadena de caracteres a la
pantalla* la cadena termina con un F y va encerrado entre
comillas. 'argar en el registro DB la EA de donde se
encuentra la cadena de caracteres.
Funcion (4CH) INT 21H
ACE :'C Auncion que sirve para terminar un programa y devolver
el control al sistema operativo.
Funcion (09H) INT 21H
.3odel Gmall
.stacH 288
.data
let2 db 29*28*28* I3i primer programa de ejemplo F I
let# db 29*28* I 'ual mensaje deseas J2-9K F L
msg2 db 29*28* I3ensaje UN4 F I
msg# db 29*28* I3ensaje D4G F I
msg9 db 29*28* I3ensaje D?EG F I
.'ode
mov a"* MDADA
mov ds* a"
9#
UNIDAD II
--------------------------------------------------------------------------------------------------------------
inicio$ mov d"* o++set let2
mov a,* 87,
int #2,
lea d"* Nlet#O
mov a,* 87,
int #2,
mov a,* 82,
int #2,
mov d"* o++set msg2
mov a,* 87,
int #2,
mov a,* 82,
int #2,
mov d"* o++set msg#
mov a,* 87,
int #2,
mov a,* 82,
int #2,
mov d"* o++set msg9
mov a,* 87,
int #2,
mov a,* 82,
int #2,
e"it$ mov a"* :'88C
int #2,
END
99

Vous aimerez peut-être aussi