• Miércoles 6 de Noviembre de 2024, 07:27

Autor Tema:  Exe's  (Leído 4407 veces)

RadicalEd

  • Moderador
  • ******
  • Mensajes: 2430
  • Nacionalidad: co
    • Ver Perfil
Exe's
« en: Martes 17 de Agosto de 2004, 17:39 »
0
HOLA CHICOS QUISIERA UNA AYUDA ESTOY APRENDIENDO A PROGRAMAR EN ASM Y CONOZCO CASI TODOS LOS COMANDO PERO TENGO 2 DUDAS:
1) COMO CREO EL EJECUTABLE?
2) COMO SE QUE DATOS HAY EN CIERTA DIRECCION ESO ES LO QUE MAS ME TIENE LOCO CON ESTE LENGUAJE DE PROGRAMACION OSEA ME EXPLICO:
CUANDO YO DIGO
MOV BX, AX
QUE DATOS HAY EN AX NO ENTIENDO TENGO UN TUTORIAL LO HE ESTUDIADO Y QUISIERA APRENDER MAS
GRACIAS CHAO
El pasado son solo recuerdos, el futuro son solo sueños

deldar

  • Miembro activo
  • **
  • Mensajes: 93
    • Ver Perfil
Re: Exe's
« Respuesta #1 en: Martes 17 de Agosto de 2004, 18:21 »
0
1) ¿Qué compilador tienes? Por regla general esto funciona como en cualquier lenguaje primero compilas creando un programa intermedio y después linkas el programa intermedio creando el ejecutable si tienes un entorno integrado de desarrollo (IDE) seguramente puedas hacerlo todo de una sola vez.

2)Verás AX,BX,CX,DX...  en el modelo 80x86 son registros, o sea zonas de memoria dentro del procesador, hay que tener en cuenta que tienen dos usos : De proposito general (podrias usarlos casi como variables), De proposito especifico (ej: ax en la division es el dividendo   div bl  --> es lo mismo que --> ax  | bl    ).
El valor en un registro proviene , por lo general, bien de la pila (pop ax), de una inerrupción (que la interrupción lo use para devolucion de resultados), o de una operación anterior ( en el ej de "div bl" ah = resto  al= cociente).

Un saludo y suerte.
Quien de verdad sabe de qué habla, no encuentra razones para levantar la voz.

RadicalEd

  • Moderador
  • ******
  • Mensajes: 2430
  • Nacionalidad: co
    • Ver Perfil
Re: Exe's
« Respuesta #2 en: Jueves 19 de Agosto de 2004, 17:44 »
0
OK ME DEJASTE IGUAL, NO ME RESPONDISTES NINGUNA DE LAS 2, PRIMERO USO TASM, SEGUNDO INDICAME LOS COMANDO PARA COMPILAR CUALES SON.
TERCERO CUANDO TE PREGUNTE LO DE LOS REGISTRO NO TE PREGUNTE NI SIQUIREA POR LA PILA Y TE ME FUISTES HASTA ALLA, CUARTO MI PREGUNTA ES:
CUANDO SE DICE MOV BX, AX; QUE VALOR TIENE AX ES LO QUE NO SE ESE VALOR DE MEMORIA QUISIERA SABER CUAL ES.
ME ENTIENDES O ES QUE NO ME EXPLICO Y SOY MUY BRUTO
GRACIAS CHAO
:angry:
El pasado son solo recuerdos, el futuro son solo sueños

Oerr

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Re: Exe's
« Respuesta #3 en: Jueves 19 de Agosto de 2004, 17:48 »
0
hola, seguramente ya tienes tu programa (p.e.: miprog.asm), en mi caso uso el masm.exe para compilar (convierte *.asm a *.obj) y link.exe para generar el ejecutable, osea:
x:\>masm miprog.asm (enter)
x:\>link miprog.obj (enter)
Para los valores de AX, BX CX DX y otros puede ayudarte bastante saber que el DEBUG te muestra los valores iniciales y tienes la opcion de cambiar dichos valores: p.e.:
x:\>debug (enter)
-r (enter)            ; te muestra todos lo valores p.e. AX=0000 ...
si quieres cambiar el valor a AX, escribe:
-rAX(enter)         ; si no deseas hacerlo vuelve a pulsar enter
para salir:
-q
si deseas ver todas las opciones digita:
-?

Buena suerte.

deldar

  • Miembro activo
  • **
  • Mensajes: 93
    • Ver Perfil
Re: Exe's
« Respuesta #4 en: Jueves 19 de Agosto de 2004, 18:38 »
0
Comandos:

compilar: tasm miprograma.asm
linkar: tlink <opciones> miprograma.obj

Citar
ESE VALOR DE MEMORIA QUISIERA SABER CUAL ES.

Repito:

Citar
Verás AX,BX,CX,DX... en el modelo 80x86 son registros

Los registros del procesador NO SON VARIABLES por lo que no tienen dirección de memoria (Al menos a la hora de programar , si lo que estas es haciendo un desensamblador indicalo porque la cosa cambia)

En cuanto al valor, porque al decir "valor" preguntas por el contenido de ax, me remito a mi post anterior y al de Oerr.

Un saludo  &lt;_&lt; .
Quien de verdad sabe de qué habla, no encuentra razones para levantar la voz.

ORDENALPHABETIX

  • Nuevo Miembro
  • *
  • Mensajes: 10
    • Ver Perfil
Re: Exe's
« Respuesta #5 en: Sábado 21 de Agosto de 2004, 12:58 »
0
Buenas,

      Sobre los tipos de datos (segun MASM).

      En ensamblador existen los siguiente a nivel de micro (REGISTROS):

      AH/AL/BH/BL/CH/CL/DH/DL  -> contienen datos de 8 bits P.ej:

      mov AH, 0FFh                         ; Pon el registro AH  = 255
      mov Var8Bits, 0FFh                 ; Pon la variable Var8Bits = 255 (antes se ha de declarar en la seccion .DATA como: Var8Bits DB 0 )


       AX/BX/CX/DX/SI/DI  -> contiene datos de 16 bits P.ej:

        mov AX, 0FFFFh                     ; Pon el registro AX = 65535
        mov Var16Bits, 0FFFFh           ; Pon la variable Var16Bits = 65535 (antes se ha de declarar en la seccion .DATA como: Var16Bits DW 0 )

       
         EAX/EBX/ECX/EDX/ESI/EDI   -> contienen datos de 32 bits P.ej:

         mov eax, 0FFFFFFFFh              ; Pon el registro EAX = ...... mucho
         mov Var32Bits, 0FFFFFFFFh     ; Pon la variable Var32Bits =......mucho (antes se ha de declarar en la seccion .DATA como: Var32Bits DD 0 )

       

Espero que te sirva un poco de orientacion respecto a lo que se espera encontrar en un lenguaje de alto nivel (enteros, etc).