galoisalon
Usuario (Bolivia)
Hola galoisalon saludandolos, representante del pequeño grupo de programadores de...bueno de muchas cosas 'Golysaur', escribo esto para que entiendan que el contenido de la página que cito es MIO. Bueno sigamos. Saltate esto si no te gusta el bla bla. La programación de 16 bits no es compatible en el entorno de las últimas arquitecturas de microprocesadores, esto debido a que la retro-compatibilidad era un enorme problema, por esta causa se utilizan emuladores de máquinas DOS, para los que no lo saben son muy antiguas, afortunadamente encontramos disponible el macroassembler, recomiendo y también uso la versión masm615, esta versión la encuentras fácilmente en internet o en páginas oficiales en formato zip o rar. Bien masm615 nos permite crear el ejecutable luego un para de click hacen la magia y el programa corre sin requerir de un emulador. HE PROBADO ESTO EN WINDOWS 7 32 BITS EN WINDOWS 7 64 BITS ES SEGURO QUE NO FUNCIONA, tal vez encuentre una solución, a ello tal vez. Puedes seguir leyendo a partir de aquí sin riesgo de morir de aburrimiento. Detallo el programa a continuación, y la dirección de la página donde he publicado el tutorial completo de como ensamblar y linkear el programa .asm, es decir el programa en ensamblador. El programa: ;************************************************* ;* --------------------------------------------- * ;* - GRUPO GOLYSAUR - * ;* --------------------------------------------- * ;************************************************* ;ESTE PROGRAMA REALIZA LA SUMA DE DOS NÚMEROS DE ;UN SOLO DÍGITO ;INGRESADOS POR TECLADO. ;PARA ESTABLECER LA PARTE DE PROGRAMA A EJECUTAR ;CONOCIDO TAMBIEN COMO "entry point" ;MANTENDREMOS EL FAMILIAR "main" PERO SE LE PUEDE ;ASIGNAR CUALQUIER OTRO NOMBRE VÁLIDO. .model small .stack 16 .data TEXT1 DB 'SUMA DE DOS NUMEROS','$' ;DESPLIGUES EN PANTALLA TEXT2 DB 'INGRESE PRIMER NUMERO ','$' ; TEXT3 DB 'INGRESE SEGUNDO NUMERO ','$' ; TEXT4 DB 'SUMA DE LOS NUMEROS ','$' ; dato1 DB '0','$' ;ALMACENAMIENTO DE DATOS dato2 DB '0','$' ; suma1 DB '0','$' ;ALMACENAMIENTO DE SUMA suma2 DB '0','$' ; .CODE main proc far mov ax,@data ;||asigna la dirección de los datos mov ds,ax ;||a ds (segmento de datos) mov ah,09 ;**despliegue mov dx,offset TEXT1 ;**en pantalla int 21h ;** mov ah,02h ;||salto de línea mov dl,10 ;|| int 21h ;|| mov ah,09 ;**despliegue en pantalla mov dx,offset TEXT2 ;**petición de int 21h ;**dato 1 mov ah,01 ;**almacenamiento int 21h ;**de entrada mov dato1,al ;** mov ah,02h ;||salto de línea mov dl,10 ;|| int 21h ;|| mov ah,09 ;**despliegue en pantalla mov dx,offset TEXT3 ;**petición de int 21h ;**dato 2 mov ah,01 ;**almacenamiento int 21h ;**de entrada mov dato2,al ;** mov bl,dato2 ;||Recuperacion de datos and bl,0fh ;||y acondicionamiento de datos mov al,dato1 ;|| and al,0fh ;|| add al,bl ;**suma de los datos daa ;||correción mov suma1,al ;**acondicionamiento de datos mov suma2,al ;**para su despliegue and suma1,0fh ;**en pantalla mov cl,4 ;** shr suma2,cl ;** or suma1,30h ;** or suma2,30h ;** mov ah,02h ;||salto de línea mov dl,10 ;|| int 21h ;|| mov ah,09 ;**despliegue en pantalla mov dx,offset TEXT4 ;**aviso de int 21h ;**RESULTADO DE LA SUMA mov ah,09 ;**despliegue mov dx,offset suma2 ;**en pantalla int 21h ;**suma (dígito más significativo) mov ah,09 ;**despliegue mov dx,offset suma1 ;**en pantalla int 21h ;**suma (dígito menos significativo) mov ah,4ch ;finalizar programa int 21h ; main endp end main Cualquier problema pondré mayores detalles o mostraré donde encontrar el masm615. La dirección Direccion de la página que contiene el tutorial: http://golysaur.260mb.net/ No olviden el programa debe ser guardado en la carpeta Masm615 como ejemplo.asm. Bueno sigan el tutorial. No olviden el programa también es MIO. Lo que va luego de la coma no interesa es solo para dar información al programador, es obvio pero nadie sabe. Pasen buen día...