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