You are on page 1of 7

Instrucciones simblicas

Una instruccin
en ensamblador consta de cdigos de
operacin, operaciones, operandos y
Comentarios.
La etiqueta
, es el smbolo que aadido a una
instruccin permite que se pueda
referenciar
Simblicamente en el programa.
El cdigo de operacin
, es generalmente un smbolo, aunque
en algunos sistemas es un
entero octal, hexadecimal o decimal que
indica la operacin que se quiere
realizar.
El campo operando
,
es un campo de direccin de datos que
puede estar dividido en varios
subcampos de acuerdo con la
constitucin interna de la computadora
correspondiente.
El comentario
, que no es obligatorio, no es procesado
por el ensamblador. Nos dice que
las instrucci
ones pueden ser de formato fijo, formato
libre y formato mixto.
ORG
Esta pseudo instruccin que proporcione
informacin acerca de alguna parte
de la traduccin.
LDA SUB
Instruccin que permite cargar el
sustraendo a AC. El nomb
re simblico de la
operacin es LDA.
SUB
Indica que es un smbolo de direccin.
CMA
Instruccin de maquina que representa
un complemento.
INC
Instruccin que indica un incremento a
AC.
ADD MIN
Permite sumar el minuendo a AC.
MIN
El valor binario de la parte de direccin
debe obtenerse un smbolo de
direccin MIN.
STA DIF
Permite almacenar la diferencia.
DIF
El valor binario de la parte de direccin
debe obtenerse un smbolo de
direccin DIF.
HLT
Instruccin que nos permite detener la
computadora.
DEC N
Este es un nmero decimal con signo N
para convertirse en binario.
Dos lneas del programa simblico

especifican operando decimales con la


pseudo
instruccin DEC.
HEX 0
La diferencia se encuent
ra almacenada aqu.
END
Fin del programa simblico y nos indica
que ya no hay lneas para traducir.
TABLA DE INSTRUCCIONES
Smbolo
Cdigo hexadecimal
Descripcin
AND
0u8
Aplicar AND M a AC
ADD
1o9
Sumar M a AC, acarrear E
LDA
2oA
Cargar AC desde M
STA
3oB
Almacenar AC en M
BUN
4oC
Brincar en forma condicional a M
BSA
5oD
Salvar la direccin de retorno en M
ISZ
6oE
Incrementar M y saltar si hay un cero
CLA
7800
Borrar a AC
CLE
7400
Borrar E
CMA
7200
Complementar a AC
CME
7100
Complementar E
CIR
7080
Circular a la derecha E y AC
CIL
7040
Circular a la izquierda E y AC
INC
7020
Incrementar AC
SPA
7010
Brincar si AC es positivo
SNA
7008
Brincar si AC es negativo
SZA
7004
Brincar si AC es cero
SZE

7002
Brincar si E es cero
HLT
7
001
Introducir y borrar bandera
OU
F400
Sacar informacin y borrar bandera
SKI
F200
Saltar si la bandera de entrada esta
activada
SKO
F100
Saltar si la bandeja de salida esta
activada
ION
F080
Habilitar la interrupcin
IOF
F040
Deshabilitar interrupcin

demores

SEGMENT
ASSUME CS:demores, DS:demores
ORG 100h

inicio:
JMP main
controla_int08 PROC
PUSHF
CALL CS:ant_int08 ; llamar al gestor
normal de INT 8
STI
CMP CS:in10,0
JNE fin_int08
; estamos dentro de
INT 10h
;
; Colocar aqu el proceso a ejecutar
18,2 veces/seg.
; que puede invocar funciones de INT
10h
fin_int08:
IRET
controla_int08 ENDP
controla_int10 PROC
INC CS:in10
; indicar entrada en
INT 10h
PUSHF
CALL CS:ant_int10
DEC CS:in10
; fin de la INT 10h
IRET
controla_int10 ENDP
in10
DB 0
; mayor de 0 si hay
INT 10h
ant_int08
LABEL DWORD
ant_int08_off DW ?
ant_int08_seg DW ?

ant_int10
LABEL DWORD
ant_int10_off DW ?
ant_int10_seg DW ?
; Dejar residente hasta aqu.
main:

PUSH ES
MOV AX,3508h
INT 21h
; obtener vector de

INT 8
MOV ant_int08_seg,ES
MOV ant_int08_off,BX
MOV AX,3510h
INT 21h
; obtener vector de
INT 10h
MOV ant_int10_seg,ES
MOV ant_int10_off,BX
POP ES
LEA DX,controla_int08
MOV AX,2508h
INT 21h
; nueva rutina de INT
8
LEA DX,controla_int10
MOV AX,2510h
INT 21h
; nueva rutina de INT
10h
PUSH ES
MOV ES,DS:[2Ch]

; direccin del

entorno
MOV AH,49h
INT 21h

; liberar espacio de

entorno
POP ES
LEA DX,main

; fin del cdigo

ADD DX,15

; redondeo a

MOV CL,4
SHR DX,CL
MOV AX,3100h

; bytes -> prrafos


; terminar

residente
prrafo

residente
INT 21h
demores

ENDS
END inicio

; HOLA.ASM

Macro Ensamblador IBM

; Programa clasico de ejemplo. Despliega una


leyenda en pantalla.

Macro Ensamblador de Turbo


Editassm

STACK SEGMENT STACK ; Segmento de pila

Programa Descripcin

DW 64 DUP (?) ; Define espacio en la pila

MASM.EXE Microsoft Macro Assembler

STACK ENDS

LINK.EXE Microsoft 8086 object linker


SYMDEB.EXE Microsoft Symbolic

DATA SEGMENT ; Segmento de datos

Debuger Utility

SALUDO DB "Hola mundo!!",13,10,"$" ; Cadena

MAPSYM.EXE Microsoft Symbol File


Generator

DATA ENDS
CODE SEGMENT ; Segmento de Codigo
ASSUME CS:CODE, DS:DATA, SS:STACK
INICIO: ; Punto de entrada al programa
MOV AX,DATA ; Pone direccion en AX
MOV DS,AX ; Pone la direccion en los registros
MOV DX,OFFSET SALUDO ; Obtiene direccion
del mensaje
MOV AH,09H ; Funcion: Visualizar cadena
INT 21H ; Servicio: Funciones alto nivel DOS
MOV AH,4CH ; Funcion: Terminar
INT 21H
CODE ENDS
END.
PUBLIC nombre,,, que hace la variable, etiqueta
o smbolo absoluto disponible para todos los
programas.
EXTRN nombre:tipo,,, que especifica una
variable, etiqueta o smbolo externos identificados
por nombre y tipo (que puede ser BYTE, WORD,
DWORD, QWORD, TBYTE, NEAR, FAR, o ABS,
ste ltimo para nmeros absolutos).
El siguiente ejemplo ilustra el uso de las
directivas. El primer listado corresponde al
mdulo principal, mientras que el segundo al
mdulo que contiene una rutina. Ambos mdulos
son archivos que se editan por separado, se
ensamblan por separado, pero se ligan juntos.
MODULO PRINCIPAL: MAIN.ASM
NAME main
PUBLIC exit

CREF.EXE Microsoft Cross-Reference


Utility
LIB.EXE Microsoft Library Manager
MAKE.EXE Microsoft Program
Maintenance Utility
EXEPACK.EXE Microsoft EXE File
Compression Utility
EXEMOD.EXE Microsoft EXE File
Header Utility
COUNT.ASM Sample source file for
SYMDEB session
README.DOC Updated information
obtained after the manual

EXTRN print:near
stack SEGMENT word stack 'STACK'
DW 64 DUP(?)
stack ENDS
data SEGMENT word public 'DATA'
data ENDS
code SEGMENT byte public 'CODE'
ASSUME cs:code, ds:data
start:
mov ax,data ; carga localizacion del segmento
mov ds,ax ; en el registro DS
jmp print ; va a PRINT en el otro modulo
exit:
mov ah,4ch
int 21h
code ENDS
END start
SUBMODULO: TASK.ASM
NAME task
PUBLIC print
EXTRN exit:near
data SEGMENT word public 'DATA'
entrada DB "Entrando a un
submodulo....",13,10,"$"
salida DB ".......saliendo del
submodulo.",01,07,13,10,"$"
data ENDS

code SEGMENT byte public 'CODE'


ASSUME cs:code, ds:data
print:
mov ah,06h ; Funcion para borrar pantalla
mov al,0 ; todas las lineas
mov cx,0 ; de 0,0
mov dh,24d
mov dl,79d
mov bh,0 ; atributo en lineas vacias
int 10h ; Servicio de e/s video
mov dx, OFFSET entrada
mov ah,09h
int 21h
mov dx, OFFSET salida
int 21h
jmp exit ; Regresa al otro modulo

You might also like