Este ya es el primer ejemplo complejo que visualiza lo que he conseguido hasta ahora.
Aunque simple, sería muy complicado editar y seguir un programa tan complejo directamente en ensamblador.
Este programa es solo un ejemplo inicial de la operatividad de las funciones de STDIO.
Este programa toma del teclado un texto y lo imprime. Luego toma un número, interpretándolo como decimal, y lo imprime posteriormente en decimal, binario, octal, hexadecimal, binario y en base 5.
Como se puede ver el programa ya tiene los mensajes por pantalla y los posicionamientos tanto de mensajes como de entradas y salidas de textos y variables.
Con este ejemplo se puede ver igualmente, como se definirán las variables, apoyándonos en las definiciones hechas en MAIN.MAC.
String, define una cadena y integer un entero. Para la salida de textos simples usamos simplemente una lista de bytes, con final en 0 que serán usados con puts.
Dado que es un ejecutable la data la colocamos al comienzo, pues si no nos puede dar un error. En el caso de que fuese com la data la colocamos al final. Igualmente en _end damos el nombre de la rutina que debe ejecutarse.
¡Esto ya es My Assembler!
Recuerdo que seguimos compilando por debajo de MASM, pero a partir de ahora haremos maravillas....
EJEMPLO_1.ASM
; Copyright (C) 2013 José Ángel Moneo Fernández ; This program is free software: you can redistribute it and/or modify ; it under the terms of the GNU General Public License as published by ; the Free Software Foundation, either version 3 of the License, or ; (at your option) any later version. ; This program is distributed in the hope that it will be useful, ; but WITHOUT ANY WARRANTY; without even the implied warranty of ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ; GNU General Public License for more details. ; You should have received a copy of the GNU General Public License ; along with this program. If not, see <http://www.gnu.org/licenses/>.
include main.mac
include stdio.mac
_modelo exe
_stack 512
_data
string cadena,30
integer valor 25
msgtexto db "Introduce un texto",0
msgvalor db "Introduce un numero decimal",0
_code
p proc far
main
clrscr
gotoxy 10,9
puts msgtexto
gotoxy 10,10
scanf cadena
gotoxy 20,10
printf cadena
gotoxy 10,11
puts msgvalor
gotoxy 10,12
scanf valor
gotoxy 20,12
printf valor
getch al
gotoxy 20,13
printf valor,@b
getch al
gotoxy 20,14
printf valor,@o
getch al
gotoxy 20,15
printf valor,@h
getch al
gotoxy 20,16
printf valor,@d
getch al
gotoxy 20,17
printf valor,5
ret
endp
_end ejemplo1
No hay comentarios:
Publicar un comentario
Si tienes algún comentario, duda o sugerencia, o si quieres aportar algún código creado a partir de las librerías expuestas aquí, por favor, indícamelo.