Tässä on nyt tällainen esimerkki että miten omat x86-assembly tuotokset voi assembloida ja linkata QB:tä varten QLB-kirjastoksi. Mukana todella yksinkertainen "kerro kahdella" funktio.
Alhaalta löytyy kolme tiedostoa:
- TESTI.ASM -- QLB-kirjaston ASM lähdekoodit
- MAKE.BAT -- Pieni BAT-komentojonotiedosto kääntämisprosessin helpottamiseksi
- ESIM.BAS -- Yksinkertainen QB-ohjelma joka kutsuu ASM-funktiota
Että tämä toimisi, pitää sinun ensinnäkin kopioida MAKE.BATia varten QB4.5:n hakemistosta LINK.EXE, LIB.EXE ja BQLB45.LIB. Lisäksi MASM:n pitää olla pathissa.
Kun ajat MAKE.BAT:n, luo se LEIM.QLB nimisen kirjaston. Muista ladata QB seuraavasti, jotta homma toimii:
QB.EXE /Lleim
Sitten vain lataat ESIM.BAS:in QB:hen ja nautit hienosta "kerro kahdella"-funktiosta.
testi.asm
.model medium, basic .stack 10h .386 option casemap :none .code ; Testifunktio, palauttaa n * 2 AsmTest proc n:WORD mov ax, n shl ax, 1 ; ax = ax * 2 ret AsmTest endp end
esim.bas
DEFINT A-Z DECLARE FUNCTION AsmTest% (BYVAL n AS INTEGER) INPUT "Anna arvo: ", a PRINT a; "* 2 ="; AsmTest(a)
make.bat
del leim.lib ml /c testi.asm lib leim.lib +testi; link /q leim.lib,leim.qlb,nul,bqlb45.lib;
Hieno vinkki! Vähän piti soveltaa (QBasic 7.1:n kanssa), mutta lopulta kaikki toimi niin kuin pitää ja 10 tulostui. Sitten pitää enää opetella kunnolla itse assembly...:)
QBasic 7.1:n käyttäjille tiedoksi: bqlb45.lib on korvattava kirjastolla qbxqlb.lib
Kuuluuko tuon taustan olla sininen? Näyttää rumalta =)
Niin, ja QB4.5:lle käännetty QLB ei muitsaakseni toimi QB7.1:llä ja vice versa.
Tattista vaan, nytpä teenkin matopelini ehkä qbasicilla ;)
kiitos tasta mainiosta vinkista
JOO KIITOS!!!!! QB tekeeki jotku asiat liian hitaasti, eli haluan asmia koodini, ja nythän se onnistuu :-)
Hyvä thefox!
WoW! (ei World Of Warcraft!) Todella hieno ja toimiva!
taidanpas ruveta tekemään asmikirjastoa...
Aihe on jo aika vanha, joten et voi enää vastata siihen.