Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Assembly: kaksoispuskurointi

KemXy [11.02.2003 15:33:11]

#

Miten toteutetaan kaksoispuskurointi mode 13h:ssa assemblyllä(dos)?
Pitääkö varata iso taulukko(64000 tavua) ja sijoittaa värit ensin taulukkoon, josta sitten koko homma kopioidaan näyttömuistiin.
Mitenhän saa hidastettua ohjelmaa helposti, kun tuntuu nuo asseblyllä tehdyt ohjelmat pyörivän niin nopeasti nykyisillä koneilla. Toimii ne kyllä nopeasti vanhemmillakin :)

KemXy [11.02.2003 16:36:00]

#

No per... Miksihän en saa varattua 64000 tavun taulukkoa?

puskuri db 64000 dup(0)

thefox [12.02.2003 10:44:37]

#

Hiemankin suuremmille buffereilla kannattaa muisti varata hieman eri tavalla.. eli käyttämällä DOS muistinvaraus funktiota: http://members.tripod.com/~oldboard/assembly/int_21-48.html ja http://members.tripod.com/~oldboard/assembly/int_21-49.html
Eli jotain tämän tyylistä:

mov ah, 48h
mov bx, 1000h
int 21h
mov es, ax
; tehdään jotain..
; sitten flipataan, voi hoitaa rep movsb/w/d:llä tai simppelillä loopilla.. kirjotain esimerkin tästä myöhemmin nyt on kiire..
mov ah, 49h
int 21h

KemXy [12.02.2003 14:23:13]

#

Pitääkin yrittää. Onko muuten Assemblyssä(dos) muita ehtolauseita, kuten basiceissa IF, ELSE, THEN? No pärjää noilla CMP:in jälkeen käytettävillä JA,JB,JE jne silti hyvin.
Täytyy sanoa, että noilla saa kyllä ohjelman näyttämään ihan sillisalaatilta.

Antti Laaksonen [12.02.2003 14:26:28]

#

Tuollaisia "hienouksia" ei perinteisestä assemblystä taida löytyä, mutta joissakin uudemmissa assemblereissä, kuten MASMissa, niiden tapaisten rakenteiden käyttö on mahdollista.

thefox [12.02.2003 19:08:24]

#

MASMista löytyy muutama makro jotka mahdollistavat (näennäisesti) korkean tason koodin kirjoittamisen. Näitä ovat muun muassa .IF/.ELSEIF/.ELSE/.ENDIF. Esim:

.if ax==1
; tee jotain
.else
; tee jotain muuta
.endif

Assemblerin tehtävä on sitten konvertoida nuo CMP:ksi, TEST:ksi, AND:ksi, OR:iks, hypyiksi jne. Kannattaa tapauskohtaisesti miettiä milloin näitä kannattaa käyttää ja milloin ei (tuotetun binäärin kokoonhan nämä eivät vaikuta, jos niitä osaa käyttää). Koodia niillä kyllä saa kivasti selvennettyä.
Jos sinulla on MASM32 niin \masm32\HELP\MASM32.HLP tiedostosta löytyy nuo makrot selitettyinä.

Vastaus

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

Tietoa sivustosta