Anda di halaman 1dari 10

Ing.

Miriam Edith Galicia Mendiola


ENSAMBLADOR
REGISTROS DE USO GENERAL
Existen 4 registros denominados AX, BX, CX y DX que en realidad tienen asignados usos caractersticos, aunque pueden ser
utilizados a discrecin para cualquier cosa que necesitemos.

AX (acumulador), suele contener uno de los operandos que intervienen en las operaciones
aritmticas y lgicas, y despus de esta, el resultado de la operacin. En general las
instrucciones que trabajan con este registro (o su mitad inferior) tienen un microcdigo ms
simple que la misma instruccin ejecutada con otro registro.

BX es el registro base, suele contener la direccin de inicio de una tabla de valores.

CX es denominado contador. Las instrucciones de bucle (LOOP) utilizan este registro como
contador.

DX es un registro de datos, multiuso. Se utiliza en operaciones de multiplicacin y divisin
junto con AX. En operaciones de entrada/salida de puertos IN/OUT, su mitad inferior DL,
contiene el nmero de puerto ( 2.5).

REGISTROS DE SEGMENTO
Se dispone de cuatro registros que sirven para contener las direcciones de otros tantos segmentos
(zonas de 64 KB de memoria). Utilizndolos en conjuncin con otros registros que sealan las
direcciones concretas dentro de estos segmentos (los desplazamientos ), permiten manejar la
totalidad de la memoria direccionable (el bus de direcciones es de 20 bits). Ver al respecto el
epgrafe "Direccionamiento segmentado".

Segmento de cdigo CS ("Code segment"). Seala la direccin del segmento de cdigo del
programa que se est ejecutando.

Segmento de datos DS ("Data segment"). Seala la direccin del segmento de datos del
programa en ejecucin.

Segmento de pila SS ("Stack segment"). Seala la direccin del segmento donde est la pila del
programa.

Segmento extra ES ("Extra segment"). Es un segmento auxiliar a los anteriores, se utiliza para
sealar espacio extra en alguno de los segmentos o para almacenar momentneamente
direcciones intermedias.

REGISTROS DE PUNTERO
Son 5 registros destinados a contener direcciones; estas direcciones son desplazamientos dentro de los segmentos
indicados por los registros de segmento.

El primero, denominado indistintamente puntero de instruccin IP ("Instruccin pointer") y contador de programa
PC ("Program counter"), indica el desplazamiento (dentro del segmento de cdigo CS) de la prxima instruccin a
ejecutar.

El puntero de pila SP ("Stack Pointer"), seala el desplazamiento del final de la pila dentro del segmento de pila
SS. En caso necesario la pila puede crecer a partir de este punto, de forma que por ejemplo, una nueva invocacin
de funcin crear un nuevo registro de activacin que comenzar en este punto.

El puntero base BP ("Base pointer") seala el desplazamiento (dentro del segmento de pila SS) donde se
encuentra el origen de la zona ocupada por las variables dinmicas.

Existen dos registros denominados "de ndice", en razn de su utilizacin muy particular; el ndice fuente SI
("Source index") y el ndice destino DI ("Destination index"). Generalmente estos dos registros se utilizan con
alguno de los registros de uso general y con ciertas instrucciones especficamente pensadas para transferir datos
(dentro de un rango de posiciones de memoria), desde un punto inicial de un segmento de datos, a otro.

REGISTRO DE ESTADO
Existe un registro especial, el registro de estado (FLAGS), en el que 9 de los 18 bits actan
como semforos (indicadores del estado del procesador y del resultado de determinadas
operaciones). Por ejemplo, si despus de una suma aritmtica hay o no desbordamiento
del bit ms significativo.
Los nombres y situacin de cada uno, dentro de la palabra de 16 bits, se muestran en la
figura 2.

EJERCICIO 1

stack segment
dw 64 dup(?)
stack ends

data segment
Texto db "hola.",13,10,"$"
data ends


code segment
assume cs:code,ds:data,ss:stack

Programa:
MOV AX, DATA
MOV DS, AX
mov dx, offset Texto
MOV AH, 09h
INT 21H
MOV AX, 4CH
INT 21H
code ends
end programa
Seala la direccin del segmento donde est la pila del
programa
Seala la direccin del segmento de datos del
programa en ejecucin
Seala la direccin del segmento de cdigo del programa que
se est ejecutando
Segmento de pila que
define el espacio para ser
usado por el stack
Indica que registros de segmento se asociarn con
las etiquetas
Declaradas en las definiciones del segmento
Servicio: Funciones alto nivel DOS
Regresa el control al sistema operativo
Visualiza cadena
Obtiene direccin del mensaje
Data segment
label1 DB "Selecciona una operacion $"
label2 DB "1.- Suma $"
label6 DB "5.- Salir $"
label7 DB "Ingrese una opcion $"
label8 DB "Ingrese numero $"
label9 DB "El resultado es $"
resultado DB 0
Data ends


pila segment stack

DW 256 DUP (?)

pila ends

code segment

menu proc far

assume cs:code,ds:data,ss:pila
push ds
xor ax,ax
push ax
mov ax,data
mov ds,ax
xor dx,dx

mov ah,02h
mov dl,10
int 21h
mov ah,02h
mov dl,13
int 21h
;imprime seleccion de menu

mov ah,09h
mov dx,offset label7
int 21h

;lee teclado
mov ah,01h
int 21h

;ajunstando el teclado
xor ah,ah
sub al,30h
mov cx,2
;verificando opcion

cmp al,1
jz suma ;se dirige al metodo suma
Guarda valor en pila
Despliega un carcter a la pantalla.
Interrupcin reservada para BIOS
Lee estado del teclado
Resta el operando fuente del destino.
Resta la cadena fuente de la cadena destino.
suma:
mov ah, 02h
mov dl , 10
i nt 21h
mov ah, 02h
mov dl , 13
i nt 21h
mov ah, 09h
mov dx, of f set l abel 8
i nt 21h

; l ee t ecl ado
mov ah, 01h
i nt 21h

; veri f i cando si es negat i vo
cmp al , 2dh
; j e si gno

; aj ust a t ecl ado
sub al , 30h
add resul t ado, al
j mp ret urn1


si gno:
mov ah, 01h
i nt 21h
sub al , 30h
neg al
add resul t ado, al
j e ret urn1

ret urn1: l oop suma


i mp1:
cmp resul t ado, 00
j l i mp2
; i nt erl i neado
mov ah, 02h
mov dl , 10
i nt 21h
mov ah, 02h
mov dl , 13
i nt 21h
mov AH, 09H
mov DX, OFFSET l abel 9
i nt 21H
j mp i mpri me


salto no condicional
compara dos operandos, modificando los flags en consecuencia

Anda mungkin juga menyukai