Problemas al instalar masm32

Iniciado por 0xFer, 23 Mayo 2015, 21:57 PM

0 Miembros y 1 Visitante están viendo este tema.

0xFer

Me salen dos errores cuando trato de instalar masm32 en mi computadora windows 8 de 64 bits

los errores son los siguientes:
inc2l.exe: No se encuentra el ordinal 202 en la biblioteca de vínculos dinámicos C:\WINDOWS\AppPatch\AcLayers.dll

inc2l.exe: No se encuentra el ordinal 200 en la biblioteca de vínculos dinámicos C:\WINDOWS\AppPatch\AcGenral.dll

Se instala y todo pero no sé si eso traerá problemas cuando ya esté programando  :-[


También cuando trato de ensamblar el siguiente código:

Código (asm) [Seleccionar]

.model small
.486
.stack 64
.data
CR equ 13
LF equ 10
cadena db 'Hola Mundo 32 bits!$',CR,LF
.code
inicio:
mov eax,@data
mov ds,eax

mov eax,0900h
lea edx,cadena
int 21h

mov eax,4c00h
int 21h

end inicio


me sale el siguiente error:
/z2
"as.obj"
"as.exe"
NUL
LINK : warning LNK4044: unrecognized option "z2" ignored
LINK : error : segment referene in fixup record
as.obj : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt

ya traté de ensamblar otros código y el error es el mismo ahora quisiera saber si esos errores al ensamblar son por culpa del error al momento de instalar el masm  :-\
Código (java) [Seleccionar]
int getRandomNumber(){
    return 4; //chosen by fair dice roll
              //guaranteed to be random
}

Eternal Idol

No hay problema en general por esos errores al instalar.

El codigo no tiene sentido, es de 16 bits en realidad, por mas que le pongas 32. La interrupcion 21h es de MS-DOS, tenes que trabajar en su lugar con la API de Windows (GetStdHandle, WriteFile, etc.), mira los ejemplos de MASM32.
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

0xFer

#2
Ahora lo hice con TASM pero para ensamblar y ejecutar el programa estoy utilizando DosBox, estoy muy confundido con todo esto  :(, siempre voy a tener que utilizar el DosBox para ejecutar mis programas?

Este es el código que me corre bien y todo:
Código (asm) [Seleccionar]
.model small
.stack 100h
cr equ 13
lf equ 10
.data
texto db 'hola$',cr,lf

.code
mov ax, seg texto
mov ds,ax
lea dx,texto
mov ah,9
int 21h
mov ah,4ch
int 21h
end


realmente estoy confundido con el tema de los bits, en un lugar alguien dice 16 bits luego en otro lugar 32 bits y en otro 64 bits y me hago espagueti  :(, no sé cómo empezar.
Código (java) [Seleccionar]
int getRandomNumber(){
    return 4; //chosen by fair dice roll
              //guaranteed to be random
}

cpu2

#3
Como te dijeron arriba, estas usando un esquema por asi decirlo obsoleto usas llamadas al viejo DOS, no estoy familiarizado con estos sistemas pero se ve a leguas de que no es logico programar en 16 bits y con llamadas a DOS.

16 bits para modo real, y si funciona en DosBox es porque lo esta emulando.

Citarrealmente estoy confundido con el tema de los bits, en un lugar alguien dice 16 bits luego en otro lugar 32 bits y en otro 64 bits y me hago espagueti  :(, no sé cómo empezar.

Depende de tu CPU podras trabajar en 32 bits o en 64 bits, si es x64 en ambos modos, son casi similares las dos arquitecturas, por ejemplo en x64 tienes registros adicionales de calculo general r8-r15, y la arquitectura es algo distinta pero para eso tienes que informarte mejor.

Un saludo.

Eternal Idol

Cita de: 0xFer en 24 Mayo 2015, 21:45 PM
Ahora lo hice con TASM pero para ensamblar y ejecutar el programa estoy utilizando DosBox, estoy muy confundido con todo esto  :(, siempre voy a tener que utilizar el DosBox para ejecutar mis programas?

Si usas el TASM y codigo de 16 bits si, los Windows de 64 bits no soportan programas de 16 bis, es codigo obsoleto a esta altura.
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

0xFer

Entonces debo olvidarme de aprender a programar a 16 bits?  sería mejor a 32 bits no? :-\
Código (java) [Seleccionar]
int getRandomNumber(){
    return 4; //chosen by fair dice roll
              //guaranteed to be random
}

cpu2

Cita de: 0xFer en 25 Mayo 2015, 00:27 AM
Entonces debo olvidarme de aprender a programar a 16 bits?  sería mejor a 32 bits no? :-\

Si es lo mas aconsejable, tienes chinchetas en este mismo subforo hablando de libros, documentacion etc... Seguramente eres nuevo en esto, y habras acabado en un manual viejo, y de hay el code en 16 bits y con llamadas al DOS.

Ya te recomendaron una forma de empezar bien.

Cita de: Eternal Idol en 25 Mayo 2015, 00:04 AM
Si usas el TASM y codigo de 16 bits si, los Windows de 64 bits no soportan programas de 16 bis, es codigo obsoleto a esta altura.

A lo mejor lo entendi mal @EI, pero enserio no se puede colocar code en 16 bits? No me refiero a las llamadas a DOS, si no a instrucciones y demas.

Un saludo.

0xFer

#7
otra duda, mientras de más bits sea la arquitectura es más tedioso de programar?  :-\

Realmente solo he programado ensamblador para micro controladores de 8 bits

Pueden recomendarme algún libro para orientarme mejor?  :P
Código (java) [Seleccionar]
int getRandomNumber(){
    return 4; //chosen by fair dice roll
              //guaranteed to be random
}

cpu2

Depende del enfoque que le des, no tiene porque ser mas complicado/tedioso, creo a ver leido y recuerdo algo, una de las razones por el cambio a x64 fue para tener/administrar mas memoria RAM. Pero eso no viene al caso.

Tambien tienes registros de 128 bits, depende de tu CPU de 256 bits y hasta los hay ya de 512 bits en los Intel mas actuales, ojo son CPU's de 64 bits, pero con registros por asi decirlo especiales para realizar otro tipo de calculos. Y hay mas aun...

El programa sera todo lo tedioso que tu quieras.


Sobre el libro tienes chinchetas y demas, sera mejor que esperes a que alguien te recomiende algo enfocado a Windows, si no quieres que te recomiendo algo puro ASM, me mandarias a la playa... ;D

Un saludo.

P.D: Tambien lo que quieras programar si es con API, no tiene porque suponerte mas problemas.

Eternal Idol

#9
Cita de: cpu2 en 25 Mayo 2015, 01:19 AMYa te recomendaron una forma de empezar bien.

A lo mejor lo entendi mal @EI, pero enserio no se puede colocar code en 16 bits? No me refiero a las llamadas a DOS, si no a instrucciones y demas.

El S.O. no cambia a modo real una vez iniciado asi que el procesador no ejecuta instrucciones de 16 bits. No se para que uno lo podria querer igualmente  :silbar:

http://en.wikipedia.org/wiki/Virtual_8086_mode#64-bit_and_VMX_support
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón