asembler.311firus,
-> #308, jexy Je> Ako neko ima ideju sta bi to moglo biti neka javi.
Jedno glupo pitanje. Da li je to tvoj program?
Ako nije tvoj, jako je moguće da se radi o antidebug zaštiti.
X
asembler.312jexy,
-> #311, firus;;
;; Jedno glupo pitanje. Da li je to tvoj program?
;;
;; Ako nije tvoj, jako je moguce da se radi o antidebug zastiti.
;;
:) Pa naravno da je moj program..
asembler.313biber,
-> #304, tomcat>> l2:
>> mov cx,8 // sabiramo 8 clanova jedne kolone
>> l1:
>> add ax,word ptr es:[di] // ax:=ax+a[i,j]
>> sub di,2 // j:=j-2;
>> loop l1
>> add di,40 // (12+8)*2 byte razlike
>> dec dx // sledeca vrsta
>> and dx,dx
>> jnz l2 // ako je dx=0 onda kraj
>> end; // u ax-u ostaje rezultat!
Malo brže je (bar na nekim procesorima)
umesto: sub di,2
napisati: dec di
dec di
Takođe, posle "dec dx" nije potrebno "and dx,dx" jer se pri "dec dx"
automatski postavlja ZF.
Dalje, ako je brzina imperativ, nemoj da sabiranje stavljaš u petlju,
nego "ručno" ispiši sva sabiranja. Čini mi se da ih imaš svega pedesetak.
add ax,(adresa elementa a[3,3])
add ax,(adresa elementa a[3,4])
add ax,(adresa elementa a[3,5])
itd.
asembler.314tomcat,
-> #313, biber> Malo brze je (bar na nekim procesorima)
> umesto: sub di,2
>
> napisati: dec di
> dec di
Tako sam i ja prvobitno napisao i onda se iznenadio kada je sub
di,2 bio nekih 15 % brzi (na Cyrix-u).
> Takode, posle "dec dx" nije potrebno "and dx,dx" jer se pri "dec dx"
> automatski postavlja ZF.
Hvala. To sam prevideo.
> Dalje, ako je brzina imperativ, nemoj da sabiranje stavljas u petlju,
> nego "rucno" ispisi sva sabiranja. Cini mi se da ih imas svega pedesetak.
>
> add ax,(adresa elementa a[3,3])
> add ax,(adresa elementa a[3,4])
> add ax,(adresa elementa a[3,5])
Ima ih 64. I u pravu si ustedece 64x10 clockova. Jedino treba
ispisati sve i tada je vrlo osetljivo na promene.
> itd.
Sta jos? :)
asembler.315jexy,
-> #304, tomcat;; procedure add(var lm:moves;var tp:integer;x,y,x1,y1:integer);
;; begin
;; lm[tp,1]:=x;
;; lm[tp,2]:=y; // moves=array [1..80,1..5] of integer;
;; lm[tp,3]:=x1; // napomena: integeri su 16-bitni
;; lm[tp,4]:=y1;
;; inc(tp);
;; end;
Prvo, nemoj da mnozis tp sa 10 vec to zameni sa siftovanjima pa ces
samo zbog toga dobiti veliko ubrzanje ako se rutina poziva mnogo puta tako
da bih ja ovo u asm-u uradio ovako..
procedure add(var lm:moves;var tp:integer;x,y,x1,y1:integer);assembler;
asm
les di,tp
mov ax,es:[di]
dec ax { prvi clan je lm[1,1] a ne lm[0,0] }
mov dx,ax
inc word ptr es:[di]
shl ax,3 {; tp*8}
add dx,dx {; tp*2}
add ax,dx {; tp*10}
les di,lm
add di,ax {; es:di -> lm[tp,1]}
db 66h;mov ax,[bp+8] {; mov eax,[bp+8] ax=y}
db 66h;ror ax,16 {; ror eax,16}
db 66h;stosw; {; lm[tp,1]:=x; lm[tp,2]:=y }
db 66h;mov ax,[bp+4] {; mov eax,[bp+4] ax=y1}
db 66h;ror ax,16 {; ror eax,16 }
db 66h;stosw; {; lm[tp,3]:=x1; lm[tp,4]:=y1 }
end;
asembler.316tomcat,
Nesto sto me je zapanjilo. Sledece naizgled najprostija petlja na
planeti kompajlirana Turbo Pascalom 7 je skoro 10 puta sporija nego
kad se napise u asembleru.
-----------
sum:=0;
for i:=1 to 8 do
for j:=1 to 8 do sum:=sum+a[i,j];
-----------
Vreme za 5,000,000 iteracija:
TP7=43.6 sec
ASM=4.6 sec
asembler.317jexy,
-> #314, tomcat;;
;; Ima ih 64. I u pravu si ustedece 64x10 clockova. Jedino treba
;; ispisati sve i tada je vrlo osetljivo na promene.
;;
To se moze uprostiti ako doticnu rutinu pises odvojeno i zatim je ulinkujes
u PASCAL zato jer onda mozes koristiti makroe koji mnogo skracuju pisanje.
Takodje ako znas da konacna vrednost SIGURNO staje u 16 bita odnosno da se
pri sabiranju nece javiti prekoracenje onda mozes da koristis 32-bitne
registre i razlika u brzini bi bila velika.. Evo kako bi trebalo da izgleda
eksterni .asm fajl (npr. eval.asm) koga, nakon sto napravis eval.obj,
ulinkujes u PASCAL sa jednim
{$l eval.obj}
function eval(var a:tabla):integer;external;
..i onda normalno radis sa funkcijom.
BTW, ovde sam pretpostavio zbir svih vrednosti staje u 16 bita i da nema
negativnih vrednosti. Ako to nije ispunjeno onda ti preostaje da koristis
add ax,[...] umesto add eax,[...]
----------------------------------------------------
.386 code segment use16
assume cs:code
public eval
eval proc near
a equ [bp+4] ; +2 zbog push bp
push bp
mov bp,sp
push ds
lds si,a ; ds:si -> a[1,1]
add si,(2+2*12)*2 ; krecemo od a[3,3]
xor eax,eax
I=0
REPT 8
J=0
REPT 4 ; REPT 8 ako rez. ne staje u 16 bita
add eax,[si+(I*12+J)*2] ; *2 zato sto su word tipa
J=J+2 ; J=J+1 ako rez. ne staje u 16 bita
ENDM
I=I+1
ENDM
shld edx,eax,16 ; ovo ne treba ako
add ax,dx ; rez. ne staje..
pop ds
pop bp
ret 4
eval endp
code ends
end
asembler.318jjerry,
Evo jedno,verovatno laičko, pitanje :
Ovaaj..dakle,kako da proceduru u jednom ASM fajlu ulinkujem sa C++
programom.Tacnije ,trebaju mi procedure i neke definicije iz tog
fajla da bi ih povez'o sa hederom i ¨normalno¨ koristio.U asm fajlu
imam sve Public deklaracije,neke procedure imaju i argumente..itd.
Pomagajte !
asembler.319biber,
-> #314, tomcat>>> add ax,(adresa elementa a[3,3])
>>> add ax,(adresa elementa a[3,4])
>>> add ax,(adresa elementa a[3,5])
>>> itd.
>>
>> Sta jos? :)
"Itd." se odnosilo na oner silne add instrukcije. Nisam se dosetio
ničeg više.
asembler.320jjerry,
Hi,zanima me ovako nesto...
Posto od skora pisem u asembleru (mozda bi se cak moglo reci da jos
ucim) sreo sam se sa SHL,SHR,ROL,ROR itd. dakle,shift i rotate
komande...Posto mi nisu jasne kako rade i cemu sluze (iako
naslucujem iz naziva),moze li neko da mi opise te komande,sta
rade,koje flegove setuju,i par primera.
Hvala unapred :)
asembler.321firus,
-> #320, jjerry Jj> naslucujem iz naziva),moze li neko da mi opise te komande,sta
Jj> rade,koje flegove setuju,i par primera.
Znaš šta su meni rekli kad sam to pitao?
"Skini HELPPC."
Sad ja tebi to kažem. :)
Ako ne shvatiš ni posle toga, pitaj ponovo, onda ću da ti
objasnim.
X
asembler.322jjerry,
-> #321, firusMa znaam za sve te HELPPC fore (iako nemam taj HELPPC) imam onaj
Norton Guide bazu za asembler (stvar je super ,inace :
opsirno,detaljno) al' ja opet ne kapiram na kom principu i sta
ustvari rade one SHL(R) i ROL(R) komande :)
Opet kazem ,malo opsirnije,sa primerima :)
'Ajd' pozdrav !
asembler.323banga,
-> #322, jjerry> opsirno,detaljno) al' ja opet ne kapiram na kom principu i sta
> ustvari rade one SHL(R) i ROL(R) komande :)
SHL pre posle
11010001 10100010 isto što i *2, u ovom slučaju ima OF
ROL " 10100011
Primer je za 8 bita
Za flagove i ostalo ćitaj bolan.
A kako ćeš to da primeniš zavisi od tebe
asembler.324firus,
-> #322, jjerry Jj> opsirno,detaljno) al' ja opet ne kapiram na kom principu i sta
Jj> ustvari rade one SHL(R) i ROL(R) komande :)
Prvo pročitaj ovo.
Jel ovo bolje od tog što ti imaš. Ja bi rekao da jeste.
--- CUT HERE ---
SAL/SHL - Shift Arithmetic Left / Shift Logical Left
Usage: SAL dest,count
SHL dest,count
Modifies flags: CF OF PF SF ZF (AF undefined)
Shifts the destination left by "count" bits with zeroes shifted
in on right. The Carry Flag contains the last bit shifted out.
--- CUT HERE ---
Jj> Opet kazem ,malo opsirnije,sa primerima :)
Evo ga i primer. :))
Uzmeš neki broj, recimo 00110111 i nalazi se recimo u AX registru.
Daš mu SHL AX,3 i šta će se desiti?
Pa lepo ti kaže ono gore, ubaciće tri nule na početak i ovo pomeriti
udesno za tri mesta.
Znači posle ovoga u AX ostaje 00000110.
Da si stavio SHR AX,4 dobio bi 01110000.
Jel konačno jasno.
X
p.s. A da, uzmi Help PC. :)
asembler.325jjerry,
-> #324, firusZa "ono gore" znam ,imam to.. :) Al' opet mi bas nije bilo
preterano jasno...:) OK hvala,al' sad me samo interesuje kakva bi
bila neka prakticna primena tih komandi :) Npr. da se dobije Hi i
Lo part nekog broja ?
OK je za SHL(R),a sta je sa ROL(R) i kakva je razlika izmedju SAL i
SHL ?
Izvin'te ako sam udavio i opet kazem 10X puno !!!
Pozdrav !
asembler.326r.i.s,
Zna li ko kako je moguce detektovati da li je ekran u modu
sa 43 odnosno 50 linija (EGA/VGA) mod ?
Klasicni BIOS poziv
mov ah,0fh
int 10h
ne pomaze.
asembler.327obren,
-> #326, r.i.s> Zna li ko kako je moguce detektovati da li je ekran u modu
> sa 43 odnosno 50 linija (EGA/VGA) mod ?
>
> Klasicni BIOS poziv mov ah,0fh int 10h ne pomaze.
To bi trebalo da radi, verovatno da negde grešiš. Ako nisi do sada,
obrati pažnju da se pri pozivu te BIOS funkcije prljaju SP, BP, AX,
SI i DI registri.
U svakom slučaju lakše je te informacije dobiti iz tzv. "BIOS data area"
gde na adresama 0000:0484h (byte) i 0000:044Ah (word) možeš saznati koji
je broj redova (-1) odnosno kolona u trenutnom video modu.
P.S. Ako nemaš nabavi Norton Guide za ASM, HelpPC ili TechRef (ima ih
na Sezamu).
asembler.328bokir,
NortonGuides za TASM 4.0 Ideal mode
ng_tasm4.zipasembler.329bokir,
NortonGuides sa Intel instrukcijama od XT-a do Pentiuma.
Uključuje CPU, FPU i MMX instrukcije, zajedno sa opcode-ovima.
ng_x86.zipasembler.330acap,
Trazim pomoc u vezi asemblerske grafike i pravljenja introa.
Interesuju me efekti i pointeri na prethodne zanimljive poruke.
Mbasta.
asembler.331jexy,
-> #330, acap;; Trazim pomoc u vezi asemblerske grafike i pravljenja introa.
;; Interesuju me efekti i pointeri na prethodne zanimljive poruke.
;;
;; Mbasta.
U ovoj confi poruka takvog tipa je vrlo malo da ne kazem da ih uopste
i nema. Ako imas pristup internetu onda ti preporucujem da pogledas
sledece sajtove:
http://www.cdrom.com/pub/demos - Ogromna Hornet arhiva, ima na tone sorsova
ftp://x2ftp.oulu.fi/pub/msdos/programming - Takodje jos jedan gigant
Moja preporuka ti je da prvo poskidas tutorijale nekih jednostavnijih efekata
tipa plasma, fire, etc. pa ces kasnije moci i sam da kontas neke
komplikovanije
sorsove..
asembler.332mango,
Posto treba da radimo seminarski rad iz asemblera za skolu, a ja sam u stisci
sa vrmenom, da li bi neka dobra dusa htela da mi baci na mail neki
jednostavniji program (sors)sa eventualnim komentarima na problematicnim
mestima? Npr. neki programcic koji radi nesto sa diskovima isl. Stvar je
prilicno hitna. Thanx.
asembler.333vector,
Treba mi program 'exe2bin'. Ako ga neko ima, molio bih da mi posalje na
mail.
asembler.334jjerry,
Hi,treba mi nesto vezano za asemblerove DB,DW,DD,DT..komande.
Kada definisem neki string npr. String DB 'aaa$' cemu sluze neki
brojevi ispred i iza stringa npr. String DB 0,'aaa$',0AH,0EJ itd.
Konkretno,da li se time moze formatirati ispis,tako da se menja
boja ispisa ili da se sledeci string pojavi u drugom redu itd. ?
Pozdrav !
Jjerry
asembler.335jjerry,
Sorry,u prosloj poruci sam rek'o 0Ah,0EJ..:)) Umesto 0EJ treba da
stoji 0EH ,to je valjda shvaceno..:)
asembler.336jjerry,
Evo jednog programceta koji vraca informacije vezane za misa.
Skinite (pogotovu vlasnici Geniusa i ostalih ne MSmouse miseva)
i napisite ovde ili na mail (bolje na mail) da li je vratio tacne
informacije,da li je bilo problema itd.
Hvala !
Jjerry
minfo.exeasembler.337space.ace,
-> #334, jjerry> Hi,treba mi nesto vezano za asemblerove DB,DW,DD,DT..komande.
> Kada definisem neki string npr. String DB 'aaa$' cemu sluze neki
> brojevi ispred i iza stringa npr. String DB 0,'aaa$',0AH,0EJ itd.
Kada definišeš string, obično se deklariše sa DB (Declare Byte), i
moraš ga terminisati znakom$. Brojevi posle toga su ti kodovi za
Line Feed i Enter, mada možeš pogledati u HelpPc-u specijalne kodove.
Njima, kao što si i sam rekao, formatiraš ispis. Možeš ih staviti
ispred, iza, u sredinu, gde želiš :)
asembler.338raven,
Da li neko zna da li je moguce da kada se nakacim na neki hardverski
interapt, na primer tastaturu (09h) da li je moguce pod dosom
otvoriti odnosno uopste raditi sa fajlovima. preko dosovog
interepta..I ako nije kako to da uradim preko BIOS-a..posto
nemam potpunu dokumentaciju, a davno je bilo kada sam se zezao sa
time..:)
Raven.
asembler.339banga,
-> #338, raven> Da li neko zna da li je moguce da kada se nakacim na neki
> hardverski interapt, na primer tastaturu (09h) da li je moguce
> pod dosom otvoriti odnosno uopste raditi sa fajlovima. preko
> dosovog
Odgovor je da, ali nije jednostavno.
Skini za početak napr. dos\prog\asm\tbones07.zip pa prouči probleme. Ne
sećam se da li u "kosturu" ima i rad sa fajlovima, ali za početak prvo
savladaj ovo.
A kod rada sa fajlovima imaš dodatni tajming problem jer ne možeš da
čučiš u svom interptu koliko ti hoćeš
asembler.340destructor,
Nije striktno asembler, ali tu je negde ...
Znaci: Potreban mi je algoritam za generisanje slucajnih
brojeva, koji se moze relativno kratko kodirati u asembleru
(brzina je dobrodosla), a da ima neki pristojan period.
Eto .. toliko
asembler.341obren,
-> #340, destructor> Znaci: Potreban mi je algoritam za generisanje slucajnih
> brojeva, koji se moze relativno kratko kodirati u asembleru
> (brzina je dobrodosla), a da ima neki pristojan period.
Evo ti sors rand() funkcije iz Borland C-a, lako ćeš ga prepevati
na ASM. Nije neki kvalitet (školski primer random generatora) ali
je jako brzo i jednostavno za kodiranje...
------------------ cut here ------------------
#define MULTIPLIER 0x015a4e35L
#define INCREMENT 1
static long Seed = 1;
void srand(unsigned seed)
{
Seed = seed;
}
int rand(void)
{
Seed = MULTIPLIER*Seed + INCREMENT;
return((int)(Seed >> 16) & 0x7fff);
}
------------------ cut here ------------------
Ako ti treba surovi kvalitet ;) a ne brzina, onda pogledaj sors vezan
uz poruku, tvrde da je najbolji poznati RND generator (čak ako i nije
najbolji, jako je kvalitetan).
best_rnd.casembler.342jjerry,
Hi,
Kako da pomocu funkcije 02h interapta 21h odstampam dvocifren broj..
(Podsecam da je to funkcija koja trazi ASCII scan code karaktera u
DL-u).Pomislio sam da rastavljam cifre sa npr. broj je ab
a = int(ab / 10) ; b = ab - 10 * b
pa onda da ih printujem svaku pojedinacno,ako ima neko resenje
molio bih da posalje i kratak sors..Makar samo principe.
Hvala !
asembler.343obren,
-> #342, jjerry> Kako da pomocu funkcije 02h interapta 21h odstampam dvocifren broj..
> (Podsecam da je to funkcija koja trazi ASCII scan code karaktera u
> DL-u). Pomislio sam da rastavljam cifre sa npr. broj je ab
> a = int(ab / 10) ; b = ab - 10 * b
> pa onda da ih printujem svaku pojedinacno, ako ima neko resenje
> molio bih da posalje i kratak sors.
Za tako nešto se može iskoristiti instrukcija AAM koja radi upravo
ono što ti treba:
AH = AL div 10
AL = AL mod 10
Znači, stavi broj u AL i izvrši instrukciju AAM, nakon toga imaš u AH
cifre desetica a u AL cifre jedinica. Cela sekvenca bi bila otprilike:
mov al, 21
aam ; sada je ah=broj/10, al=broj%10
mov dl, ah ; treba prvo odštampati cifre desetica
mov dh, al ; pa cifre jedinica
add dx, 3030h ; dodaj i višem i nižem bajtu po ASCII kod nule ('0')
mov ah, 02h ; DOS funkcija 02h, character output
int 21h
xchg dl, dh ; sad nam trebaju jedinice koje su u ah
int 21h ; ah=2 iz prethodnog poziva
asembler.344jjerry,
-> #343, obrenHvala ti,otprilike sam na to mislio,ali sam nesto pokusavao sa IDIV
pa IMUL..Za ovo AAM nisam znao..
Jos jednom 10X !!!
asembler.345vector,
U pitanju je A86 shareware assembler. Ukoliko postoji greska u izvornom
kodu, program (A86) pri kompajliranju nece ispisati na ekran o cemu se
radi, vec ce sve podatke o greskama uneti u sam izvorni fajl, sto je vrlo
iritirajuce ukoliko je program iole veci.
Ja bih hteo da mi program podatke o greskama ispisuje na ekran, a ne u
izvorni fajl. Da li je to uopste moguce? (mozda preko nekog svica?)
asembler.346jjerry,
E ljudi,evo vam jedan programcic koji testira Trident SVGA cip.
Pa,ko ima Tridentove kartice..neka proveri,please...
Bacite na mail sta vam je rek'o :)
Poz.
trident.exeasembler.347obren,
-> #345, vector> U pitanju je A86 shareware assembler. Ukoliko postoji greska u izvornom
> kodu, program (A86) pri kompajliranju nece ispisati na ekran o cemu se
> radi, vec ce sve podatke o greskama uneti u sam izvorni fajl, sto je vrlo
> iritirajuce ukoliko je program iole veci.
Zaista bi bilo lepo da poruke o grešci ispisuje _i_ na ekran, ali mislim
da je ono što on radi jako korisno, pošto ćeš u slučaju greške svakako
ponovo ulaziti u editor. U tom slučaju samo ispraviš grešku a njegovo
upozorenje na tom mestu možeš slobodno da ostaviš - automatski će ga
izbaciti ako se greška više ne javlja pri novom prevođenju.
> Ja bih hteo da mi program podatke o greskama ispisuje na ekran, a ne u
> izvorni fajl. Da li je to uopste moguce? (mozda preko nekog svica?)
Mislim da nema načina... :(
asembler.348vector,
-> #347, obren
Ů▄▀Ţ Zaista bi bilo lepo da poruke o gresci ispisuje _i_ na ekran, ali
Ů▄▀Ţ mislim da je ono sto on radi jako korisno, posto ces u slucaju greske
Ů▄▀Ţ svakako ponovo ulaziti u editor. U tom slucaju samo ispravis gresku a
Ů▄▀Ţ njegovo
Jeste korisno, ali sta raditi u slucaju da sors programa zauzima 100K ili
vise? Traziti preko editora znak '~' cime A86 obelezava gresku u sorsu? :)
asembler.349space.ace,
-> #345, vector> Ja bih hteo da mi program podatke o greskama ispisuje na ekran, a ne u
> izvorni fajl. Da li je to uopste moguce? (mozda preko nekog svica?)
Ne verujem da je slično moguće, ali je u izvornom kodu lakše naći grešku
ako u u njemu stoji podatak (pointer) na grešku. Ako ispraviš grešku i
ponovo propustiš kroz a86, te greške će nestati iz izvornog koda a kod
će se lepo kompajlirati. So, možda je ovako i lakše.
asembler.350obren,
-> #348, vector> Jeste korisno, ali sta raditi u slucaju da sors programa zauzima 100K ili
> vise? Traziti preko editora znak '~' cime A86 obelezava gresku u sorsu? :)
A kako bi i inače tražio grešku da ti kod tolikog programa napiše
nešto poput:
Error trt-mrt, line 89
Error štuc-muc, line 1230
Error ovo-ono, line 6843
. . .
Jel onda beležiš na papir brojeve linija gde su bile greške pa onda
ideš kroz editor pa trebiš? ;) Po meni je jako dobro što u sorsu naznači
greške jer ionako ti je cilj valjda da te greške ispraviš. U tom slučaju
imaš sva mesta obeležena i čas posla se ispopravlja šta ne valja. Kod
TASM-a nikad ne mogu da zapamtim više od 2-3 prijavljene greške u jednom
cugu, već moram prvo njih da ispravim pa ponovo TASM, pa ponovo par
ispravljenih grešaka...
Naravno ima i specijalizovanih editora (Qedit i sl.) koji mogu da se
konfigurišu tako da na osnovu outputa TASM-a omoguće skakanje na
greške, ali na kraju ipak ispada lakše da ti je sve označeno u sorsu
nego da skakućeš između Error prozora u editoru i samog ASM sorsa.
Naravno, kao što sam već i rekao, zgodno bi bilo da se vide greške _i_
na konzoli pored označavanja u sorsu, ali generalno mi se sviđa ta ideja
sa markiranjem, pošto A86 ionako automatski poizbacuje ta upozorenja ako
više nema grešaka na označenim mestima.
asembler.351firus,
-> #345, vector> U pitanju je A86 shareware assembler. Ukoliko postoji greska u
> ...
> ...
> Ja bih hteo da mi program podatke o greskama ispisuje na ekran,
> a ne u izvorni fajl. Da li je to uopste moguce? (mozda preko
> nekog svica?)
A da ti to lepo zapakuješ i pošalješ pa da ga
"upgrade-ujemo" ?!
asembler.352zdravkod,
Kako da kazem CD-u PLAY ???
Koji interrupt gde sta kako ??? jel zna neko ..
asembler.353van.gog,
Ako bi neko bio ljubazan da mi napshe proceduru za startovanje
nekog programa (EXEC proceduru) odnosno kako se koristi fia.
4B (int21) i da li ja treba ta pravim PSP ili je to ukljuceno
u samu 4B fiu. ... i jos ... kako odrediti vrednosti za
ss,cs i ostale registre koji se prosledju u parametar bloku
za isto-pomenutu fiu.
(NEMOJTE DA SALJETE ISECKE IZ HELPPC-a i sl.)
Molim za malo koda ;> VAN.GOG!
asembler.354bokir,
-> #353, van.gog> Ako bi neko bio ljubazan da mi napshe proceduru za startovanje
> nekog programa (EXEC proceduru) odnosno kako se koristi fia.
Evo malo koda :)
exec.asmasembler.355vector,
A86 macro assembler, V4.02 updated
with INCLUDE files, listings, no limit
on size of source files, fwd refs in
complex expressions, END operand,
default ORG END in DATA SEGMENT, and
more! Contains info about A386/D386.
From Eric Isaacson Software.
a86v402.zipasembler.356vector,
D86 debugger, V4.02, updated
with keystroke scripts, macro
keys, Undo command, and
file copy and delete.
Contains info about A386/D386.
From Eric Isaacson Software.
d86v402.zipasembler.357vector,
Predlazem da se stare verzije A86 shareware asemblera obrisu iz
direktorijuma i da se umesto njih stavi nova (v4.02). :)
asembler.358soul,
Enter: East Gate. Intro no. 000.
Hope to see you soon.
egate0.zipasembler.359van.gog,
Aloha ...
Evo ovako ... malo sam modifikovao onaj exec prog od pre par
poruka u cilju jelte' experimentisanja ... dakle poziva se
sa ah,4b (exec) ali sa AL,1 (create PSP, load but not EXEC)
a kasnije kad izvucem CS i IP iz param bloka zajedno sa SS i SP
i stavim na stack (CS i IP), uradim jedno RETF (JUMP FAR)
on pozove prog koji treba da se startuje al kaze nema MEM?!?
E sad ... kako to da resim ???
(promnenite samo ime programa koji se pokrece)
e.asmasembler.360van.gog,
Aloha.
Evo nadjoh o CD-u napokon. Ali (eh) problem. Prog je u asm-u
al vezan CPP-om pa evo prosledjujem source.
Ako neko pokrene CD-ovim (ili necim drugim) neka mi se obavezno
javi ... thanx
cd.rarasembler.361jjerry,
E,'ajde nek mi neko napise funkciju za dobijanje copyright stringa
za MS MOUSE u C++-u..Samo cu vam reci da je INT 33h,f-ja AX=004Dh i
da vraca copyright string u ES:DI..Meni vraca djubre,e sad ili ja
nemam dobar drajver,ili je kod los :)
Poz.
asembler.362jjerry,
Cemu konkretno sluze [] zagrade oko imena nekih promenljivih ili
registara kao npr. [ES:DX],[blabla] itd. ?
asembler.363vector,
-> #361, jjerry
<--- E,'ajde nek mi neko napise funkciju za dobijanje copyright stringa
<--- za MS MOUSE u C++-u..Samo cu vam reci da je INT 33h,f-ja AX=004Dh i
<--- da vraca copyright string u ES:DI..Meni vraca djubre,e sad ili ja
<--- nemam dobar drajver,ili je kod los :)
Kod mene je sadrzaj ES:DI memorijske lokacije pre i posle poziva te
funkcije potpuno isti. BTW, odakle ti informacija o toj funkciji?
Ni IntrList (v1.2) ni HelpPC (v2.1) nemaju podataka o tome...
asembler.364stameni,
-> #363, vector>> <--- za MS MOUSE u C++-u..Samo cu vam reci da je INT 33h,f-ja AX=004Dh
>> i <--- da vraca copyright string u ES:DI..
>> Kod mene je sadrzaj ES:DI memorijske lokacije pre i posle poziva te
>> funkcije potpuno isti. BTW, odakle ti informacija o toj funkciji?
>> Ni IntrList (v1.2) ni HelpPC (v2.1) nemaju podataka o tome...
Samo da dojavim da je su i kod mene pre i posle poziva funkcije
je te lokacije neizmenjene. Štaviše, mislim da se od registara
jedino menja IP ;) Drajver za miša je Geniusov, verzija 8.08.
Imaš dosta staru IntList, što ponekad može biti prednost, jer
je lakše pronaći "pravu stvar" u manjim fajlovima, a kad nađeš,
siguran si da će da radi i na DOS-u < 3.00 :) U verziji 4.2 je
uredno (reklo bi se) dokumentovana funkcija, nemam pojma što ne
radi.
asembler.365vector,
-> #364, stameni
<--- Samo da dojavim da je su i kod mene pre i posle poziva funkcije
<--- je te lokacije neizmenjene. Stavise, mislim da se od registara
<--- jedino menja IP ;) Drajver za misa je Geniusov, verzija 8.08.
Menja se i DI registar, medjutim na ES:DI se nista ne nalazi. :)
Takodje imam Geniusov mouse drajver.
<--- Imas dosta staru IntList, sto ponekad moze biti prednost, jer
Gde naci noviji IntrList? :)
asembler.366jjerry,
-> #363, vectorHmmm...podatak je iz Ralph-Brownove interrupt liste..evo,lepo pise
poziva se sa 004Dh u AX-u i vraca pointer na kopirajt string u
ES:DI..Da ti nisi gled'o ES:DX ?
asembler.367vector,
-> #366, jjerry
<--- Hmmm...podatak je iz Ralph-Brownove interrupt liste..evo,lepo pise
<--- poziva se sa 004Dh u AX-u i vraca pointer na kopirajt string u
<--- ES:DI..Da ti nisi gled'o ES:DX ?
Ne, gledao sam ES:DI, bas kako sam i rekao :)
BTW, kako gledas te podatke iz njegove interapt liste? Preko tekst
editora? Ili imas nesto poput WindowBook programa?
asembler.368stameni,
-> #365, vector>> Menja se i DI registar, medjutim na ES:DI se nista ne nalazi. :)
Šta da kažem, meni ne menja ni DI, a tamo gde pokazuje ES:DI
stvarno nema ničeg.
>> Gde naci noviji IntrList? :)
Ima na Sezamu u dos\prog\info verzije 4.8 i 5.1 (možda i neke
novije). However, preporučuju ne bacati ni 1.2, ako već imaš; nije
veliko (verovatno), pa dobro dođe ponekad "za prvu pomoć" :)
asembler.369jjerry,
-> #367, vectorJJ=> Ne, gledao sam ES:DI, bas kako sam i rekao :)
OK :)
JJ=> BTW, kako gledas te podatke iz njegove interapt liste? Preko tekst
JJ=> editora? Ili imas nesto poput WindowBook programa?
Ne..imas to u DOS\PROG\INFO..ja gledam preko Norton
Commandera,svaki ASCII editor ce posluziti :)
asembler.370stameni,
-> #369, jjerry>> JJ=> BTW, kako gledas te podatke iz njegove interapt liste? Preko
>> tekst JJ=> editora? Ili imas nesto poput WindowBook programa?
>>
>> Ne..imas to u DOS\PROG\INFO..ja gledam preko Norton
>> Commandera,svaki ASCII editor ce posluziti :)
Trebalo bi da je u arhivama programče koje se zove Intervue,
kojim se efikasno mogu pratiti podaci.
Ima i programčića (sa sorsovima) koji konvertuju liste u
popularne help formate, al' o tome ne znam puno, jer ih ne
koristim.
asembler.371jjerry,
Hmmm..ovde ne pishe za koju verziju drajvera je funkcija,ali ajde
da probamo nesto drugo..ovde kaze da f-ja vraca ili string "***
This is Copyright 1983 Microsoft" ili "Copyright 19XX...".Dalje
kaze da u Genius verziji 9.06 potpis "KYE" dolazi odmah posle one
poruke..Dakle,da saberemo kol'ko su poruke dugacke,uvecamo DI za
tol'ko,i ako pise "KYE" onda raaaadiiiiiiii...!! :))
Poz.
asembler.372vector,
-> #368, stameni
<--- >> Gde naci noviji IntrList? :)
<---
<--- Ima na Sezamu u dos\prog\info verzije 4.8 i 5.1 (mozda i neke
<--- novije). However, preporucuju ne bacati ni 1.2, ako vec imas; nije
<--- veliko (verovatno), pa dobro dode ponekad "za prvu pomoc" :)
Pod ovim 'noviji IntrList' sam mislio na program kompanije WindowBook,
a to je neki hipertekst reader Ralf Brownove liste interapta. :)
asembler.373vector,
-> #370, stameni
<--- Trebalo bi da je u arhivama programce koje se zove Intervue,
<--- kojim se efikasno mogu pratiti podaci.
<--- Ima i programcica (sa sorsovima) koji konvertuju liste u
<--- popularne help formate, al' o tome ne znam puno, jer ih ne
<--- koristim.
Ok, presnimio sam INTER51x.ZIP fajlove i otpakovao ih. Zatim sam
startovao IL2HDK program i konvertovao listu u nekakav .hdf fajl.
Sta dalje? U inter51*.zip arhivama nema programa koji cita takve
.hdf fajlove, dok u uputstvu pise da se oni moraju kompajlirati
pomocu nekog programa (ne secam se tacnog imena). Ima li resenja?
(u INTER48E.ZIP arhivi se nalazi nekoliko programa koji konvertuju
listu u neke help formate, medjutim, to meni nista ne koristi jer
nemam nijedan program koji cita to)
Moze li se negde naci .NG baza ove interrupt liste?
asembler.374biber,
-> #355, vector> A86 macro assembler, V4.02 updated
> with INCLUDE files, listings, no limit
> on size of source files, fwd refs in
Da li neko ima A386 (verziju ovog asemblera za 386+ procesore)?
asembler.375biber,
-> #345, vector> U pitanju je A86 shareware assembler. Ukoliko postoji greska u izvornom
> kodu, program (A86) pri kompajliranju nece ispisati na ekran o cemu se
> radi, vec ce sve podatke o greskama uneti u sam izvorni fajl, sto je vrlo
> iritirajuce ukoliko je program iole veci.
>
> Ja bih hteo da mi program podatke o greskama ispisuje na ekran, a ne u
> izvorni fajl. Da li je to uopste moguce? (mozda preko nekog svica?)
Postoji svic za tako nesto, koga naravno ne znam napamet, a i
nisam ga nesto ni koristio. Ipak je dobra ideja da se greske upisu
u sors.
U svakom slucaju procitaj uputstvo koje ide uz program u obliku
txt fajla i naci ces svic.
asembler.376stameni,
-> #372, vector>> Pod ovim 'noviji IntrList' sam mislio na program kompanije WindowBook,
>> a to je neki hipertekst reader Ralf Brownove liste interapta. :)
Ja sam mislio na noviju *bazu*. No, kakav je taj WindowBook?
Ako valja i ako je public, šta misliš da ga okačiš file
moderatorima?
asembler.377stameni,
-> #373, vector>> Ok, presnimio sam INTER51x.ZIP fajlove i otpakovao ih. Zatim sam
>> startovao IL2HDK program i konvertovao listu u nekakav .hdf fajl.
>> Sta dalje? U inter51*.zip arhivama nema programa koji cita takve
>> .hdf fajlove, dok u uputstvu pise da se oni moraju kompajlirati
>> pomocu nekog programa (ne secam se tacnog imena). Ima li resenja?
Priložen je progam INTERVUE i jedan batch (valjda beše IV.BAT)
koji ga instalira i kasnije poziva ako te mrzi da kucaš celo
INTERVUE. Ja koristim (isključivo) njega, jer donedavno nisam imao
te... transformere ;) a u međuvremenu sam navikao na dotičnog.
Nema source.
>> Moze li se negde naci .NG baza ove interrupt liste?
To bi bila prava stvar. Ako imaš NG compiler (il' kako se već
zove), imaš uz inter???.zip program kojim možeš da praviš takve
fajlove.
asembler.378vector,
-> #374, biber
<--- Da li neko ima A386 (verziju ovog asemblera za 386+ procesore)?
Koliko sam shvatio iz uputstva A86 (v4.02), test verzija A386 se moze
dobiti jedino registracijom ovog A86 asemblera.
asembler.379vector,
-> #376, stameni
<--- Ja sam mislio na noviju *bazu*. No, kakav je taj WindowBook?
<--- Ako valja i ako je public, sta mislis da ga okacis file
<--- moderatorima?
IntrList (WB) nije ni shareware ni public domain. :) Cini ga 1 .exe fajl
velicine jednog megabajta. Podaci su dosta matori, medjutim, program je
zaista odlican. Uz poruku sam prikacio nekoliko slika iz programa. :)
d00.arjasembler.380zeljkoj,
-> #373, vector> Moze li se negde naci .NG baza ove interrupt liste?
Ja sam celu interapt listu konvertovato u Windows .HLP format (pomoću
priloženog programa), još 1995. (verzija 4.8).
asembler.381jjerry,
100% vam je poznata 0Ah f-ja interapta 33h za definisanje
softverskog (i hardverskog) text kursora..Fora je sto u CX treba da
se stavi AND maska,a u DX XOR maska kursora..Svasta sam radio al'
nikako da dobijem "dobre" kursore :( Ima l' neko resenje..i ako
moze format tih maski.
Pozdrav !
asembler.382stameni,
-> #379, vector>> <--- Ja sam mislio na noviju *bazu*. No, kakav je taj WindowBook?
>> IntrList (WB) nije ni shareware ni public domain. :)
Sad je jasnije, sve vreme sam mislio da koristiš staaaru
verziju Interrupt Lists Ralfa Browna. Šta da radiš kad se slično
zovu...
asembler.383vector,
-> #382, stameni
<--- Sad je jasnije, sve vreme sam mislio da koristis staaaru
<--- verziju Interrupt Lists Ralfa Browna. Sta da radis kad se slicno
<--- zovu...
To i jeste stara verzija njegove liste, medjutim, upakovana je u jedan
program u kome sve gledas pomocu hiperteksta, a taj program kompanije
WindowBook Inc. se zove IntrList. :)
asembler.384jjerry,
Evo...bavio sam se malo izvlacenjem stringova iz memorije,pa evo
jednog programceta koje stampta MS-DOS version string..Ja imam
MS-DOS 6.22 (pod Win95 7.0) ali pre nego sto ga
startujete,proverite lokacije od 9000:CF90h do 9000:D004h
P.S Sasvim slucajno sam pronasao da tu stoji DOS string uz pomoc
nekog pretrazivaca memorije.. :))
dos_str.exeasembler.385jjerry,
E pa ljudi,konacno sam uspeo..
Funkcija 004Dh je sasvim tacna i pravilno dokumentovana !
Kao sto je i pisalo..posle poziva te f-je,u ES:DI se nalazi
copyright string za microsoft.A u Genius mouse 9.06 (moja verzija)
potpis "KYE" zaista odmah prati pomenuti string..
Evo vam EXE-fajla..ako treba sors (kao dokaz :> poslacu ;)
Poz.
mousestr.exeasembler.386jjerry,
Primeticete da su duzine EXE programa koji trazi MS-DOS string i
Mouse copyright string jednake :) Ne znam zasto,ali u oba slucaja
je duzina jednaka 537 bajtova..Cak je i sadrzaj fajla vrlo slican :)
asembler.388vector,
-> #386, jjerry
<--- Primeticete da su duzine EXE programa koji trazi MS-DOS string i
<--- Mouse copyright string jednake :) Ne znam zasto,ali u oba slucaja
<--- je duzina jednaka 537 bajtova..Cak je i sadrzaj fajla vrlo slican :)
Velicina prvog fajla je 573, a drugog 537 bajtova. Nisu bas jednaki ;)
asembler.389vector,
-> #385, jjerry
<--- E pa ljudi,konacno sam uspeo..
<--- Funkcija 004Dh je sasvim tacna i pravilno dokumentovana !
<--- Kao sto je i pisalo..posle poziva te f-je,u ES:DI se nalazi
<--- copyright string za microsoft.A u Genius mouse 9.06 (moja verzija)
<--- potpis "KYE" zaista odmah prati pomenuti string..
<--- Evo vam EXE-fajla..ako treba sors (kao dokaz :> poslacu ;)
Ovaj .exe radi lepo, zaista je pisalo '*** This is Copyright 1983
Microsoft ***'. Medjutim, ne razumem kako prvi put to nisam video.
Siguran sam da sam startovao debug, ukucao niz komandi:
a 100
mov al, 4d
int 33
... i posle trejsovanja te 2 instrukcije ukucao: d es:2025, i apsolutno
sam siguran da se nista nije pojavilo osim djubreta ;) Medjutim, sad
lepo radi? Hmm, ..., ajde ipak, ;) mozda sam stavio 'd ds:2025' ili
tako nesto... anyway, evo A86 sorsa koji radi posao...
mouse.arjasembler.390jjerry,
Evo vam onaj sors za MSMOUSE Copyright string.Ovaj put je TASM
verzija ;)
mousestr.asmasembler.391jjerry,
Evo imam par pitanja ovde...
Dakle..Kad se program startuje (prepusti se njemu kontrola) DS i ES
se menjaju i pokazuju na pocetak programovog PSP-a (DS:0000 i ES:0000).
Konkretno,kada trazim neki fajl,i da bi video sta sam nasao moram da
pregledam DTA ? I da li se taj DTA ;) uvek nalazi na ofsetu 80h od
pocetka PSP-a ?
P.S Ako bi mogao neko strucan za tu oblast :) da mi posalje jedan
primer,cisto radi ilustracije :)
asembler.392jjerry,
Ajmo..sta je to FCB i cemu sluzi ? Nego..kad pozovem f-ju 11h\21h
(Find 1st file - FCB) jel' treba da sacekam neko vreme ili je vec
tu rezultat u AL a DTA pun ? Koja je procedura za trazenje fajlova ?
Nema sanse da je samo "gola" funkcija :) Pozoves i - eto ti :)
asembler.393jjerry,
Evo vam jedno programche za koje sumnjam da radi,iako ne daje neke
bezveze rezultate..Dakle,ja na pocetku f-jom 1A\21 stavim DTA na
neku bezveze adresu,onda izvucem tu istu adresu i uporedim je sa
PSP:80h i on uporno tvrdi da je DTA bas tu (??!)
Ko zna gde gresim nek' javi :)
dta.asmasembler.394jjerry,
-> #389, vectorJJ=>... i posle trejsovanja te 2 instrukcije ukucao: d es:2025, i apsolutno
^^^^
Sto bas 2025 ? Naso si da je u DI bilo 2025 ??
asembler.395vector,
-> #394, jjerry
Ů▀Ţ Sto bas 2025 ? Naso si da je u DI bilo 2025 ??
Ta funkcija mi obicno vraca 2025h u DI. :)
asembler.396space.ace,
-> #392, jjerry> Ajmo..sta je to FCB i cemu sluzi ? Nego..kad pozovem f-ju 11h\21h
To je File Control Block, zaostalo još od DOS-a 1 :). Bolje koristi
4EH (findfirst) i 4FH (findnext), samo u DS:DX strpaš pointer na
ime fajla i gotovo. Za detalje oko atributa (CX) pogledaj neki help.
> tu rezultat u AL a DTA pun ? Koja je procedura za trazenje fajlova ?
> Nema sanse da je samo "gola" funkcija :) Pozoves i - eto ti :)
To je u stvari skup funkcija, i to findfirst i findnext, a rade na
sledećem principu:
proveri prvi fajl da li odgovara kriterijumu (findfirst)
ako ne odgovara, proveri sledeći (findnext),
itd.
asembler.397sigmund,
Vidi poruku u cccc 9.434
asembler.398mdimitrijevic,
-> #391, jjerry> Dakle..Kad se program startuje (prepusti se njemu kontrola) DS i ES
> se menjaju i pokazuju na pocetak programovog PSP-a (DS:0000 i ES:0000).
> Konkretno,kada trazim neki fajl,i da bi video sta sam nasao moram da
> pregledam DTA ? I da li se taj DTA ;) uvek nalazi na ofsetu 80h od
> pocetka PSP-a ?
DTA se skoro uvek nalazi na ofsetu 80h. Možeš postaviti svoju adresu za
DTA, isto tako možeš preuzeti trenutnu adresu DTA.
Preuzimanje adrese DTA:
MOV AH,2Fh
INT 21h
ES:BX - adresa DTA
Postavljanje adrese DTA:
MOV AH,1Ah
DS:DX - adresa nove DTA
INT 21h
Pozdrav,
Marjan
asembler.399bokir,
Evo jednog shareware asemblera:
CrossFire Assembler
xfire510.zipasembler.400vector,
-> #360, van.gog> Ako neko pokrene CD-ovim (ili necim drugim) neka mi se obavezno
> javi ... thanx
Nisam pokrenuo, ali sam iskopao ovaj FAQ o programiranju CD-ROMova iz
ASM Snippets arhive. Sadrzaj fajla:
Section 0 - Availability
0.01. How can I get the latest copy of this FAQ?
Section 1 - MSCDEX Status
1.01. How do I know if MSCDEX is installed?
1.02. How do I determine the MSCDEX version?
Section 2 - CD-ROM Existence
2.01. How many CD-ROMs are present?
2.02. Which drives are CD-ROMs?
2.03. How do I get the name of the CD-ROM device driver?
Section 3 - Drive Interface
3.01. How do I open the door?
3.02. How do I close the door?
3.03. How do I unlock the door?
3.04. How do I lock the door?
3.05. How do I reset the drive?
3.06. How do I get drive status?
Section 4 - Drive Capacity
4.01. What sector size is supported?
4.02. How many sectors are on the disk?
4.03. How much data is on the disk?
Section 5 - Volume Table of Contents
5.01. How do I get the abstract file name?
5.02. How do I get the bibliography file name?
5.03. How do I get the copyright file name?
5.04. How do I read the Volume Table of Contents (VTOC)?
Section 6 - Audio
6.01. How do I find out how many tracks are on a CD?
6.02. What are Red Book and HSG formats?
6.03. How can I determine where a particular track starts?
6.04. How do I play audio?
6.05. How do I pause audio playback?
6.06. How do I resume audio playback?
cdromfaq.arjasembler.401vector,
Ajde ovako. Imam fajl XYZ.DAT i od njega treba da napravim fajl XYZ.DB
koji u sebi sadrzi nesto ovako:
db 04C,02F,001,010,0FF,0FF,013,064,0AB,008,099,0AC,0BC,0F3,0EF,085,021
db 027,0A3,08F,0C2,038,0D5,098,057,018,024,063,0EE,075,09A,048,053,0FF
Naravno, kao sto se i moze pretpostaviti, bajt 4C (hex) je prvi bajt
ulaznog fajla XYZ.DAT, 2F je drugi bajt, 01 je treci, itd, itd. Znaci, treba
mi nesto sto ce fajlove da mi prebacuje u DB format. Znam da zeljeni fajl mogu
da linkujem sa sorsom svog programa, medjutim, treba mi bas ovo. Rekoh da se
ne mucim - ovako nesto sigurno postoji, valjda je nekom zatrebalo? :)
asembler.403zeljkoj,
-> #401, vector> Ajde ovako. Imam fajl XYZ.DAT i od njega treba da napravim fajl
> XYZ.DB koji u sebi sadrzi nesto ovako:
Evo, napisao sam programčić koji radi upravo to. Iz komandne linije uzima
ime fajla koji treba obraditi, a izlaz ispisuje na ekran (možeš ga usmeriti u
fajl pomoću > ). Prilično je spor, jer čita bajt po bajt, ali valjda će
poslužiti...
file2db.exeasembler.404vector,
-> #403, zeljkoj> Evo, napisao sam programcic koji radi upravo to. Iz komandne linije uzima
> ime fajla koji treba obraditi, a izlaz ispisuje na ekran (mozes ga
> usmeriti u fajl pomocu > ). Prilicno je spor, jer cita bajt po bajt, ali
> valjda ce posluziti...
Program je OK, samo mi treba jos nesto: obavezan je karakter '0' pre
svakog bajta, dok 'h' (posle bajta) nije potreban, zbog toga sto A86 kompajler
hex brojeve obelezava nulom ispred broja. Pored toga, trebalo bi samo smanjiti
broj tih bajtova u jednom redu sa 20 na 15. :)
asembler.405firus,
-> #401, vector> Ajde ovako. Imam fajl XYZ.DAT i od njega treba da napravim fajl
> XYZ.DB koji u sebi sadrzi nesto ovako:
Seo sam i napisao jedan takav utility. Šaljem ga prikačen uz
poruku. Poziva se iz komandne linije sa:
DB ime_ulazne_datoteke širina [ime_labele]
gde je širina broj elemenata koji slede iza DB, a opcioni parametar
labela je ime labele koja se daje tome DB bloku. Kao rezultat rada
dobijaš .INC datoteku (valjda je neka konvencija da se include
datoteke za asembler (prez)imenuju sa .INC B).
BTW, tekst koji se ispisuje je na engleskom, jer sam nekako
navikao da utility-je tako radim (ko zna, možda dospe i u
inostranstvo, pa da se ne pate sa srpskim ;)
P.S. Eh, da, program je freeware na nivou sorsa.
db.zipasembler.406vector,
-> #405, firus> Seo sam i napisao jedan takav utility. Saljem ga prikacen uz
> poruku. Poziva se iz komandne linije sa:
Thx, program je OK. :)
asembler.407mdimitrijevic,
-> #404, vector> Program je OK, samo mi treba jos nesto: obavezan je karakter '0' pre
> svakog bajta, dok 'h' (posle bajta) nije potreban, zbog toga sto A86
> kompajler hex brojeve obelezava nulom ispred broja. Pored toga, trebalo bi
> samo smanjiti broj tih bajtova u jednom redu sa 20 na 15. :)
Evo ti mog programa BIN2TXT koji sam napisao još 1995 za svoje potrebe.
Pruža ti mogućnost podešavanja ispisa BYTE-a, WORD-a i DWORD-a, takođe biraš
kolika je tabulacija i broj podataka u redu. Postoji i mogućnost izbora od kog
bajta iz datoteke da počne sa čitanjem itd.
Probaj, ovo će ti verovatno rešiti problem.
Naravno moras preusmeriti ispis u datoteku sa '>'.
bin2txt.exeasembler.408vector,
Koji je najbrzi nacin za prenos nekoliko K sa jedne memorijske lokacije
na drugu? Da li je u pitanju `rep movsw'?
asembler.409mdimitrijevic,
-> #408, vector> Koji je najbrzi nacin za prenos nekoliko K sa jedne memorijske lokacije
> na drugu? Da li je u pitanju `rep movsw'?
REP MOVSD ukoliko koristiš 386+ procesor. Inače REP MOVSW. Moguće je
ponekad ostvariti veće brzine ukoliko koristiš STOSD i petlju sa CX, ali to
zavisi od onoga što pokušavaš da uradiš. Jer ukoliko radiš filovanje 3D objekta
može se desiti da ti adresa koju puniš sa REP MOVSB bude na neparnom broju u
kom slučaju imaš malo usporenje itd. A i ovo zavisi da li se radi o 386+ ili o
Pentiumu. Takođe treba se osloniti na to da adresa rutine bude na parnoj adresi
jer će u slučaju ulaska u keš procesora mnogo brže da se izvršava. Ovo se sve
odnosi na pisanje DEMO-a gde ti je važna brzina do maximuma. Takođe sam na ovaj
način pisao jedan komercijalni program za puštanje animacija gde je trebalo
puštati animacije u visokoj rezoluciji (VESA 2.0) uz najmanje moguće usporenje
tj. uz najveću moguću brzinu (uz korišćenje linearne memorije VESA 2.0).
asembler.410jjerry,
-> #409, mdimitrijevic>>Jer ukoliko radis filovanje 3D objekta
>>moze se desiti da ti adresa koju punis sa REP MOVSB bude na
>>neparnom broju u kom slucaju imas malo usporenje itd.
Pojasni malo :) posto sam video mnogo onih demo-a koje spominjesh
sa interesantnim 3D objektima,pa me malo interesuje :)
Pozdrav!
§JţÔÔśř
asembler.411mdimitrijevic,
-> #410, jjerry>>> Jer ukoliko radis filovanje 3D objekta
>>> moze se desiti da ti adresa koju punis sa REP MOVSB bude na
>>> neparnom broju u kom slucaju imas malo usporenje itd.
>
> Pojasni malo :) posto sam video mnogo onih demo-a koje spominjesh
> sa interesantnim 3D objektima,pa me malo interesuje :)
Pojasni šta da pojasnim :) Interesuje te kako se radi filovanje 3D
poligona ili uopšte kako se rade kompletne rutine ?
Što se onog gore tiče (citiranog), radi se o tome da umesto MOVSB treba
da piše STOSB (lapsus tastaturis) i o tome da se parnim adresama brže pristupa
tako da ako pišeš brzu rutinu za 3D filovanje uradiš ALIGN na parnu adresu tako
će i sama petlja biti mnogo brža a i deo za filovanje može da upadne ceo u
interni keš (ovo se najviše odnosi na Pentium, ali se ovakve optimizacije rade
od 386 do Pentiuma). Takođe se rutine pišu tako da se podese na odgovarajući
način da bi keš procesora u najvećem broju pristupa nalazio baš onu naredbu
koju treba. To mi je malo teško da objasnim.
Itd....
asembler.412jjerry,
-> #411, mdimitrijevic>>> Pojasni malo :) posto sam video mnogo onih demo-a koje spominjesh
>>> sa interesantnim 3D objektima,pa me malo interesuje :)
>>
>> Pojasni sta da pojasnim :) Interesuje te kako se radi
>>filovanje 3D poligona ili uopste kako se rade kompletne rutine ?
Ma samo filovanje 3D poligona...izgleda mnogo interesantno,posto
nikad nisam pravio 3D animaciju svojim rendererom :)
>> Sto se onog gore tice (citiranog), radi se o tome da umesto
>>MOVSB treba da pise STOSB (lapsus tastaturis) i o tome da se parnim
>>adresama brze pristupa
Razumelo se :) Btw. zashto se parnim adresama brzhe pristupa ?
Pozdrav!
§JţÔÔśř