Está en la página 1de 34

Titulo:

PRACTICA #00; COMPILACION EN


CMD LENGUAJE ESAMBLADOR

Alumno:
TLLEZ PONCE JUAN DANIEL

Materia:
INFORMATICA BASICA

Profesor:
M. en ING. JORGE RAMOS GARCIA



Fecha entrega:
Martes 24 de septiembre del 2013





OBJETIVO (PRACTICA):
EN ESTA PRACTICA DESARROLLAREMOS EL USO y EL PROCEDIMIENTO
DEL ENSAMBLADOR TASM PARA EL MICROPROCESADOR 8086 Y SUPERIORES.
Igualmente si utilizas el EMU8086 (descargar desde la web, es software con licencia) podrs
realizar esta prctica.


OBJETIVO (PERSONAL):
En lo personal, obtendre la capacidad de poder manejar un programa con lenguaje
ensamblador ,el cual , sera importante manejarlo desde la ventana CMD para saber los
primcipios y codigos base del lenjuage e ir paso por paso sabiendo las facilidades de la
porgramacion con lenguaje ensamblador hasta llegar a un punto donde el compilado, arranque y
ensamblado sea mas sencillo con codigos mas comodos o usando software apropiados y
comodos para el usario como es el EMU8086.











RECURSOS:
Para implementar los ejercicios de programacin en lenguaje ensamblador se utilizarn las
siguientes herramientas de software:

Editor: EDIT / NE / o cualquier otro que genere archivos ASCII.
Ensamblador: TASM.EXE // Emu8086 // MASM
Enlazador: TLINK.EXE
RTM.EXE para cierta versin de Tasm

Por otro lado se utiliza cdigo para facilitar el desarrollo de nuestro programa dentro del CMD
como es en el caso de los cdigos siguientes:

CD o CD INFORMATICA:/> (Ubicacin del archivo)
tasm /L /zi hola.asm (Forma archivos .obj y .lst para ensamblar)
tlink /v /m /s /L hola (Forma archivos .map y .exe para ejecutar el programa)
dir (Para ver los archivos generados del Turbo Assembler y TLink)
COMPI LAR.BAT. (Junto con un cdigo, Reemplaza los dos primeros cdigos)




Y por ultimo se tiene el siguiente cdigo fuente Ensamblador el cual nos ayudara a hacer un
programa cualquiera siguiendo las normas que este lenguaje implica y el cdigo que debe tener:

1.- ESTRUCTURA COMPACTA DE UN PROGRAMA EN ENSAMBLADOR USANDO
TASM
.MODEL SMALL
.STACK
.DATA ; variables a inicializar


.CODE
_INICIO:

MOV AX,@DATA
MOV DS,AX
;--------------------------------------



;--------------------------------------
_SALIR:
MOV AH,4CH
INT 21H

END _INICIO


ii. RUTINA PARA ENVIAR A PANTALLA DE TEXTO UN MENSAJE

MOV DX, OFFSET mensaje (LEA DX, mensaje)
MOV AH, 09H
INT 21H

iii. Rutina para enviar a pantalla un solo caracter.
MOV DL, caracter
MOV AH,02H
INT 21H







TEORIA.
El Turbo Assembler (TASM), un paquete ensamblador principalmente destinado a la plataforma del IBM PC y sus
compatibles. Fue la oferta de Borland en el mercado de herramientas de programacin en lenguaje ensamblador para
la familia de los microprocesadores x86. Como se pudiera esperar, trabajaban bien con los compiladores de lenguaje
de alto nivel de Borland para los PC, como Turbo C y Turbo Pascal. Junto con el resto de suite de lenguajes de
programacin Turbo, Turbo Assembler ya no es mantenido.
El paquete Turbo Assembler vino junto con el enlazador Turbo Linker, y era interoperable con el depurador Turbo
Debugger. Para la compatibilidad con el ensamblador Microsoft Macro Assembler (MASM) de Microsoft, TASM
tambin poda ensamblar los archivos de cdigo fuente del MASM por medio de su modo MASM. Al igual que ste,
es un ensamblador de alto nivel
REFERENCIA: http://es.wikipedia.org/wiki/Turbo_Assembler

INVESTIGACION:
a) Que es un DEPURADOR / Debugger.? Y su funcionamiento:
Un depurador (en ingls, debugger), es un programa usado para probar ydepurar (eliminar los errores) de otros
programas (el programa "objetivo"). El cdigo a ser examinado puede alternativamente estar corriendo en un
simulador de conjunto de instrucciones (ISS), una tcnica que permite gran potencia en su capacidad de detenerse
cuando son encontradas condiciones especficas pero ser tpicamente algo ms lento que ejecutando el cdigo
directamente en el apropiado (o el mismo) procesador. Algunas depuradores ofrecen dos modos de operacin - la
simulacin parcial o completa, para limitar este impacto.
Si es un depurador de nivel de fuente o depurador simblico, comnmente ahora visto en entornos de desarrollo
integrados, cuando el programa "se estrella" o alcanza una condicin predefinida, la depuracin tpicamente muestra
la posicin en el cdigo original. Si es un depurador de bajo nivel o un depurador de lenguaje de mquina,
muestra la lnea en el fuente desensamblado(a menos que tambin tenga acceso en lnea al cdigo fuente original y
pueda exhibir la seccin apropiada del cdigo del ensambladoro del compilador). Un "estrellamiento" sucede
cuando el programa no puede continuar normalmente debido a un error de programacin. Por ejemplo, el programa
pudo haber intentado usar una instruccin no disponible en la versin actual del CPU o haber intentado tener acceso
a memoria protegida o no disponible.
REFERENCIA: http://es.wikipedia.org/wiki/Depurador

b) Que es un DESCOMPRESOR?
En ciencias de la computacin la compresin de datos es la reduccin del volumen de datos tratables para
representar una determinada informacin empleando una menor cantidad de espacio. Al acto de compresin de datos
se denomina compresin, y al contrario descompresin.
El espacio que ocupa una informacin codificada (datos, seal digital, etc.) sin compresin es el cociente entre
la frecuencia de muestreo y la resolucin. Por tanto, cuantos ms bits se empleen mayor ser el tamao del archivo.
No obstante, la resolucin viene impuesta por el sistema digital con que se trabaja y no se puede alterar el nmero de
bits a voluntad; por ello, se utiliza la compresin, para transmitir la misma cantidad de informacin que ocupara una
gran resolucin en un nmero inferior de bits.
La compresin es un caso particular de la codificacin, cuya caracterstica principal es que el cdigo resultante tiene
menor tamao que el original.
REFERENCIA: http://es.wikipedia.org/wiki/Compresi%C3%B3n_de_datos

c) Que es un Desensamblador / Disassembler?
Un desensamblador es un programa de computadora que traduce el lenguaje de mquina a lenguaje ensamblador, la
operacin inversa de la que hace el ensamblador. Un desensamblador difiere de de un descompilador, en que ste
apunta a un lenguaje de alto nivel en vez de al lenguaje ensamblador. la salida de un desensamblador, el
desensamblado, es a menudo formateada para la legibilidad humana en vez de ser adecuada para la entrada a un
ensamblador, haciendo que ste sea principalmente una herramienta de ingeniera inversa.
El cdigo fuente en lenguaje ensamblador generalmente permite el uso de constantes y comentarios del
programador. stos son generalmente removidos, por el ensamblador, del cdigo ensamblado a cdigo de mquina.
De esta manera, un desensamblador operando sobre el cdigo de mquina, producira el desensamblado careciendo
de estas constantes y comentarios; la salida desensamblada se vuelve ms difcil de ser interpretada por un humano
que el cdigo fuente con comentarios original. Algunos desensambladores hacen uso de la informacin
de depuracin simblica presente en los archivos objeto tales como el ELF. En una sesin interactiva, el Interactive
Disassembler permite al usuario humano colocar smbolos mnemnicos para valores o regiones de cdigo: la
intuicin humana aplicada al proceso de desensamblado a menudo va en paralelo con la creatividad humana en el
proceso de la escritura del cdigo.
REFERENCIA: http://es.wikipedia.org/wiki/Desensamblador

d) Qu es el sistema numrico HEXADECIMAL?
El sistema numrico hexadecimal o sistema hexadecimal (a veces abreviado como Hex, no confundir con sistema
sexagesimal) es un sistema de numeracin que emplea 16 smbolos. Su uso actual est muy vinculado a
la informtica y ciencias de la computacin, pues los computadores suelen utilizar el byte u octeto como unidad
bsica de memoria; y, debido a que un byte representa 2
8
valores posibles, y esto puede representarse como

que, segn el teorema general de la numeracin posicional, equivale al nmero en base 16 , dos dgitos
hexadecimales corresponden exactamente permiten representar la misma lnea de enteros a un byte.
REFERENCIA: http://es.wikipedia.org/wiki/Sistema_hexadecimal
e) Por su extensin Cuntos tipos de archivos ejecutables hay (plataforma PC)?
En informtica, una extensin de archivo o extensin de fichero, es una cadena de caracteres anexada al
nombre de un archivo, usualmente precedida por un punto. Su funcin principal es diferenciar el contenido del
archivo de modo que el sistema operativo disponga el procedimiento necesario para ejecutarlo o interpretarlo,
sin embargo, la extensin es solamente parte del nombre del archivo y no representa ningn tipo de obligacin
respecto a su contenido.
Un mismo nombre bsico puede, por la extensin, contener archivos de distinto propsito. Como en este
ejemplo de DOS:
APLICACIN.BAS = Archivo Fuente escrito en lenguaje BASIC
APLICACIN.OBJ = Archivo objeto (necesario para su compilacin)
APLICACIN.EXE = Programa Ejecutable
ARCHIVO.TXT = Archivo de texto ASCII "texto plano"
ARCHIVO.RTF = Archivo de texto con formato
ARCHIVO.DOC = Archivo de texto con formato de Microsoft Word
ARCHIVO.VBS = Archivo fuente escrito en lenguaje Visual Basic.

f) Qu es un archivo Fuente y un archivo Objeto?
*El cdigo fuente de un programa informtico (o software) es un conjunto de lneas de texto que son las
instrucciones que debe seguir la computadora para ejecutar dicho programa. Para esta traduccin se usan los
llamados compiladores, ensambladores, intrpretes y otros sistemas de traduccin. El trmino cdigo fuente tambin
se usa para hacer referencia al cdigo fuente de otros elementos del software, como por ejemplo el cdigo fuente de
una pgina web que est escrito en el lenguaje de marcado HTML o en Javascript u otros lenguajes de programacin
web y que es posteriormente ejecutado por el navegador web para visualizar dicha pgina cuando es visitada.
*En programacin, se llama cdigo objeto al cdigo que resulta de la compilacin del cdigo fuente. Consiste
en lenguaje mquina o bytecode y se distribuye en varios archivos que corresponden a cada cdigo fuente
compilado. Para obtener un programa ejecutable se han de enlazar todos los archivos de cdigo objeto con un
programa llamado enlazador (linker).

REFERENCIA: http://es.wikipedia.org/wiki/C%C3%B3digo_fuente
REFERENCIA: http://es.wikipedia.org/wiki/Cdigo_objeto

1. Obtener los archivos que se usaran en el ensamblador 8086 para ensamblar un
archivo fuente .asm y realizar su ejecucin. todo es llevarlo a cabo en el modo de
sistema msdos.
Paso 1. Conctese a internet y mediante un buscador (ej. google) localice el sitio donde se
encuentren los archivos tasm.exe y tlink.exe en cualquiera de las versiones.
Paso 2. Una vez que tenga localizados los archivos descrguelos y grbelos en un carpeta de su
disco duro (ej. c:\informatica> ) o en su memoria usb. (ej. g:\informatica>). en caso de estar
comprimidos, haga una extraccin de esos archivos o todos segn sea el caso.
Paso 3. Abra el editor de texto (ej. block de notas de windows) y escriba el siguiente programa
en ensamblador. La estructura siguiente es la forma estndar.
Una vez escrito las instrucciones del siguiente programa, gurdelo en la carpeta donde se
localiza tambin los archivos tasm.exe y tlink.exe, el nombre del archivo ser utilizando solo de
1 a 8 caracteres de longitud y la extensin deber ser .asm. Por ejemplo gurdelo como:
hola.asm en su carpeta c:\informatica o g:\informatica
Paso 4. Abra una ventana al modo de sistema utilizando cualquiera de los dos mtodos
siguientes:
a) METODO.
dar click en inicio
dar click en todos los programas
dar click en accesorios
dar click en modo de sistema y aparecer la misma venta.


Paso 5. Estando en la ventana activa de dos, cambie a su carpeta de trabajo donde se tienen los
archivos tasm.exe, tkink.exe y hola.asm desde msdos como se indica
SI SU CARPETA ESTA EN OTRA UNI DAD, EJ EMPLO UNA USB DENOMI NADA H:
SIMPLEMENTE ESCRIBA LA LETRA DE LA UNIDAD
SEGUIDA DE DOS PUNTOS, EJEMPLO H:
LUEGO APARECERA EL PROMOPT
H:>-
LUEGO ESCRIBA: CD INFORMATICA
APARECERA H:\INFORMATICA>

Paso 6. Desde la ventana activa de msdos ensamblamos nuestro archivo hola.asmtecleamos:
tasm /l /zi hola.asm (turbo assembler) comenzar a ensamblar al programa desplegando:
turbo assembler version 4.1 copyright (c) 1988 by borland international
Use el comando dir para observar los archivos generados por el programa turbo assembler,
Tecleando: dir Estos son: hola.obj y hola.lst
Para convertir el programa objeto en un programa ejecutable usaremos el programa
TLINK.EXE, tecleando: tlink /v /m /s /L hola (TLink) empezar a convertir el programa
desplegando lo siguiente:
Turbo Link Version 2.0 Copyright (c) 1987, 1988 By Borland International
Use el comando DIR para observar los archivos generados por el programa TLink, tecleando: dir
Estos son: hola.map y hola.exe

Paso 7. Ya ensamblado y compilado el archivo hola.asm al archivo hola.exe, lo podemos
ejecutar escribiendo el nombre y enter.
c:\informatica> hola <enter>
Resultado de la ejecucin, mostrar en pantalla un mensaje hola mundo, !!!!!!!!!


2. En este punto, se llevara a cabo el mismo procedimiento desde el paso 3 del punto 1
anterior, abriendo nuevamente el editor y escribir el siguiente programa en
ensamblador. este programa estar escrito otro formato o estructura, se le denomina
estructura compacta.

As mismo, el programa ya escrito se guardara con el nombre de archivo hello.asm y se
ensamblara para su ejecucin- pruebe su resultado.


3. Utilizando el archivo hola.asm, nuevamente leerlo desde el editor de texto y realizar
lo siguiente:

Modifique la lnea 23 para que en lugar de tener la instruccin: mov DS,AX
se tenga un error de sintaxis: mob DS,AX
Grabe el programa y salga del editor.
Trate de ensamblar el programa, repitiendo los pasos de ensamblado como en el punto 1. El
ensamblador desplegar el siguiente mensaje de error:


4. A continuacin se presenta un archivo de procesamiento por lotes (batch) que permite
automatizar el proceso de ensamblar (tasm.exe) y enlazar (tlink.exe) un programa en
ensamblador. Utiliza el editor de texto para crearlo y grbelo en su disco y carpeta de
trabajo (c:\informatica>), con el nombre compilar.bat.

------------------------------ ESCRIBA Y GRABE LO SIGUIENTE
Rem Este archivo de procesamiento por lotes ensambla y liga un
rem programa fuente usando el macroensamblador del 8086:
rem TURBO ASSEMBLER y el ligador TLINK de Borlant Int.
@echo off
rem Si no se incluyo el nombre del archivo

if $$%1 == $$ goto ERROR1
rem Si no existe el archivo
if not exist %1.asm goto ERROR2

rem llama al ensamblador
tasm /l /zi %1.asm
rem Si hubo un error al ensamblado

if errorlevel 1 goto FIN
rem Llama al ligador
tlink /v /m /s /l %1
goto FIN
:ERROR1
echo .
echo Uso: ASSM nomArch (omita la extension .asm)
echo .
goto FIN

:ERROR2
echo .
echo No existe el archivo %1.asm
echo .
:FIN

Con este archivo, usted ya no escribir por separado tasm o tlink, sino que solo escribira el
nombre compilar y el archivo a ensamblar y enlazar, como se muestra:
C:\INFORMATICA> COMPILAR HOLA
Despus de esto, se habrn generado los archivos: .lst, .map, .obj y .exe del archivo ensamblado.
Al utilizar esta forma no es necesario escribir la extensin .asm, tal como se muestra arriba ni la
extensin .bat en el nombre de compilar.

5. Ensamble, compile y ejecute el siguiente programa.

; MOSTRANDO UN MENU EN PANTALLA
; SOLO SE EXHIBEN LAS OPCIONES, NO SE REALIZAR NINGUNA
OPERACION
;----------------------------------------------------------------
.MODEL SMALL
.STACK
.DATA
CrLf db 10,13,10,13,'$'

menu db 10,13,' 1. ALTA '
db 10,13,' 2. BAJA '
db 10,13,' 3. MODIFICACION'
db 10,13,' 4. LISTADO '
db 10,13,' 5. IMPRIMIR '
db 10,13,' 6. SALIR '
db 10,13,' '
db 10,13,' Opcion?: $'

msg db 10,13,' -- MENU PRINCIPAL -- ',10,13,10,13,'$'
.CODE
_MENU:
;SEGMENTO DE DATOS
MOV AX,@DATA
MOV DS,AX
;-------------------------------------
;LIMPIAR PANTALLA
mov ah,00h
mov al,03h
int 10h

;MOSTRAR TITULO EN MSG
MOV DX,OFFSET MSG
MOV AH,09H
INT 21H

;MOSTRAR MENU
MOV DX,OFFSET MENU
MOV AH,09H
INT 21H

;LEER TECLADO
MOV AH,01H
INT 21H

;-------------------------------------
_SALIR_DOS:
MOV AH,4CH
INT 21H
END _MENU
6. Disear un programa en ensamblador utilizando la estructura compacta (como el
programa visto en punto 2) que muestre en pantalla todo el texto que se indica a
continuacin.
;-------------------------------------------------------------------------------------------
1. Arqumedes (cientfico griego, alumno de Euclides, 287-212 a.C.):
"Dadme un punto de apoyoy levantar el Mundo"
2. Aristteles de Estagira (filsofo griego, discpulo de Platn y preceptor de
Alejandro Magno, 384-322 a.C.): "Saber es acordarse"
3. Aristteles de Estagira (filsofo griego, discpulo de Platn y preceptor de
Alejandro Magno, 384-322 a.C.): " Lo que est en nuestro poder hacer,
tambin est en nuestro no poder hacerlo"
4. Aristteles de Estagira (filsofo griego, discpulo de Platn y preceptor de
Alejandro Magno, 384-322 a.C.): "Todo lo que hacemos est puesto con el
ojo en otra cosa"
5. Antstenes de Atenas (filsofo griego, discpulo de Gorgias y Scrates,
fundador de la escuela cnica, 455-360 a.C.): "Consulta el ojo de tu
enemigo, porque es el primero que ve tus defectos"
6. Albert Einstein (fsico alemn, nacionalizado suizo y luego
estadounidense, 1879-1955): "No se cmo sera la III Guerra Mundial,
pero la cuarta sera con piedras"
7. Albert Einstein (fsico alemn, nacionalizado suizo y luego
estadounidense, 1879-1955): "Si tu intencin es describir la verdad, hazlo
con sencillez y la elegancia djasela al sastre"
8. Albert Einstein (fsico alemn, nacionalizado suizo y luego
estadounidense, 1879-1955): "Dios no juega a los dados" (Ver cita de
Bohr).
9. Albert Einstein (fsico alemn, nacionalizado suizo y luego
estadounidense, 1879-1955): "la imaginacion es ms importante que el
conocimiento."
10. Thomas Alva Edison (inventor estadounidense, 1847-1931): "No
sabemos ni un cienmilmillonsimo de nada"
;----------------------------------------------------------------------------------------------

7. Ejecutar el siguiente programa:
;------------------------------------
; fecha:
; Materia: Informatica Basica
; Universidad de Guanajuato
; ------------------------------------
Title caracteres_en_pantalla
.model small
.Stack
.data

linea1 db 10,13,' ********************************** $'
linea2 db 10,13,' ** ** $'
linea3 db 10,13,' ** informatica ** $'
linea4 db 10,13,' ** ** $'
linea5 db 10,13,' ********************************** $'

.code
programa_caracteres:

mov ax,@data
mov ds,ax

lea dx,linea1
mov ah,09h
int 21h

lea dx,linea2
mov ah,09h
int 21h

lea dx,linea3
mov ah,09h
int 21h

lea dx,linea4
mov ah,09h
int 21h

lea dx,linea5
mov ah,09h
int 21h
d_o_s:

mov ah,4ch
int 21h

end programa_caracteres
8. EMU8086. (tambin puede desarrollar los puntos anteriores en este emulador)

Una vez instalado se inicia ejecutando el archivo EMU886.exe, que se encuentra en la carpeta
del mismo nombre.
a) Seleccionamos en NEW

b) Seleccionar en EXE

c) Iniciar la escritura del programa en ensamblador para generar el cdigo fuente.

Para empezar a compilar le damos clic al botn emulate.

Si nuestro programa esta correcto nos se abre la pantalla del emulator y el cdigo original





La pantalla del lado izquierdo muestra el cdigo del programa que estamos compilando y la
siguiente pantalla es del emulador.

d) Para ejecutar en RUN



1. Obtener los archivos que se usaran en el ensamblador 8086 para ensamblar un
archivo fuente .asm y realizar su ejecucin. todo es llevarlo a cabo en el modo de
sistema msdos.
CAPTURA DE PANTALLA:


CODIGO:
;
; HOLA.ASM
;
; PROGRAMA CLASICO DE EJEMPLO EN ENSAMBLADOR. DESPLIEGA MENSAJE EN PANTALLA

PILA SEGMENT STACK
DW 64 DUP(?)
PILA ENDS


DATA SEGMENT
SALUDO DB 'HOLA MUNDO, !!!!!!!!! ',10,13,'$' ; MENSAJE EN CADENA
SALUDO
DATA ENDS


CODE SEGMENT
ASSUME CS:CODE, DS:DATA, SS:PILA


INICIO:
MOV AX,DATA
MOV DS,AX
MOV DX,OFFSET SALUDO ;ENVIA EL MENSAJE A PANTALLA
MOV AH,09H ;SERVICIO PARA ENVIAR MENSAJE
INT 21H ;INTERRUPCION DOS
MOV AH,4CH ;SALIR A MODO DE SISTEMA
INT 21H
CODE ENDS

END INICIO























2. En este punto, se llevara a cabo el mismo procedimiento desde el paso 3 del punto 1
anterior, abriendo nuevamente el editor y escribir el siguiente programa en
ensamblador. este programa estar escrito otro formato o estructura, se le
denomina estructura compacta.

CAPTURA DE PANTALLA:



CODIGO:
;-----------------------------------------------------------------
;HELLO.ASM Presenta el mensaje "Hello World"
;

.MODEL SMALL

.STACK 100h

.DATA
HelloMessage DB ' ...... Hello , world ... ', 13, 10,'$'
;$ es el terminador
;para la funcin 9
;de la INT 21h

.CODE

principal:

mov ax,@data ; punto de inicio del programa
mov ds,ax ; hace apuntar DS hacia el segmento de datos
mov ah,9 ; funcin de impresin de string de MS-DOS
mov dx, OFFSET HelloMessage ;carga DX con el offset de "Hello,
;world" dentro de DATA
int 21h ; llama a la INT 21h para imprimir el mensaje
mov ah, 4ch ; 4Ch es la funcin del DOS para terminar la
; ejecucin de un programa
int 21h ; finaliza la ejecucin, retorna al prompt del MS-DOS

END principal ; directiva que le notifica al TASM el fin del cdigo
; ----------------------------------------------------------------


3. Utilizando el archivo hola.asm, nuevamente leerlo desde el editor de texto:

CODIGO:
;
; HOLA.ASM
;
; PROGRAMA CLASICO DE EJEMPLO EN ENSAMBLADOR. DESPLIEGA MENSAJE EN PANTALLA

PILA SEGMENT STACK
DW 64 DUP(?)
PILA ENDS


DATA SEGMENT
SALUDO DB 'HOLA MUNDO, !!!!!!!!! ',10,13,'$' ; MENSAJE EN CADENA
SALUDO
DATA ENDS


CODE SEGMENT
ASSUME CS:CODE, DS:DATA, SS:PILA


INICIO:
MOV AX,DATA
MOB DS,AX
MOV DX,OFFSET SALUDO ;ENVIA EL MENSAJE A PANTALLA
MOV AH,09H ;SERVICIO PARA ENVIAR MENSAJE
INT 21H ;INTERRUPCION DOS
MOV AH,4CH ;SALIR A MODO DE SISTEMA
INT 21H
CODE ENDS

END INICIO


;----------------------------------------------------------------

CAPTURA DE PANTALLA:



4. A continuacin se presenta un archivo de procesamiento por lotes (batch) que
permite automatizar el proceso de ensamblar (tasm.exe) y enlazar (tlink.exe) un
programa en ensamblador. Utiliza el editor de texto para crearlo y grbelo en su
disco y carpeta de trabajo (c:\informatica>), con el nombre compilar.bat.
CODIGO:
;
; HOLA.ASM
;
; PROGRAMA CLASICO DE EJEMPLO EN ENSAMBLADOR. DESPLIEGA MENSAJE EN PANTALLA

PILA SEGMENT STACK
DW 64 DUP(?)
PILA ENDS


DATA SEGMENT
SALUDO DB 'HOLA MUNDO, !!!!!!!!! ',10,13,'$' ; MENSAJE EN CADENA
SALUDO
DATA ENDS


CODE SEGMENT
ASSUME CS:CODE, DS:DATA, SS:PILA


INICIO:
MOV AX,DATA
MOV DS,AX
MOV DX,OFFSET SALUDO ;ENVIA EL MENSAJE A PANTALLA
MOV AH,09H ;SERVICIO PARA ENVIAR MENSAJE
INT 21H ;INTERRUPCION DOS
MOV AH,4CH ;SALIR A MODO DE SISTEMA
INT 21H
CODE ENDS

END INICIO


;

CAPTURA DE PANTALLA:









5. Ensamble, compile y ejecute el siguiente programa.
CODIGO:
; MOSTRANDO UN MENU EN PANTALLA
; SOLO SE EXHIBEN LAS OPCIONES, NO SE REALIZAR NINGUNA OPERACION
;----------------------------------------------------------------

.MODEL SMALL
.STACK
.DATA
CrLf db 10,13,10,13,'$'

menu db 10,13,' 1. ALTA '
db 10,13,' 2. BAJA '
db 10,13,' 3. MODIFICACION'
db 10,13,' 4. LISTADO '
db 10,13,' 5. IMPRIMIR '
db 10,13,' 6. SALIR '
db 10,13,' '
db 10,13,' Opcion?: $'

msg db 10,13,' -- MENU PRINCIPAL -- ',10,13,10,13,'$'


.CODE
_MENU:
;SEGMENTO DE DATOS
MOV AX,@DATA
MOV DS,AX

;-------------------------------------
;LIMPIAR PANTALLA
mov ah,00h
mov al,03h
int 10h

;MOSTRAR TITULO EN MSG
MOV DX,OFFSET MSG
MOV AH,09H
INT 21H

;MOSTRAR MENU
MOV DX,OFFSET MENU
MOV AH,09H
INT 21H

;LEER TECLADO
MOV AH,01H
INT 21H

;-------------------------------------
_SALIR_DOS:
MOV AH,4CH
INT 21H
END _MENU
CAPTURA DE PANTALLA:













6. Disear un programa en ensamblador utilizando la estructura compacta (como el
programa visto en punto 2) que muestre en pantalla todo el texto que se indica a
continuacin.
CODIGO:
;
; HOLA.ASM
;
; PROGRAMA CLASICO DE EJEMPLO EN ENSAMBLADOR. DESPLIEGA MENSAJE EN PANTALLA

PILA SEGMENT STACK
DW 64 DUP(?)
PILA ENDS


DATA SEGMENT
UNO DB ' 1.-Arqumedes (cientfico griego, alumno de Euclides, 287-212
a.C.): "Dadme un punto de apoyo y levantar el Mundo" ',10,13,'$'

DOS DB ' 2.-Aristteles de Estagira (filsofo griego,
discpulo de Platn y preceptor de Alejandro Magno, 384-322 a.C.): "Saber es
acordarse" ',10,13,'$' ;
TRES DB ' 3.-Aristteles de Estagira (filsofo griego,
discpulo de Platn y preceptor de Alejandro Magno, 384-322 a.C.): " Lo que
est en nuestro poder hacer, tambin est en nuestro no poder hacerlo"
',10,13,'$' ;
CUATRO DB ' 4.-Aristteles de Estagira (filsofo griego,
discpulo de Platn y preceptor de Alejandro Magno, 384-322 a.C.): "Todo lo
que hacemos est puesto con el ojo en otra cosa" ',10,13,'$' ;
CINCO DB ' 5.-Antstenes de Atenas (filsofo
griego, discpulo de Gorgias y Scrates, fundador de la escuela cnica, 455-
360 a.C.): "Consulta el ojo de tu enemigo, porque es el primero que ve tus
defectos" ',10,13,'$' ;
SEIS DB ' 6.-Albert Einstein (fsico alemn,
nacionalizado suizo y luego estadounidense, 1879-1955): "No se cmo sera la
III Guerra Mundial, pero la cuarta sera con piedras" ',10,13,'$' ;
SIETE DB ' 7.-Albert Einstein (fsico alemn,
nacionalizado suizo y luego estadounidense, 1879-1955): "Si tu intencin es
describir la verdad, hazlo con sencillez y la elegancia djasela al sastre"
',10,13,'$' ;
OCHO DB ' 8.- Albert Einstein (fsico alemn,
nacionalizado suizo y luego estadounidense, 1879-1955): "Dios no juega a los
dados" (Ver cita de Bohr). ',10,13,'$' ;
NUEVE DB ' 9.-Albert Einstein (fsico alemn,
nacionalizado suizo y luego estadounidense, 1879-1955): "la imaginacion es
ms importante que el conocimiento." ',10,13,'$' ;
DIEZ DB ' 10.-Thomas Alva Edison (inventor
estadounidense, 1847-1931): "No sabemos ni un cienmilmillonsimo de nada"
',10,13,'$' ;


DATA ENDS


CODE SEGMENT
ASSUME CS:CODE, DS:DATA, SS:PILA


INICIO:
MOV AX,DATA
MOV DS,AX

MOV DX,OFFSET UNO ;ENVIA EL MENSAJE A PANTALLA
MOV AH,09H ;SERVICIO PARA ENVIAR MENSAJE
INT 21H

MOV DX,OFFSET DOS ;
INT 21H
MOV AH,09H

MOV DX,OFFSET TRES ;
INT 21H
MOV AH,09H

MOV DX,OFFSET CUATRO ;
INT 21H
MOV AH,09H

MOV DX,OFFSET CINCO ;
INT 21H
MOV AH,09H
MOV DX,OFFSET SEIS ;
INT 21H
MOV AH,09H
MOV DX,OFFSET SIETE ;
INT 21H
MOV AH,09H
MOV DX,OFFSET OCHO ;
INT 21H
MOV AH,09H
MOV DX,OFFSET NUEVE ;
INT 21H
MOV AH,09H
MOV DX,OFFSET DIEZ ;
INT 21H

MOV AH,09H
;INTERRUPCION DOS
MOV AH,4CH ;SALIR A MODO DE SISTEMA
INT 21H
CODE ENDS

END INICIO



CAPTURA DE PANTALLA:




7. Ejecutar el siguiente programa:
CODIGO:
;------------------------------------
; fecha:
; Materia: Informatica Basica
; Universidad de Guanajuato
; ------------------------------------
Title caracteres_en_pantalla
.model small
.Stack
.data

linea1 db 10,13,'
********************************** $'
linea2 db 10,13,' ** ** $'
linea3 db 10,13,' ** informatica ** $'
linea4 db 10,13,' ** ** $'
linea5 db 10,13,' ********************************** $'

.code
programa_caracteres:

mov ax,@data
mov ds,ax

lea dx,linea1
mov ah,09h
int 21h

lea dx,linea2
mov ah,09h
int 21h

lea dx,linea3
mov ah,09h
int 21h

lea dx,linea4
mov ah,09h
int 21h

lea dx,linea5
mov ah,09h
int 21h
d_o_s:

mov ah,4ch
int 21h

end programa_caracteres


CAPTURA DE PANTALLA:
























8. EMU8086. (tambin puede desarrollar los puntos anteriores en este emulador)

PROGRAMA #01




PROGRAMA #02


PROGRAMA #03



PROGRAMA #04 (HOLA MUNDO CON COMPILADOR FACIL):


PROGRAMA #05


PROGRAMA #06


PROGRAMA #07

También podría gustarte