Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Assembly: Assembler-ongelma

Sivun loppuun

AdeRide [11.12.2004 11:41:23]

#

Minulla on sellainen ongelma etten saa ASSEMBLY-koodia kääntymään millään ASSEMBLERilla mitä oon kokeillut. Olisko kellään mitään vinkkejä noiden assemblerien suhteen tai jotain vinkki miksi ne ei oikein käännyt. Minulla on myös Microsoftin Visual C++ -kääntäjä, jos siitä on mitään hyötyä, kun se kuitenkin tukee minun tietääkseni inline-assemblyä?

Antti Laaksonen [11.12.2004 12:04:29]

#

Kerro tarkemmin ongelmastasi. Tuleeko jotain virheilmoituksia? Mitä assembleria käytät ja mitä kirjoitat komentoriville? Millainen on käännettävä ohjelma? Minä olen kääntänyt assembly-ohjelmia ongelmitta MASMilla, TASMilla ja NASMilla.

AdeRide [11.12.2004 12:10:57]

#

Esim. koitin kääntää tuota sinun Assembly -koodi vinkeissä olevaa tekstin valutus koodia NASMilla ja FASMilla, mutta molemmat valittivat siitä DOSSEG -jutusta sitten kokeilin ottaa sen ihan malliksi pois niin rupesi valittamaan ENDistä ja sitten kun otin senkin pois niin se rupesi valittamaan seuraavasta komennosta eli minulla on sellainen kuva, että se aikoo valittaa kaikista komennoista se ASSEMBLERi.

Jos voisit antaa kullanarvoisia neuvoja tämän suhteen niin olisi SUPERIA.

NASMilla kirjoitin komentoriville, kun olin tallentanut sen sinun koodin source.txt -tiedostoon, "NASM G:\source.txt G:\matrix.asm . Noin kirjoitin, mutta ei oikein auttanut se valitti silloin siitä DOSSEGista.

Antti Laaksonen [11.12.2004 12:26:05]

#

Ohjelman pitäisi toimia sellaisenaan TASMilla, mutta NASMilla ohjelman alku pitää muotoilla hieman toisin. Kun alussa nyt lukee:

DOSSEG
    .MODEL    SMALL
    .STACK    100h
    .DATA
    .CODE

Kirjoita tämän tilalle:

    org 100h

Käännöskomento on:

nasm -f bin naytalas.asm -o naytalas.com

AdeRide [11.12.2004 12:53:20]

#

Sain käännettyä sen FASMilla, mutta sitten menin komentoriviin ja laittoin ohjelman pyörimään niin ei mitään välittänyt. Se vain odotti hetken ja sitten meni takaisin siihen promptiin.

Linkku [11.12.2004 13:21:52]

#

Minä suosittelisin MASM32:ta. http://www.masm32.com/ MASMilla on helppo tehdä ohjelmia.

Oppaita ja foorumi Win32 sovellusten tekoon MASMilla http://win32asm.cjb.net/

AdeRide [11.12.2004 15:57:57]

#

Tuon MASMin sain, mutta nyt en osaa kääntää sillä mitään. Vaikka kuinka painan sieltä project valikosta sitä compile kohtaa niin ei tapahdu mitään.

Mikäköhän vikana? Veikkaisin, että vika on käyttäjässä, mutta apua tarvitaan siltikin.

Linkku [11.12.2004 17:57:11]

#

Se compile kohta ilmeisesti suorittaa tiedoston kanssa samassa kansiossa olevan makeit.* (bat, exe...) tiedoston
MASM32 toimii näin:
Tee tiedosto makeit.bat ja kirjoita sinne

win32asm.cjb.net kirjoitti:

SET FileName=messagebox
ml /c /coff %FileName%.asm
link /SUBSYSTEM:windows /LIBPATH:c:\masm32\lib %FileName%.obj
PAUSE

PAUSE sitä varten että näet errorit. Jotta sen voisi suorittaa vaikka työpöydällä windowsin pitää osata hakea tiedostot masmin kansiosta.
Ohjauspaneeli -> Järjestelmä -> Lisäasetukset -> Ympäristömuuttujat -> PATH kohtaan "%SystemRoot%\system32;%SystemRoot%;%SystemRoot­%\System32\Wbem;C:\masm32\bin"
Näin kääntyy vain win32 ohjelmat, kuten:

win32asm.cjb.net kirjoitti:

.386
.model flat, stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
includelib kernel32.lib
include \masm32\include\user32.inc
includelib user32.lib

.data
MsgCaption      db "Iczelion's tutorial no.2",0
MsgBoxText      db "Win32 Assembly is Great!",0

.code
start:
	invoke MessageBox, NULL,addr MsgBoxText, addr MsgCaption, MB_OK
	invoke ExitProcess,NULL
end start

Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta