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
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).
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
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)