Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Unidad Ii
Unidad Ii
--------------------------------------------------------------------------------------------------------------
UNIDAD II PROGRAMACIN
2.1 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 mquina.
Existen 2 clases de lenguajes de programacin: de alto nivel y de bajo nivel. Los
programadores que escriben en un lenguaje de alto nivel (como C y Pascal), codifican
comandos poderosos, cada uno de los cuales puede generar muchas instrucciones en
lenguaje de mquina. Por otro lado, los programadores que escriben en un lenguaje
ensamblador de bajo nivel codifican instrucciones simblicas, cada una de las cuales genera
una instruccin en lenguaje maquina. A pesar del hecho de que codificar en un lenguaje de
alto nivel es mas productivo, algunas ventajas de codificar en lenguaje ensamblador son:
19
UNIDAD II Programacion.
-------------------------------------------------------------------------------------------------------------ETIQUETA o IDENTIFICADOR.- Es un nombre para designar un dato y la
direccin donde se encuentra dicho dato. Puede consistir de los siguientes
caracteres:
Etiq1:
(Directiva)
Constante Equ
100
20
UNIDAD II Programacion.
-------------------------------------------------------------------------------------------------------------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 le definicin siguiente de un elemento de datos llamado COUNTER, la
operacin DB significa definir byte .
ETIQUETA
Counter
OPERACIN
DB
OPERANDO
COMENTARIO
0
; define un byte con valor=0
OPERANDO
COMENTARIO
; Regresa
; Incrementa el registro CX
; Suma 12 al registro AX
CX
AX, 12
SMALL
.STACK
200
.DATA
___
___
___
.CODE
___
___
___
MOV AH,4CH
INT 21H
END
21
UNIDAD II Programacion.
-------------------------------------------------------------------------------------------------------------TIPOS DE MODELOS DE MEMORIA
Model
Model
Model
Model
Model
TYNY
SMALL
MEDIUM
COMPAC
LARGE
Model HUGE
CS = DS
CS = 64Kb
CS > 64Kb
CS < 64Kb
CS > 64Kb
CS > 64Kb
INICIALIZACION DE DATOS
Los datos pueden tener diferentes longitudes, asi podemos hablar de
BYTES (8 bits), de palabras WORD (16 bits) de doble palabra (32 bits).
Dependiendo de la longitud del dato se usa un directivo diferente para
declararlo.
DB
1byte
DW
2byte
DD
4byte
DF o DP 6byte
DQ
8byte
DT
10byte
Podemos usar una etiqueta para definir un arreglo, ejemplo:
Arreglo db
0, 1, 2, 3, 4
db
db
db
db
db
0
1
2
3
4
db
100 dup (0) ; define 100 bytes, todos con valor de( 0 )
22
UNIDAD II Programacion.
--------------------------------------------------------------------------------------------------------------
AX, BX
20H
23
UNIDAD II Programacion.
-------------------------------------------------------------------------------------------------------------
24
UNIDAD II Programacion.
--------------------------------------------------------------------------------------------------------------
25
UNIDAD II Programacion.
--------------------------------------------------------------------------------------------------------------
CONJUNTO DE INSTRUCCIONES.
1) TRANSFERENCIA DE DATOS.
A) DE PROPOSITO GENERAL
1.- MOV destino, Fuente
2.- PUSH fuente
3.- POP destino
4.- XCHG destino, fuente
5.- XLAT
;Mueve datos
;Mete datos a la Pila
;Saca datos de la Pila
;Intercambia contenidos
;Traduce (Uso para tablas)
B) GRUPO DE ENTRADA-SALIDA.
1.- IN
acumulador, puerto ;Lee un dato del Puerto
2.- OUT puerto, acumulador ;Saca un dato por el puerto
C) DE OPERANDO DE DIRECCION.
1.- LEA destino, fuente
;Carga una direccin efectiva
2.- LDS destino, fuente
;Carga el reg. De segmento datos
3.- LES destino, fuente
;Carga el reg. De segmento extra
D) TRANSFERENCIA DE BANDERAS.
1.- LAHF
;Carga al reg. AH con las banderas
2.- SAHF
;Enva el reg AH al reg. de Banderas
3.- PUSHF
;Guarda las banderas en el stack
4.- POPF
;Lo que saca del stack lo pone en el
reg. De banderas
2) INSTRUCCIONES ARITMETICAS
A) DE SUMA
1.2.3.4.5.-
ADD
ADC
INC
DAA
AAA
destino, fuente
destino, fuente
destino
B) DE RESTA
1.- SUB
2.- SBB
3.- CMP
4.- DAS
5.- AAS
destino, fuente
destino, fuente
destino, fuente
26
UNIDAD II Programacion.
--------------------------------------------------------------------------------------------------------------
C) DE MULTIPLICACION.
1.- MUL
2.- IMUL
3.- AAM
D) DIVISION
1.- DIV
fuente (sin signo)
;Divide sin signo
2.- IDIV fuente (con signo)
;Divide con signo
3.- AAD
;Ajuste ASCII para la divisin
3) INSTRUCCIONES DE MANIPULACION DE BITS
A) LOGICAS
1.2.3.4.5.6.-
NOT
AND
OR
XOR
TEST
NEG
destino
destino, fuente
destino, fuente
destino, fuente
destino, fuente
destino
B) DE DESPLAZAMIENTO
1.2.3.4.-
SHL
SAL
SHR
SAR
destino, contador
destino, contador
destino, contador
destino, contador
C) GIROS
1.2.3.4.-
ROL
ROR
RCL
RCR
destino, contador
destino, contador
destino, contador
destino, contador
;Rotacin a la izquierda
;Rotacin a la derecha
; Rotacin a la izquierda con carry
; Rotacin a la iderecha con carry
4) INSTRUCCIONES DE CADENA
1.- MOVS
cadena-destino, cadena-fuente
MOVSB ----- MOVSW
; Mueve cadenas
2.- LODS
cadena-fuente
3.- STOS
cadena-destino, cadena-fuente
STOSB -----STOSW
;carga cadena
;Almacena una cadena
27
UNIDAD II Programacion.
-------------------------------------------------------------------------------------------------------------4.- CMPS
cadena-destino, cadena-fuente
CMPSB ------CMPSW
;Compara cadenas
5.- SCAS
cadena-destino
SCASB ------SCASW
A) TRANSFERENCIA INCONDICIONAL
1.- CALL
2.- RET
3.- JMP
destino
(RETN, RETF)
destino
;llama a un procedimiento
;regresa de un procedimiento
;Salto incondicional
B) TRANSFERENCIA CONDICIONAL
1.2.3.4.5.6.7.8.9.-
JB/JNAE
JAE/JNB
JBE/JNA
JA/JNBE
JE/JZ
JNE/JNZ
JL/JNGE
JGE/JNL
JLE/JNG
10.- JG/JNLE
11.- JP/JPE
12.- JNP/JPO
13.- JS
14.- JNS
15.- JC
16.- JNC
17.- JO
18.- JNO
C) CONTROL DE ITERACIONES
1.2.3.4.-
LOOP
ETIQ
LOOPE/LOOPZ ETIQ
LOOPNE/LOOPNZ ETIQ
JCXZ
ETIQ
28
UNIDAD II Programacion.
-------------------------------------------------------------------------------------------------------------6) INSTRUCCIONES DE INTERRUPCION
1.2.-
INT vector
IRET
;peticin de Interrupcin
;Regreso de una interrupcin
HLT
WAIT
8) INSTRUCCIONES DE CONVERSION
1.- CBW
2.- CWD
29
UNIDAD II Programacion.
--------------------------------------------------------------------------------------------------------------
DB
DB
00H
00H
INICIO:
____
____
____
____
mov AH,4CH
Int 21H
END
FORMATO .EXE
.Model SMALL HUGE
.STACK 200
.DATA
Var1
Var2
db 00H
db 00H
30
UNIDAD II Programacion.
--------------------------------------------------------------------------------------------------------------
PROGRAMAS .COM
-
PROGRAMAS .EXE
-
31
UNIDAD II Programacion.
--------------------------------------------------------------------------------------------------------------
Small
100
let1 db
let2 db
ax, @DATA
ds, ax
32
UNIDAD II Programacion.
--------------------------------------------------------------------------------------------------------------
inicio: mov
mov
int
exit:
lea
mov
int
dx, [let2]
ah, 09h
21h
mov
int
ah, 01h
21h
mov
mov
int
mov
int
mov
mov
int
ah, 01h
21h
dx, offset msg2
ah, 09h
21h
mov
int
ah, 01h
21h
mov
mov
int
mov
int
ah, 01h
21h
mov
int
ax, 4C00H
21h
END
MICROPROCESADORES I (Apuntes del Ing. Jorge Aguirre B.)
33