ayuda con un pequeño codigo en ensamblador

149 views
Skip to first unread message

Azael Allan Malvaez Monterrubio

unread,
Nov 13, 2012, 10:49:09 AM11/13/12
to publice...@googlegroups.com
Hola que tal, aprovecho para enviar un saludo a toda la comunidad, se que no es un foro correpondiente a mi pregunta, pero eh visto que hay muchos colegas que tiene mucha experiencia y quien quite y puedan ayudarme, eh buscado e investigado pero hay ciertas cosas que no encuentro y no se lo que son o para que son, quisiera que me ayudaran explicandome a grandes rasgos para que es el codigo y una que otra sentencia ya que no las encuentro por ningun lado, espero que alguien pueda ayudarme, desde ya muchas gracias.
 

dades SEGMENT PARA PUBLIC 'data'
msg1 DB 
'Hola Mundo',13,l0,'$'
dades ENDS
codi SEGMENT PARA PUBLIC 
'code'
MAIN PROC FAR
ASSUME 
cs:codi,DS:dades,SS:pila,ES:dades
MOV AX,dades
MOV DS,AX
MOV ES,AX
MOV AH,09H
LEA DX,msg1
int 21H
MOV AX,4C00H
int 21h
MAIN ENDP
codi ENDS
pila SEGMENT PARA STACK 
'stack'
DB 
128 DUP(0)
pila ends
END MAIN

 

 


 
Lo del MOV, AX, DS, ES, AH, 21H ya los investigue y se para que son, pero de lo demas no se, espero puedan ayudarme un poco por favor.

Fox Learner

unread,
Nov 13, 2012, 4:31:00 PM11/13/12
to publice...@googlegroups.com
Y qué desea lograr con el código ?

En mi caso, nunca toqué el ensamblador.. Si acaso C, pero no me gusta.

He oído que C# a veces apoya para casos de bajo/mediano nivel.

Por eso mi pregunta..

Saludos!

Azael Allan Malvaez Monterrubio

unread,
Nov 13, 2012, 5:00:30 PM11/13/12
to publice...@googlegroups.com
Hola colega muchas gracias por tomarte el tiempo de contestarme, y no quiero efectuar nada, solo quisiera saber para que es el codigo y que alguien con mas experiencia pudiera explicarme en general que es lo que hace pues lo desconosco, de todos modos muchas gracias.
 

Date: Tue, 13 Nov 2012 13:31:00 -0800
From: thenewin...@gmail.com
To: publice...@googlegroups.com
Subject: [vfp] Re: ayuda con un pequeño codigo en ensamblador
--
 
 
 

Walter R. Ojeda Valiente

unread,
Nov 13, 2012, 6:00:52 PM11/13/12
to publice...@googlegroups.com
En los programas ensamblador siemrpe se usan los segmentos de código y de datos.

En el segmento "data" se declaran e inicializan las variables (o sea, los datos)

En el segmento "code" se escribe el código del programa

msg1 es el nombre de una variable, cuyo contenido será "Hola Mundo" en este ejemplo

el 13 es el equivalente a CHR(13) o sea presionar la tecla ENTER
el 10 es el equivalente a CHR(10) o sea la alimentación de línea o LINE FEED

el $ finaliza una cadena, es la forma de indicarle que allí termina.

MAIN es el nombre de un procedimiento

PROC FAR significa que el código estará fuera del límite normal de 64 kb

cs es el segmento de código
ds es el segmento de datos
ss es el segmento de pila
es es el segmento extra

128 DUP(0) coloca 128 números 0, uno a continuación del otro en la pila. Su efecto es que el tamaño de la pila será de 128 bytes.

MOV AX, dades       lo que hace es asignarle al registro AX el valor de dades
MOV DS, AX            lo que hace es asignarle al segmento DS el valor de AX

¿Por qué?

Porque no se puede hacer la asignación directa, escribir MOV DS, dades es un error, por eso al registro AX se lo utiliza como auxiliar.

La interrupción 21h es la "interrupción general" del procesador, la que hace más cosas.

Cuando quieres mostrar un mensaje en la pantalla debes hacer lo siguiente:
1. Colocar en el registro DX el texto que deseas mostrar
2. Colocar en AH (el sub-registro de AX, el byte superior de AX) el valor 09h
3. Ejecutar la interrupción 21h

Para terminar un programa normalmente (o sea, sin enviar un número de error al programa llamador) utilizas la función 4C00h

¿Qué hace tu programa?
1. Muestra en la pantalla el mensaje "Hola Mundo"
2. Finaliza su ejecución sin enviar un número de error (o sea, está diciendo que terminó ok)

Saludos.

Walter.

"Si puedes razonar con gente religiosa, no son gente religiosa". Dr. House




From: azael_...@hotmail.com
To: publice...@googlegroups.com
Subject: [vfp] ayuda con un pequeño codigo en ensamblador
Date: Tue, 13 Nov 2012 15:49:09 +0000
--
 
 
 

Walter R. Ojeda Valiente

unread,
Nov 13, 2012, 6:08:33 PM11/13/12
to publice...@googlegroups.com
Ensamblador es el lenguaje más rápido que existe, es tan rápido que muchas veces debes escribir un loop (o sea un ciclo equivalente a un FOR .... ENDFOR) para hacerlo más lento.

Su contra es que escribes muchísimo para hacer hasta las cosas más simples, y detectar y corregir errores es muy trabajoso.

Todo ese código que él envió en Visual FoxPro simplemente sería:
? "Hola Mundo"

Claro que con ensamblador tienes control total sobre todos y cada uno de los bytes y bits de tu computadora, por lo tanto puedes hacer lo que quieras, cualquier cosa que se te ocurra. Pero .... no lo lograrás rápido, necesitarás dedicarle muchísimo tiempo para aprenderlo bien, muchísimo más tiempo que el que necesitarías para ser un experto en Visual FoxPro.


Saludos.

Walter.

"Si puedes razonar con gente religiosa, no son gente religiosa". Dr. House



Date: Tue, 13 Nov 2012 13:31:00 -0800
From: thenewin...@gmail.com
To: publice...@googlegroups.com
Subject: [vfp] Re: ayuda con un pequeño codigo en ensamblador
--
 
 
 

Azael Allan Malvaez Monterrubio

unread,
Nov 13, 2012, 6:59:54 PM11/13/12
to publice...@googlegroups.com
Hola Walter muchisimas gracias por la ayuda y me queda un poco mas claro cosas que no comprendia del todo pues me la pase investigando y no encontraba mucho, pero con tu explicacion me queda mas claro, te agradesco en verdad y si me doy cuenta que es mucho mas facil en lenguajes de alto nivel como VFP y es mucho mas facil la realizacion de ciertas cosas, y si me gustaria aprender un poco mas de ensamblador para comprender un poco mas el comportamiento de los ordenadores, desde ya mil gracias y espero mas adelante si llego atorarme con algo puedas auxiliarme de favor.
 
Saludos
 

From: wr...@hotmail.com
To: publice...@googlegroups.com
Subject: RE: [vfp] Re: ayuda con un pequeño codigo en ensamblador
Date: Tue, 13 Nov 2012 23:08:33 +0000
--
 
 
 

Walter R. Ojeda Valiente

unread,
Nov 13, 2012, 7:07:43 PM11/13/12
to publice...@googlegroups.com
De nada.

Pero te adelanto algo: no ganarás dinero aprendiendo Assembler.

Puede servirte para saciar tu curiosidad, para hacer algunos programitas utilitarios y poco más que eso (salvo que te interese hacer un virus o algo así). Pero de todas maneras es mucho más fácil de hacer esas cosas en Lenguaje C.

Y tiempo para ayudarte con algo tan improductivo no tendré, pero si buscas seguro que encontrarás muchos foros sobre ese tema, supongo que la gran mayoría en inglés pero si quieres ser un buen profesional informático deberás leer bien el inglés, sí o sí.


Saludos.

Walter.

"Si puedes razonar con gente religiosa, no son gente religiosa". Dr. House




To: publice...@googlegroups.com
Subject: RE: [vfp] Re: ayuda con un pequeño codigo en ensamblador
Date: Tue, 13 Nov 2012 23:59:54 +0000
--
 
 
 

ZeRoberto

unread,
Nov 13, 2012, 8:20:09 PM11/13/12
to publice...@googlegroups.com

Como seria hacer un sistema en Assembler xD
 

 
--
 
 
 

Walter R. Ojeda Valiente

unread,
Nov 13, 2012, 8:41:42 PM11/13/12
to publice...@googlegroups.com
Primero, deberías tener una colección de cientos o de miles de rutinas para que te faciliten hasta las tareas más elementales, como borrar la pantalla o mostrar un mensaje.

Segundo, no deberías jamás olvidarte de restaurar los valores originales al finalizar tus rutinas. La lógica es:
1. Guardar los valores de los registros
2. Cambiar los valores de los registros según sea necesario en el proceso
3. Restaurar los valores de los registros

(Si aunque sea en una sola de tus rutinas te olvidaste de lo anterior, tendrás problema sí o sí. Y encontrar ese problema podría demandarte muchos días)

Tercero, cada vez que encuentres algún error, por pequeño que sea, debes considerar que podrías tardar horas en subsanarlo

Cuarto, debes calcular que lo que tardas un día en codificar en Visual FoxPro te tomará 30 días o más codificarlo en Assembler

Quinto, salvo que tengas todo el tiempo del mundo para perder ... ¡¡¡ni se te ocurra!!!


Saludos.

Walter.

"Si puedes razonar con gente religiosa, no son gente religiosa". Dr. House




Date: Tue, 13 Nov 2012 20:20:09 -0500
Subject: Re: [vfp] Re: ayuda con un pequeño codigo en ensamblador
From: zero...@gmail.com
To: publice...@googlegroups.com
--
 
 
 

Azael Allan Malvaez Monterrubio

unread,
Nov 13, 2012, 9:20:07 PM11/13/12
to publice...@googlegroups.com
Nuevamente gracias por tus consejos Walter, mi intencion no es hacer virus ni tampoco ganar dinero, son cuestiones que me solicitan saber y aprender en la escuela donde sigo estudiando una Ing en Sistemas, es por ello que pedi apoyo al foro pues como lo mencionas hay mucha informacion en la red y tenia dudas con algunas cosillas, de todos modos son muy sinceros tus consejos y en verdad lo agradesco nuevamente, cada dia se aprende algo nuevo, y como lo mencionas es mucho mas facil aprender algun otro lenguaje que esto del ensamblador pues es muy complicado almenos para mi que no tengo la experiencia de muchos en este foro, desde ya muchas gracias.
 
Saludos
 

From: wr...@hotmail.com
To: publice...@googlegroups.com
Subject: RE: [vfp] Re: ayuda con un pequeño codigo en ensamblador
Date: Wed, 14 Nov 2012 00:07:43 +0000
--
 
 
 

leonardo trujillo

unread,
Nov 14, 2012, 9:04:14 AM11/14/12
to grupo google vfp
en los 80 se enseñaba assembler en las universidades, en los primeros años de la carrera de ingeniería en computación (al menos aquí en uruguay), luego por el 89 se pasó a enseñar a programar en los cursos iniciales en pascal, para dar paso a C y etc.
creo que assembler es historia y bien podía ser una tarea que podría poner un profesor a sus alumnos el investigar acerca del código que se presenta.
Sé que lo primero que se pedía que uno hiciera con assembler es un reloj. Como a mi me tocó cambio de plan en la facultad, con pascal nos pidieron que hiciéramos un diccionario, manejando conceptos como pila, stack, algoritmos de búsqueda en burbuja, árbol, manejo de grafos, punteros, etc. Y luego le entrabas a C y C++. Los entornos de programación visuales los verías luego que te recibieras, jeje


--
 
 
 

Fox Learner

unread,
Nov 14, 2012, 11:20:39 AM11/14/12
to publice...@googlegroups.com
Azael Allan,

Según el "famoso" índice tiobe, el Assembly Language está en el primer recuadro de los lenguajes más "buscados en la red" en el mundo, en la posición número 20.



Todo lenguaje tiene su uso específico. Solo ten en cuenta estos 2 escenarios distintos:

Para el mundo empresarial donde tienes un jefe, la discusión de cuál es el mejor lenguaje pasa a segundo término, cuando el jefe del proyecto te dice en qué lenguaje o herramienta se va a trabajar para el proyecto actual.

Si por el contrario eres un "emprendedor" que trabaja por su cuenta y puedes elegir tus herramientas de trabajo, elige una las que según tu investigación sean mas productivas (tiempo rápido de entrega) y que generen un producto estable que no te dé dolores de cabeza continuos porque el cliente tenga que llamarte para "interrumpir" tu vida familiar o tus actividades privadas.

Busca el balance entre esas 2 cosas:

De qué sirve hacer un programa rápido (quizás con ayuda de frameworks u otras utilerias), pero que posteriormente tengas que perder mucho tiempo en corregir errores ?

De qué sirve hacer un programa estable pero con una herramienta que te atormenta continuamente durante el desarrollo y te consume muchísimo tiempo, tanto que los clientes decidan cancelar el proyecto o la próxima vez contratar a alguien que entregue mas rápido ?..

Saludos!


Azael Allan Malvaez Monterrubio

unread,
Nov 14, 2012, 11:59:35 AM11/14/12
to publice...@googlegroups.com
Hola Fox Learn agradesco tu aportacion y tus comentarios respecto al ensamblador, me ha ayudado mucho el conocer opiniones diferentes de algunos colegas que se han tomado la molestia de responder,  y tienes mucha razon se tienen que balancear las cosas para saber tomar la mejor decicion.
 
SAludos
 

Date: Wed, 14 Nov 2012 08:20:39 -0800

From: thenewin...@gmail.com
To: publice...@googlegroups.com
Subject: [vfp] Re: ayuda con un pequeño codigo en ensamblador

--
 
 
 
Reply all
Reply to author
Forward
0 new messages