asembler.1ppekovic,
Volite li assembler? da? ovo je tema za Vas.
Paya
asembler.2ciki,
Ho!
Ajde pogledajte ovo sto vam saljem.Treba da mi izda najmanji clan
niza ali nece ;(((.
Pozdrav Ciki!
ciki.asmasembler.3.sima,
═╣ Ajde pogledajte ovo sto vam saljem.Treba da mi izda najmanji clan
Evo pa ako ti nešto nije jasno javi mi na mail
ciki.asmasembler.4mivel,
Mozda ce ovo pomoci...
cikiii.zipasembler.5mstanic,
>> Ajde pogledajte ovo sto vam saljem.Treba da mi izda
>> najmanji clan niza ali nece ;(((.
POR1 DB 'NAJMANJI BROJ JE '
ovde si zaboravio terminator stringa '$'za funkciju 09h
K1 DB 1
ovo ti je višak
NIZ DB 1,2,3,5,2,3,5,1,3,0
definisao si niz bajtova a kasnije porediš reči,
pogotovo je važna poslednja nula. Ako imaš mnogo sreće
da ti asembler iza nje ubaci još jednu nulu biće dobro,
ali ako bude bilo šta drugo neće valjati.
ovde ti nedostaje nešto kao
mov dx, seg NIZ
mov ds,dx
MOV SI, OFFSET NIZ
MOV AX,[SI]
PETLJA: INC SI ;UVECAJ BROJAC ZA 1 pocevsi od 2
MOV CX,[SI]
JCXZ KRAJ
ako je u CX nula (izgleda da si mislio da to bude
terminator niza koji pretražuješ) program se izvršava od
labele KRAJ što znači da će u regularnim uslovima
rezultat uvek biti nula
CMP CX,AX
JS MINIM
JMP PETLJA
MINIM: XCHG AX,CX
JMP PETLJA
KRAJ:
MOV DI, OFFSET MIN
MOV [DI],CX
ovde primeti da ne bi bilo loše da ti NIZ bude u asci-ju
ili da ga ovde pretvoriš u asci.
Nisam siguran ali mi se čini da si početnik sa asemblerom
(inkrementiraš SI za jedan, a potom sa te adrese podatak
prenosiš u CX, razumeš na šta mislim).
Sa tim sam probao i dobio neke rezultate ali to treba
doterati.
Ako i dalje imaš problema opiši PROBLEM pre nego li
postaviš pitanje.
asembler.6ciki,
>**> >> Ajde pogledajte ovo sto vam saljem.Treba da mi izda
>**> >> najmanji clan niza ali nece ;(((.
>**>
>**> POR1 DB 'NAJMANJI BROJ JE '
>**> ovde si zaboravio terminator stringa '$'za funkciju 09h
To je Ok. Vidis ja sam program napravio, pa ga istampao, pa
obrisao, pa ga prekucao bez "$"
>**> NIZ DB 1,2,3,5,2,3,5,1,3,0
>**> definisao si niz bajtova a kasnije porediš reči,
>**> pogotovo je važna poslednja nula. Ako imaš mnogo sreće
>**> da ti asembler iza nje ubaci još jednu nulu biće dobro,
>**> ali ako bude bilo šta drugo neće valjati.
>**>
>**> ovde ti nedostaje nešto kao
>**> mov dx, seg NIZ
>**> mov ds,dx
>**>
>**> MOV SI, OFFSET NIZ
>**> MOV AX,ŠSIĆ
>**> PETLJA: INC SI ;UVECAJ BROJAC ZA 1 pocevsi od
>**> 2 MOV CX,ŠSIĆ
>**> JCXZ KRAJ
>**> ako je u CX nula (izgleda da si mislio da to bude
>**> terminator niza koji pretražuješ) program se izvršava
>**> od labele KRAJ što znači da će u regularnim uslovima
>**> rezultat uvek biti nula
>**> ....................................
>**> ovde primeti da ne bi bilo loše da ti NIZ bude u
>**> asci-ju ili da ga ovde pretvoriš u asci.
Pa fora je u tome i bila da mi na CX bude kraj niza.
Inace ne zameri previse na velikim glupostima koje sam
nabacao u onaj listing, stvar sam radio u 4:00am pa mi
se vrlo spavalo(da ti ne pricam da mi racunarstvo predaje
profesor matematike koji je silom prilika "regrutovan" za
ovo sta je sada.)
>**> Nisam siguran ali mi se čini da si početnik sa
>**> asemblerom (inkrementiraš SI za jedan, a potom sa te
>**> adrese podatak prenosiš u CX, razumeš na šta mislim).
U pravu si da sam totalni pocetnik, ali ko radi taj i gresi ;>
>**> Ako i dalje imaš problema opiši PROBLEM pre nego li
>**> postaviš pitanje.
Veruj mi da ga mogu opisati ne bih ga ni slao i vas mucio,
vec bih pokusao i verovatno uradio sam!
KORISTIM PRILIKU DA SE ZAHVALIM SVIMA KOJI SU MI POMOGLI!
P.S. PROGRAM SAM SAM URADIO IDUCEG JUTRA ZA cca 30MIN,POSTO
SAM SE UDUBIO U CITANJE KNJIGE.
POZRAV CIKI!
asembler.7robert,
Drug me pitao sledeće:
Šta se dešava pri upotrebi instrukcija SUB i CMP i NEG na neoznačene cele
brojeve? Da li se uvek pretvaraju u komplement 2 (mislim da to važi
sigurno za NEG instrukciju) ili ALU nekako "zna" da su u pitanju
neoznačeni (unsigned) brojevi.
Konkretno, šta se TAžNO dešava u procesoru 8086 kod sl. instrukcije:
SUB AX, BX ; AX = 1111000000000000 (61440)
; BX = 1110000000000000 (57344)
Prijatelj kaže da ima dve knjige o ASM-u ali nigde nije mogao da nađe
ništa konkretno o proceduri za neoznačene brojeve. Ima samo napomena da
postoji neki "fazon" kod tih brojeva (što se oduzimanja i CMP-a tiče).
asembler.8dejanr,
Mikroprocesor "pojma nema" da li su celi brojevi sa kojim operiše označeni
ili neoznačeni, taj znak je samo stvar tumačenja rezultata. Dakle, delovanje
je uvek isto, i generišu se carry i overflow flegovi. Ako radiš sa označenim
brojevima, u daljim testovima koristiš overflow flag a ako smatraš da
su neoznačeni, onda carry. Ovo je malo uprošćeno tumačenje, za više
informacija pogledaj recimo tekst o 486 iz prošlih "Računara".
asembler.9ciki,
Ho!
Imam 1 pitanjce.
1. i glavno,i za sada jedino.
Ima li neko uradjenu proceduru za deljenje 2 broja na
zadati broj decimalnih mesta (1/3=0.33333)?
Pozdrav Ciki!
asembler.10ficus,
ej ja imam nesto mada i taj program nije bas ok
ovako
program ti tacuna samo za kolicnik manji od 1
ne radi u dosu (pojma nemam zasto i ja sam pocetnik) i zato ga i saljem ranije
tj jos ga nisam zavrsio
ali ono sto me buni je radi kad ga startujem u td-u
tako da ako neko zna gde sam zabrljo molim ga da mi javi
inaceja sam relativno skoro poco da se zezam sa asm-om pa program bas i nije
neki kvalitet
toliko zasad
cu
ficus.asmasembler.11ficus,
E evo uradio sam do kraja greska je bila prilicno glupa zaboravio sam mov dx,0
pa se zato malo cudno ponasao inace ako ima pitanja za prg. javi mi u mail
inace sad je program kompletno gotov ali nisam siguran da svejedno nema neki
bug :(( srecno.
cu
ficus.asmasembler.13todorp,
Jelte sta mu dodje i ako moze malo detaljnije objasnjenje:
ax=0x3400
int 21h
Pozdrav od Todora.
PS. Valjda ima neke veze sa idle interaptom.
asembler.14ficus,
Koliko sam ja provalio to sluzi za petljanje sa tsr-ovima da budem nesto
precizniji imas u ah=34h i posle izvrsenog poziva INTERAPTA IMAS FAR ADRESU
NEKOG DOSOVOG FLAGA u es:bx (koliko sam ja ukapiro) i taj fleg je setovan ako
dos izvrsava neku funkciju uzgred u masm 6.0 qhelpu taj flag zovu InDos flag pa
sad posto me trenutno tsr-ovi ne zanimaju (nisam stigo do te lekcije u knjizi
:))) ) ja trenutno neznam na koji fazon flag funkcionise (koj bit je zasta i
kako je uopste organizovan) ali probacu da iskopam nesto o tome inace isto
kolko sam ukapiro taj flag bi trebalo da bude proveren u tsr-u da li je
postavljen da bi se obezbedilo nesmetano koristjenje dosa e sad u noivijim
verzijama dos-a ima jos neki registar uz taj indos i taj drugi sluzi (opet
koliko sam pokapiro) da bi masina mogla da prekine izvrsavanje tekuceg programa
kad se blokira (koliko to funkcionise svima je poznato :((((( ) ako ti treba
neko objasnjenje u vezi flabgova ostavi poruku da nastavim da kopam po help-u)
FICUS
asembler.15todorp,
> dos izvrsava neku funkciju uzgred u masm 6.0 qhelpu taj flag zovu
> InDos flag pa sad posto me trenutno tsr-ovi ne zanimaju (nisam stigo
Pa ja bas i pokusavam da pisem neki tsr pa bi ti bio zahvalan da mi
opises taj indos flag ako ti nije problem.
Pozdrav od Todora.
asembler.16macak,
█ ... InDos fleg.
Nisam neki strucnjak, ali znam da moze da se iskoristi kao neka
vrsta signalizacije kada je DOS slobodan. Moze se pri instalaciji
programa sacuvati vrednost InDos flega i posle se proveravati da
li je DOS "slobodan". Ovo je korisno kada program stalno sam
proverava da li su ispunjeni specificni uslovi za njegovo
startovanje (recimo presrece interapt 08H).
Mislim da nema neke vece koristi ako se program startuje samo pri
pozivu odredjenog prekida.
Uostalom, evo sta kaze lista interapta (taken from Sezam) :
--------------------------------------------
INT 21 - DOS 2+ - GET ADDRESS OF INDOS FLAG
AH = 34h
Return: ES:BX -> one-byte InDOS flag
Notes: the value of InDOS is incremented whenever an INT 21 function
begins
and decremented whenever one completes
during an INT 28 call, it is safe to call some INT 21 functions
even
though InDOS may be 01h instead of zero
InDOS alone is not sufficient for determining when it is safe to
enter DOS, as the critical error handling decrements InDOS and
increments the critical error flag for the duration of the
critical
error. Thus, it is possible for InDOS to be zero even if DOS is
busy.
the critical error flag is the byte immediately following InDOS in
DOS 2.x, and the byte BEFORE the InDOS flag in DOS 3+ (except
COMPAQ
DOS 3.0, where the critical error flag is located 1AAh bytes
BEFORE
the critical section flag)
For DOS 3.1+, an undocumented call exists to get the address of
the
critical error flag (see AX=5D06h)
SeeAlso: AX=5D06h,AX=5D0Bh,INT 28
--------------------------------------
Ne znam tacno kako bi to izgledalo i asembleru, ali u Pascalu moze
da se uradi nesto ovako:
var indos:^boolean;
....
....
r.ah:=$34;msdos(r);
indos:=ptr(r.es,r.bx);
...
Onda proveravas InDos, ako je indos^=true, mozes da startujes
proceduru.
Bilo bi lepo kada bi neko nesto opsirnije napisao o tome.
asembler.17ficus,
Nazalost ja sam pocetnik sto se asemblera tice al na srecu dokopo sam se
relativno dobre literature tako da cu pokusati nesto da provalim ako mi uspe
javicu. inace tsr-ovi me nisu puno zanimali a i taj flag nemora uvek da se
koristi (ne u svakom tsr-u) koliko sam ja ukapiro ali svejedno sto ne probas da
pogledas primere koji idu uz masm ako oces mogu da ti ih posaljem.
asembler.18todorp,
> ne probas da pogledas primere koji idu uz masm ako oces mogu da ti
> ih posaljem.
Mislim da sam ga provalio. Ako je to samo varka i zaglavim ima da vristim za
pomoc ;)))) Hvala na ponudi!
Pozdrav od Todora.
asembler.19ciki,
>**> Nazalost ja sam pocetnik sto se asemblera tice al na
>**> srecu dokopo sam se relativno dobre literature
KOJE ??????????????????????
Pozdrav Ciki!
asembler.20ficus,
> >**> Nazalost ja sam pocetnik sto se asemblera tice al na
> >**> srecu dokopo sam se relativno dobre literature
>
> KOJE ??????????????????????
Microsoft macro assembler programers guide (v6.0)
knjiga ide uz masm ali nazalost imam samo kopiju koja ne moze dalje da se
kopira jer su tako spojenoi listovi a i ne verujem da bi uspeo nesto da
procitas ali sve jedno ako negde natrapas na nju kupuj obavezno.
nemas nista (skoro nista) o dosovim interaptima ali o svemu ostalom imas a sto
se interapata tice imas ih u quick help-u i pchelp-u (ili bese helppc) ima na
sezamu u info-u.
asembler.21jsalai,
Potrban mi je neki (Cross)assembler za 8085.
Molim narod Sezamovski, da kaze nesto o tome.
Za veliku nuzdu :) moze i samo set instrukcija
Veliki pozdrav
jsalai
asembler.22drpr,
Zdravo svima!
U orka konferenciji sam video da ljudi traže "disasemblere i
krosasemblere" i to koliko sam zametio za neke čipove i to
specificirane.Mene zanima može li neko da mi objasni šta su to
disasembleri i krosasembleri i još da navedem , ako ima nekog
značaja, da se u asembler malko razumem. E sad ako sam ja gore
navedene pomešao sa "običnim" asemblerom , dozvoljavam smeh u
velikim količinama :))))
cope
asembler.23dejanr,
>> Mene zanima može li neko da mi objasni šta su to
>> disasembleri i krosasembleri
Krosasembler - program pomoću koga, recimo, na PC-ju asembliraš
kod za Motorolu 68000 i onda to na neki način (preko emulatora?)
prebaciš na ploču sa tim 68000 radi testiranja. Dakle, asembliranje
se vrši na računaru na kome se program ne izvršava niti se (obično)
može izvršavati.
Disasembler - program koji uzme objektni kod (niz bitova) i od
njega napravi asemblerski listing. Ideja je da docnije taj
asemblerski listing analiziraš da bi video kako program radi.
Stvar ima smisla ako ti nisi autor tog programa, jer inače imaš
daleko kvalitetniji listing koji si sam pisao i asemblirao u
izvršni kod.
asembler.24vasic,
> Mene zanima može li neko da mi objasni šta su to
> disasembleri i krosasembleri i još da navedem , ako ima nekog
> značaja, da se u asembler malko razumem.
Disasembler = asembler ** -1 ;) Što će reći, to je program koji od
izvršnog koda ume (sa manje ili više uspeha) da napravi izvorni (*.ASM,
*.LST i slično). Odličan primer ovakvog programa je Sourcer, mada za
nuždu i Debug (komanda 'U') može da posluži.
Krosasembler je asembler koji se izvršava na jednoj mašini (PrC-u,
recimo) a prevodi programe pisane za nešto sasvim drugo (recimo Z80).
Onda tako prevedeni program bilo kako prebaciš na Spektruma i on tamo
možda čak i radi. :)
Analogno ovome, kroskompajleri su kompajleri koji rade na jednoj
mašini a proizvode kod koji se izvršava na nekoj drugoj.
asembler.25nenadb.,
>> Potrban mi je neki (Cross)assembler za 8085.
>> Molim narod Sezamovski, da kaze nesto o tome.
Javi mi se na MAIL. Imam i racunar sa 8085 (TRS-102),
a i original INTEL-ovu tehnicku i softwersku dokumentaciju,
u obliku jedne jako lepe 100-strane knjizice.
asembler.26zsiz,
#Potrban mi je neki (Cross)assembler za 8085.
#Molim narod Sezamovski, da kaze nesto o tome.
#Za veliku nuzdu :) moze i samo set instrukcija
Imam XASM za 6800 i za 8748, u jednoj arhivi.
Ako ima zainteresovanih neka se jave.
Pozdrav.
zsiz
asembler.27drpr,
-> Krosasembler je asembler koji se izvršava na jednoj mašini
-> (PrC-u,
Hvala i tebi i dejanu na lepim odgovorima!
cope
asembler.28spantic,
> Imam XASM za 6800 i za 8748, u jednoj arhivi.
> Ako ima zainteresovanih neka se jave.
Nego :)
Još da se neko javi i za 68000...
Hvala :)
asembler.29mstanic,
>> Potrban mi je neki (Cross)assembler za 8085.
>> Molim narod Sezamovski, da kaze nesto o tome.
Vidi u konferenciji ORKA:electron uz neku poruku je
zakačen SW generički krosasembler za razne mikro-
procesore, a ako nema za 8085 (mada mislim da ima)
ima uputstvo kako da ga dodaš u tabelu.
Sad nađoh gde je, uradi sledeće i eto ti krosasembler.
CONF JOIN ORKA.1
CONF FILE 3.193 (;)
asembler.30zsiz,
#> Imam XASM za 6800 i za 8748, u jednoj arhivi.
#> Ako ima zainteresovanih neka se jave.
# Nego :)
Evo ide.
Pozdrav.
zsiz
68008748.zipasembler.31spantic,
> Evo ide.
Svaka čast! Hvala :)
asembler.32biki,
Imam problema da inicijalizujem koprocesor
Postavim u MASM-u .287 ili .07 i upisem
koprocesorske naredbe, ali posle kompajliranja
koje prodje bez gresaka, program kad ga
startujem jednostavno blokira, kao da nemam
koprocesorH. U cemu je caka?
HHHHHHHHHHHH
asembler.33zsiz,
# Svaka čast! Hvala :)
No problem :)
asembler.34jsalai,
> a i original INTEL-ovu tehnicku i softwersku dokumentaciju,
Da malko samo pojasnim, to treba jednom mom poznaniku,
okorelom hardverasu, koji hoce da promeni program za
industrijsku vagu, i to strpa u odgovarajuci EPROM. Bojim
se da to ipak nece moci bez XAssemblera.
U svakom slucaju VELIKO hvala, a ako bude neophodno da se
konsultuje literatura, seticu se Tebe
pozdrav jsalai
PS. Zahvaljujuci mstanicu nadjen krosasembler!
asembler.35jsalai,
> zakacen SW genericki krosasembler za razne mikro-
> procesore, a ako nema za 8085 (mada mislim da ima)
Hvala puno na pomoci
jsalai
asembler.36nenadb.,
>> industrijsku vagu, i to strpa u odgovarajuci EPROM. Bojim
I gde me nadje, ja zbog te proklete vage i nabavi knjigu.
P.S. Negde mi se zaturio i neki visak delova koji je isao u nju...
asembler.37nicic,
Potreban mi je Cross Assembler za 6502 ili 6510.
Hvala, Ica
asembler.38dtadic,
>> Potreban mi je Cross Assembler za 6502 ili 6510.
Uz neku od poruka u ORKA:electron nalazi se jedan univerzalni
krosasembler, podrzava i 65(C)02 (ne i 6510).
DT
asembler.39tomae,
>>> Potreban mi je Cross Assembler za 6502 ili 6510.
>
> Uz neku od poruka u ORKA:electron nalazi se jedan univerzalni
> krosasembler, podrzava i 65(C)02 (ne i 6510).
orka.1 3.193
asembler.40petkovicd,
Cini mi se da ovo pitanje treba da se nadje bas ovde. Ucili smo ovih dana na
faksu predstavljanje naredbi u racunarskom sistemu i pored ostalog nacine
adresiranja. Medjutim to je bilo prilicno traljavo objasnjeno. Da li neko moze
nesto opsirnije da kaze o:
- registarskom direktnom adresiranju;
- -||- indirektnom adresiranju;
- memorijsko direktno i indirektno ad.
- registarsko indirektno adr. sa pomerajem
- relativno adresiranje;
- sve vrste adr. sa autoinkrementiranjem( dekrementiranjem )
Dejan
asembler.41mstanic,
Možda nije vezano za temu ali da li neko ima simulator
za 8051 na PC-ju.
Ako postoji zamolio bih da se javi.
asembler.42mjova,
> adresiranja. Medjutim to je bilo prilicno traljavo
> objasnjeno. Da li neko moze nesto opsirnije da kaze o:
imaš lep tekst o tome (na engleskom) u fajlu okačenom uz neku moju
poruku u ovoj teme (ne znam koja conf). mislim da se zove asmhelp.arj
ili tako nekako. nije dugačka arhiva, ali je moćna!
asembler.43ficus,
> imaš lep tekst o tome (na engleskom) u fajlu okačenom uz neku moju
> poruku u ovoj teme (ne znam koja conf). mislim da se zove
> asmhelp.arj
mislim da je asmtutor.arj il zip
asembler.44spantic,
Imam jedan problem koji se na žalost :( mora realizovati u asembleru. A to
je realizacija potprograma koji ostvaruje kašnjenje od 1s sa aktivnim čekanjem.
Ima neko rešenja?
asembler.45todorp,
> Imam jedan problem koji se na zalost :( mora realizovati u asembleru. A
> to je realizacija potprograma koji ostvaruje kasnjenje od 1s sa aktivnim
> cekanjem. Ima neko resenja?
Pa pravo da ti kazem, nemam pojma sta mu to dodje aktivno cekanje. Ako ti
treba cekanje sta mislis o:
mov cx,neki broj koliko ti treba da ceka
wait:
loop wait
Pozdrav od Todora.
asembler.46ivanna,
> Imam jedan problem koji se na zalost :( mora realizovati u
> asembleru. A to je realizacija potprograma koji ostvaruje
> kasnjenje od 1s sa aktivnim cekanjem.
Da mozda ne treba da polazes
'projektovanje mikroprocesorskih sistema'? ;)
Ako si ET, taj zadatak ne moras da radis.
Ako nisi, dao mi je neko resenje tog zadatka, pa ako ti
i dalje treba, mail-uj me. Uzgred, te domace ti najverovatnije
niko nece ni pregledati, jer kako sam ja cula ocenu za domaci
dobijas u zavisnosti od ocene na ispitu.
(ovaj moj odgovor bas i nije za ovu konf.) :)
asembler.47vasic,
> Pa pravo da ti kazem, nemam pojma sta mu to dodje aktivno cekanje. Ako ti
> treba cekanje sta mislis o:
> mov cx,neki broj koliko ti treba da ceka
> wait:
> loop wait
No-no. :) Sve drugo slobodno radi, samo ovo ni slučajno nemoj. Razlog je
očigledan: različite mašine, različite brzine => različito čekanje.
Predlog za spantića: Zašto ne bi iskoristio BIOS-ov sat? Na adresi
0:46Ch imaš jedan DWORD koji sadrži trenutno vreme u 1/18.2 sekunde.
Dakle, očitaš početnu vrednost (što ni u kom slučaju ne mora da se radi
iz asemblera), vrtiš se u petlji dok se ne uveća za 18 (ako ti nije
previše bitna greška od ¸10ms koju ovako praviš), i to ti je to.
asembler.48spantic,
> Da mozda ne treba da polazes
> 'projektovanje mikroprocesorskih sistema'? ;)
Pa videćeš me na polaganju, taj mi je zaostao. Ali nije u tome stvar. Koliko
sam ja čuo uopšte nije nužan. Uostalom uradio sam lepo projekat :) Poenta je
da mi je zatrebao a ja asember obožavam nemaš ideje.
> i dalje treba, mail-uj me. Uzgred, te domace ti
> najverovatnije niko nece ni pregledati, jer kako sam ja
> cula ocenu za domaci dobijas u zavisnosti od ocene na
> ispitu.
Kada je reč o Đuri i njegovim kućnim čarolijama moglo bi se verovati. Ali
nema šanse da se tako lako izvuče ;)
asembler.49drpr,
-> mov cx,neki broj koliko ti treba da ceka
-> wait:
-> loop wait
Da ali sve zavisi od mašine na kojoj će se to izvršavati a
čoveku treba da čeka baš jednu sekundu. Predložio sam panti u
klubu da skine s dos fj-om vreme pa da čeka malko pa da opet
skine sve dok ne bude 1sec ali mu se takva ideja ne skida znači
neće da se bavi int-ovima :))
cope
asembler.50spantic,
> Predlog za spantića: Zašto ne bi iskoristio BIOS-ov sat?
> Na adresi 0:46Ch imaš jedan DWORD koji sadrži trenutno
> vreme u 1/18.2 sekunde. Dakle, očitaš početnu vrednost
> (što ni u kom slučaju ne mora da se radi iz asemblera),
> vrtiš se u petlji dok se ne uveća za 18 (ako ti nije
> previše bitna greška od ¸10ms koju ovako praviš), i to ti
> je to.
Pa jeste da nije velika greška ali greška jeste :) Imam takvo rešenje.
Ima li neko bolje? Hvala u svakom slučaju :)
asembler.51todorp,
> No-no. :) Sve drugo slobodno radi, samo ovo ni slucajno nemoj. Razlog je
> ocigledan: razlicite masine, razlicite brzine => razlicito cekanje.
Potpuno si u pravu ali sam ja mislio da je upitanju jedna masina sa
specificnim programom koji bi se na njoj vrteo. Posle sam se setio da je to
glupost i da je najbolje ako hoce neku kompatabilnost da koristi int 8 ili int
1c. Medjutim to komplikuje (ne mnogo iz C-a sa getvect i setvect do ide
strava). Prema tome, izvinjavam se na ne razmisljanju :))
Pozdrav od Todora.
asembler.52nenadp,
>> Predlog za spantica: Zasto ne bi iskoristio BIOS-ov sat?
>> Na adresi 0:46Ch imas jedan DWORD koji sadrzi trenutno
>> vreme u 1/18.2 sekunde.
:)))))))))))))))))))))) nemoj da mislis da se tebi smejem tvoja ideja je
OK ali mi ovaj Srdjanov problem mnogo lici na domaci iz "Mikroprocesorskih
sistema" pa sam se nasmejao pri pomisli kakvu bi facu slozio asistent kada
bi video takvo resenje.
Pozdrav, Nenad
P.S. Nagradno pitanje sta je pisac hteo da kaze sa "aktivno cekanje" nevidim
kako bi kruzenje u mrtvoj petlji 1 sec moglo da se nazove aktivnim cekanjem a
opet da se radi nesto na interapt bazi malo je veci nivo za ono sto se ocekuje
od njih. Ajd ako neko ima ideju sta doticni termin znaci neka javi jer treba
da uradim domaci mladjim koleginicama ;)))).
asembler.53dgrbic,
:: Predlog za spantića: Zašto ne bi iskoristio BIOS-ov sat?
:: Na adresi 0:46Ch imaš jedan DWORD koji sadrži trenutno
:: vreme u 1/18.2 sekunde.
Ako nije bitno da stvar radi na XT-u, bolje rešenje je poziv INT 15H,
podfunkcija 86H koja radi čekanje, interval se zadaje u CX:DX u
mikrosekundama, znači stavi 1000000 (CX = 000FH, DX = 4240H), AH = 86H,
int 15H.
To jest, ako treba samo čekati.
Ako u međuvremenu treba još nešto raditi (proverava da li je pritisnut neki
taster i slično) pozove int 15H, f-ja 83H, CX:DX isti, a ES:BX pokazuje na
bajt čiji najviši bit se setuje kad interval istekne.
AL = 0 ako se postavlja interval, AL = 1 ako se otkazuje čekanje.
asembler.54dnikolic,
>> Pa pravo da ti kazem, nemam pojma sta mu to dodje aktivno cekanje.
Grizes nokte dok cekas.
dn
asembler.55vasic,
> Srdjanov problem mnogo lici na domaci iz "Mikroprocesorskih
> sistema" pa sam se nasmejao pri pomisli kakvu bi facu slozio asistent
> kada bi video takvo resenje.
Š'ooo? Jel' zato što je mašinski zavisno ili zbog one greške od 10ms ili
je nešto treće u pitanju? Uostalom, čovek je pitao u PC.SOFT:asembler pa
ja k'o velim... :) ^^
asembler.56vasic,
> Ako nije bitno da stvar radi na XT-u, bolje rešenje je poziv INT 15H,
> podfunkcija 86H koja radi čekanje, interval se zadaje u CX:DX u
Ako jeste bitno da radi na XT-u, onda možeš da promeniš frekvenciju
standardnog tajmer interapta. To iziskuje da pišeš sopstveni int 8
handler, ali zato možeš od početnih 18.2Hz da ga usitniš sve do par
stotina kHz. ;)
Mada, sem ako bi mi baš dobro gorelo pod nogama, ja _tu_ mečku radije ne
bih dirao. :)
asembler.57nenadp,
>> S'ooo? Jel' zato sto je masinski zavisno ili zbog one
>> greske od 10ms ili je nesto trece u pitanju? Uostalom,
>> covek je pitao u PC.SOFT:asembler pa
Ma nije greska u pitanju nego dal asistent zna sta je to BIOS ;))))).
Pozdrav, Nenad
asembler.58vitez.koja,
#=> mov cx,neki broj koliko ti treba da ceka
#=> wait:
#=> loop wait
Sad jos reci da je to univerzalno resenje od XTa do 486...
asembler.59spantic,
> sistema" pa sam se nasmejao pri pomisli kakvu bi facu
> slozio asistent kada bi video takvo resenje.
Što se Đure tiče sve će taj da progura ;) A takvih rešenja će se nagledati.
Pogotovo što se insistira na 8086.
> P.S. Nagradno pitanje sta je pisac hteo da kaze sa
> "aktivno cekanje" nevidim kako bi kruzenje u mrtvoj petlji
> 1 sec moglo da se nazove aktivnim cekanjem a opet da se
> radi nesto na interapt bazi malo je veci nivo za ono sto
> se ocekuje od njih. Ajd ako neko ima ideju sta doticni
> termin znaci neka javi jer treba da uradim domaci mladjim
> koleginicama ;)))).
Pravo da kažem meni je interapt jedino prihvatljivo rešenje. Tako sam ga
na kraju naručiocu i uradio :) Kvaka je u tome što sam u međuvrenu saznao
da ipak i ja moram da radim te zadatke iako sam spremio projekat :(
E da, nisam Vasicu odgovorio ( izvini ):
>>> Predlog za spantica: Zasto ne bi iskoristio BIOS-ov sat?
>>> Na adresi 0:46Ch imas jedan DWORD koji sadrzi trenutno
>>> vreme u 1/18.2 sekunde.
Neprihvatljivo, jer rešenje se i radi univerzalno. Računa se da je 8086 u
ovom slučaju procesor kontrolera.
asembler.60spantic,
> Ako nije bitno da stvar radi na XT-u, bolje rešenje je
> poziv INT 15H, podfunkcija 86H koja radi čekanje, interval
> se zadaje u CX:DX u mikrosekundama, znači stavi 1000000
> (CX = 000FH, DX = 4240H), AH = 86H, int 15H.
Da, bilo je potrebno.
U svakom slučaju hvala na pomoći :)
Naravno, puno hvala svima koji su se javili :)
asembler.61tomae,
> P.S. Nagradno pitanje sta je pisac hteo da kaze sa "aktivno
> cekanje" nevidim kako bi kruzenje u mrtvoj petlji 1 sec moglo da se
> nazove aktivnim cekanjem a opet da se radi nesto na interapt bazi
> malo je veci nivo za ono sto se ocekuje
Ako je 'aktivno čekanje' ono što ja mislim da bi trebalo da bude
onda bi se čekanje moralo realizovati preko nekog timer-a, a ono
aktivno preko reakcije na interapt. Drugo, nisam primetio na kom
hardveru treba to realizovati
asembler.62dejanr,
Kao kroz maglu prisećam se da sam nekad davno imao nekakav disasembler
OBJ fajlova, ali ajd' sad nađi ga... Imam jedan .OBJ fajl, pisan na
nepoznatom jeziku ("sumnjam" na asembler ;) od oko 15 k koji treba
disasemblirati. Sourcer neće da disasemblira .OBJ, a kad ga preimenujem
u .COM pa mu ga "poturim", obavi dosta loš posao.
Ima li neko nešto slično?
asembler.63dzakic,
OBJTOASM.EXE radi to što ti treba, mada se meni dešavalo da je obj na neki
način 'zaštićen' (?) i objtoasm izba╔ýi samo deklaracije, a od programa ništa.
Ne znam kako...
objtoasm.exeasembler.64mjova,
> Kao kroz maglu prisećam se da sam nekad davno imao nekakav
> disasembler OBJ fajlova, ali ajd' sad nađi ga... Imam
> jedan .OBJ fajl, pisan na
vidim da ti je zak poslao obj2asm, pa rekoh da ti kažem da ako to ne
upali uradiš jedan link tako da se poveže sa 'praznom rutinom' i da
onda to proteraš kroz sourcer.
asembler.65pstojanovic,
Moze li ovako, radi nezavisno od PC masine bez problema :
code segment byte
assume cs:code,ds:code
org 100h
start:
jmp main
delay dw ?
main:
xor ax,ax
push ax
pop es
mov di,046ch
mov al,es:ŠdiĆ
Loop1: ; Sacekaj da vreme istekne do pocetka
merenja ...
cmp al,es:ŠdiĆ ;
je Loop1 ;
mov cx,0FFFFh ; Nakon ovog dela u CX se nalazi broj
klokova
mov al,es:ŠdiĆ ; za 1/18.2 deo sekunde za odgovarajuci
racunar.
call Petlja
mov ax,55 ; 1/18.2*1000
xchg ax,cx ;
not ax ;
xor dx,dx ;
div cx ;
sub ax,9 ; Umanjuje se za (Loop2:) do (jnz Loop2)
bez CALL
mov delay,ax ; U velicinu DELAY <- AX = broj klokova za
1 mSek.
┌────────────────────────────────────────
──────┐
mov dx,1000 ;─┤Ovde staviti vreme cekanja npr.
1sek=1000mSek.│
mov di,0406h ;
└──────────────────────────────────────────────┘
mov al,es:ŠdiĆ ;
mov bx,delay ; BX <- DELAY
Loop2: ; Aktivna petlja u kojoj se vrsi zadato
cekanje
mov cx,bx ;
call Petlja ;
dec dx ;
or dx,dx ;
jnz Loop2 ;
mov ax,4c00h ; Kraj programa
int 21h
Petlja proc near
cmp al,es:ŠdiĆ ; Podpetlja za merenje i izvrsavanje
jne Nazad ;
loop Petlja ;
Nazad:
ret
Petlja endp
code ends
end start
asembler.66valhala,
dobio sam TASM. imam jedno pitanje: kako ovaj monstrum funkcionise?! uopste mi
nije jasno kako da radim sa njim. da li da jurim literaturu ili mi neko moze
ako trgde da je trazim?
asembler.67mazi,
>>> Imam jedan problem koji se na žalost :( mora...
>>> je realizacija potprograma koji ostvaruje kaš...
>>> Ima neko rešenja? ...
Ima jedno elegantno, ali pomalo NonDOS i nonBIOS resenje.
Vga karta (uzgred, i CGA, Hercules, i EGA, koji je ja mislim
isti kao kod VGA) ima registar koji belezi kada elektronski
mlaz dodje do kraja ekrana, i to signalizira. To u standardnim
VGA modovima uradi 70 puta u sekundi. Lepo pratis registar
(koji je uzgred H03DA), testiras cetvrti bit. Kad ga ulovis,
odes pa uradis nesto, pa ponovo trk na cekanje elektronskog
mlaza. To mu valjda dodje aktivno cekanje.
Inace, ovo znam jer sam pasionirani Intro manijak jos iz
doba C64 (Ko da zaboravi D012?)
evo petlja:
mov dx,h03da
pr1: in al,dx
test al,08h
jz pr1
Ivan.
asembler.68mstanic,
>> dobio sam TASM. imam jedno pitanje: kako ovaj monstrum
>> funkcionise?! uopste mi nije jasno kako da radim sa njim.
>> da li da jurim literaturu ili mi neko moze
Najpametnije je da potražiš literaturu.
asembler.69spantic,
> Moze li ovako, radi nezavisno od PC masine bez problema :
Hvala na trudu. Problem je u međuvremenu rešen, ali i ovo bi koristilo.
asembler.70spantic,
> Ima jedno elegantno, ali pomalo NonDOS i nonBIOS resenje.
Hvala na trudu :) Ali problem je rešen. Stvar je bila u tome da je 80X86
trebao da služi kao kontroler. Znači trebalo je nezavisno rešenje.
asembler.71ficus,
Pusti tasm nabavi MASM 6.0 mnogo je bolji (cini mi se) a ima i ugradjene makro
naredbe kao sto su if repeat until while itd. (ne direktive prevodiocu nego bas
naredbe). Sto se literature za njega tice i ne treba ti help je takav da ti
nista vise ne treba sem ako si pocetnik.
asembler.72mjova,
> Pusti tasm nabavi MASM 6.0 mnogo je bolji (cini mi se) a
> ima i ugradjene makro naredbe kao sto su if repeat until
> while itd. (ne direktive prevodiocu nego bas
ne radim baš mnogo u asembleru, ali zanima me kakav je to asembler
koji ima if, repeat, until i ostale stvari? vrlo glupavo.. ako nekome
treba tako nešto ima C, Paskal itd...
asembler.73ficus,
Veoma jednostavno imas makro naredbe koje zamenjuju doticne. Tako nesto je
napravljeno i za tasm (neznam tacno u kom dir-u na sezamu) uz komentar da je to
podrska "OBJEKTNOM" programiranju. Bar mi se cini da je taj fajl za tu namenu.
Inace prednosti su 1-ipak su ovako generisani programi kolko tolko kraci i
2-zadrzava se max. kontrola nad masinom. Istina isto sto se moz iz asm-a moze
se i iz c-a ali.... Stvar je pitanje ukusa. (Sto asm nebi bio malo visi prg.
jezik.) ionako kad sad uporedim asm za pc i basic za c=64 izadje daa je u asm-u
lakse programirati (postoje procedure,laksi rad sa grafikom itd.)
asembler.74mstanic,
>> Pusti tasm nabavi MASM 6.0 mnogo je bolji (cini mi se) a
>> ima i ugradjene makro naredbe kao sto su if repeat until
>> while itd. (ne direktive prevodiocu nego bas
Jel' to ima u spoljnom fajlu ili baš ugrađeno.
Ako je u include fajlu te makroe imam već 4 godine i
fala bogu rade baš sa TASM-om.
Nisam rekao ništa o tome ko je bolji.
>> naredbe). Sto se literature za njega tice i ne treba ti
>> help je takav da ti nista vise ne treba sem ako si
E sad prvi put čujem da literatura ne treba. Ja bih voleo
da postoje i takvi programi ali ja za sada ne znam
nijedan.
asembler.75paki,
> E sad prvi put čujem da literatura ne treba. Ja bih voleo
> da postoje i takvi programi ali ja za sada ne znam
> nijedan.
Turbo Pascal.
asembler.77ficus,
turbo pascal
turbo c
paintbrush
yamb (moj yamb)
ima jos ali ode mi time.
asembler.78vitez.koja,
#=> Turbo Pascal.
Xe ;)) Ne treba ti literatura da pravis resenja za 'interesantne'
problemske zadatke, ali cik napisi npr. asemblersku funkciju sa
parametrima ili turbo vision aplikaciju bez literature ... Nema nista
bez dobre knjige, stalno otkrivas mlaku vodu, za toplu i ne sanjas da
postoji ... ;)
asembler.79ficus,
ja pisao u c-u asemblerske funkcije sa parametrima a sto se
turbo vision-a tice ja sam ga naucio iz primera koji idu uz
turbo pascal. Istina odavno se nisam zezo sa tim glupostima
(mislim na turbo vision) tako da sam uglavnom zaboravio ko kako
se to koristi.
2. Ja nisam rekop da mozes da provalis koriscenje komplikovanih
objekata. Nego programiranje u asembleru naravno podrazumevo
sam da imas neko pocetno znanje asemblera na nivou da znas otprilike
kako da izvrsis grananje kakva je osnovna struktura prg. za 80x86 itd.
Istini za volju ja imam Macro assembler user guide ali iz toga neces
nauciti nista sto nebi provalio za 10-tak min u helpu
istina lakse je citati knjigu nego zuriti u ekran to se slazem ali ...
Cak i u samoj knjizi pise da su teme detaljnije razjasnjene u help-u
P.S. ima samop ta knjiga u original paketu
asembler.80pbojan,
Moze li neka dobra dusa da mi podari rutinu za pretrazivanje zadatog
dela memorije za datim skupom bajtova? Znaci nesto kao trazenje stringa
u stringu, samo u komadu memorije definisanom iskljucivo datim parametrima.
Bilo bi dobro kada bi se parametri zadavali preko registara (ES:DI, DS:SI
pokazivaci na pocetke, AX i BX duzine, ili tako nekako ).
Please?
asembler.81mazi,
Pa, nisam te baš najbolje shvatio šta si želeo...
Evo ti program source + obj. U source je objašnjenje ulaznih
i izlaznih parametara. Ako ti ovo ne bude odgovaralo, MAILni me
pa ću da modifikujem šta nije onako kako treba.
Ivan.
P.S. Nisam se baš pretrgao testirajući da li radi sve OK
Ako zeza, tu sam
finder.arjasembler.82pbojan,
> Pa, nisam te bas najbolje shvatio sta si zeleo...
> Evo ti program source + obj. U source je objasnjenje
> ulaznih
Jesi, shvatio si :).
Fala ti k'o bratu, mada sam se vec snasao. Moje resenje je malkice
duze (podrazumevao sam ne tiny nego large), tako da cu se pozabaviti
ovim tvojim. Ovako na prvi pogled, izgleda da radi :).
asembler.83ilotina,
HI!
Može li neko da mi objasni kako izgleda BCD kodiranje (ako sam
pogodio da je kodiranje:). Pojavljuje se recimo kod interrapta 1a,
funkcija za čitanje vrednosti sistemskog sata......
Ivan
asembler.84spantic,
> Može li neko da mi objasni kako izgleda BCD kodiranje (ako
BCD je binarno kodirani decimalni broj i predstavlja cifre 0 do 9 grupom
od 4 binarne cifre. Konverzija decimalnog broja u BCD je jednostavna kao
i obrnuto, za razliku od računanja tako predstavljenih brojeva. Postoje
algoritmi doduše, ali BCD sistemi se danas relativno malo koriste. Ima
ih kod kalkulatora, numeričkih tastatura...
Primer:
140 = 0001 0100 0000
10 BCD
asembler.85smiloradovic,
)> Može li neko da mi objasni kako izgleda BCD kodiranje (ako sam
Kodiraju se dve cifre po bajtu, po sistemu:
# # # # # # # #
bit 7 6 5 4 3 2 1 0
└───┬───┘ └───┬───┘
viša cifra niža cifra
Pošto se, jelda, radi o binarno kodiranim ¨decimalnim¨ brojevima,
ispravne cifre su samo od 0 (0000) do 9 (1001). Recimo, 0100 0010
predstavlja decimalno 42. Ako radiš u asembleru (bar se tema tako zove;),
imaš instrukciju AAD koja broj iz ovakvog zapisa pretvara u binarni (ascii
adjust before division - nema veze kako se zove, bitno je da radi pos'o :)
asembler.86smiloradovic,
)> predstavlja decimalno 42. Ako radiš u asembleru (bar se tema tako zove;),
)> imaš instrukciju AAD koja broj iz ovakvog zapisa pretvara u binarni (ascii
)> adjust before division - nema veze kako se zove, bitno je da radi pos'o :)
E, mućak. Radi, ali skoro (sitni sati, pa malo brzam). Ovo radi za
raspakovane BCD cifre - znači, u bajtu je samo jedna cifra, i to u
donja 4 bita. Ono AAD radi AL <- 10*AH+AL.
BTW, brojevi u (raspakovanom) BCD zapisu su zgodni ako treba da ih
'izbaciš' na ekran - dovoljno je samo jedno OR 30h, i imaš valjanu aski
cifru spremnu za štampanje.
asembler.87vitez.koja,
#=> Može li neko da mi objasni kako izgleda BCD kodiranje
#=> (ako sam
Nepakovani BCD brojevi - svaki bajt predstavlja jednu decimalnu cifru
(vrednosti 0-9).
Pakovani BCD brojevi - svaki bajt predstavlja 2 cifre - 4 bita za cifru.
asembler.88ndragan,
/ algoritmi doduše, ali BCD sistemi se danas relativno malo koriste.
Pogledaj malo kako radi kobol kompajler na vaksu. Pre nego što sabere
1+1, on to prevede u BCD.
Inače, vidim da niko nije okačio značajnu osobinu BCD pakovanih brojeva:
znak je spakovan u poslednjoj nibli, i to sa 1100 za + i 1101 ili 1111
za -; zato BCD brojevi uvek imaju neparan broj cifara.
asembler.89mstanic,
Ima li negde (ili neko) obj2asm? Znam da se ranije
pričalo o njemu ali tek sad mi je zatrebao.
asembler.90dzakic,
obj2asm je prikačen u ovoj konferenciji uz poruku 3.63
asembler.91valhala,
Moze li neko da mi kaze (znam da je pitanje glupo i banalno, ali begginers
luck-
mozda mi i odgovori neko:)))) kako da iz tasm-a napisem program koji bi crtao
tacke po ekranu?
Kad smo vec tu, gde mogu da nadjem literaturu ili neki fajl sa uputstvom za
Tasm?
Val.
asembler.92mazi,
> Moze li neko da mi kaze (znam da je pitanje glupo i banalno,
> ali begginers luck-
> mozda mi i odgovori neko:)))) kako da iz tasm-a napisem program
> koji bi crtao tacke po ekranu?
Npr Ovako:
Mov ax,0013h
int 10h ; Uključi se mod 320*200 u 256 boja
push ds
mov ax,0a000h ; Setuje se data segment na video blok
mov ds,ax
cld
mov al,0ffh ; Boja kojom se ispisuje tačka
mov cx,140h ; Koliko tačaka
mov si,0 ; Odakle se ispisuje (u video memoriji)
rep movsb ; Ponavljaj ispis dok se ne završi
pop ds
p1: mov ax,0 ; Dok ne pritisneš space gledaš liniju :))
int 16h
cmp al,' '
jne p1
mov ax,0007h
int 10h ; Vratimo se u textualni mod
mov ax,04ch
int 21h ; Vraćanje u DOS
Tu ispred sleduju bla bla uvod i na kraju kraj rutine, to ne znam
kako ide u TASM-u.
Inače, što se tiče literature, za interapte imaš i na sezamu, valjda,
ne znam gde, a za TASM ne znam stvarno.
Ivan.
asembler.93valhala,
Da, samo sto je jedini problem da od linije nema ni traga ni crte:), a ni
povra-
tak u dos ne funkcionira:(((
Da li je zbog programa ili sam ja smotan ko sajla, pa ga nisam dobro uneo,
nemam pojma. Uglavnom---nece:((((
Help!:(
Val.
asembler.94.obj,
> Da, samo sto je jedini problem da od linije nema ni traga ni crte:), a ni
> povra-
> tak u dos ne funkcionira:(((
Povratak ne funkcionira :) jer je mazi izgleda kucao taj program iz
glave pa je na par mesta malo pogrešio :) Treba da umesto MOV SI, 0
staviš MOV DI, 0 (ili gde 'oćeš da se "iscrta" linija, Y * 320 + X), i
treba REP STOSB a ne REP MOVSB. Da bi programče izletelo u DOS, treba
da piše MOV AH, 4Ch a ne AX. Otprilike tako.
> Da li je zbog programa ili sam ja smotan ko sajla, pa ga nisam dobro uneo,
> nemam pojma. Uglavnom---nece:((((
To je programče za VGA. Imaš li je? :) Uzgred, pitanje ti je malo
preopšto... "da crtam tačke" :)
asembler.95mazi,
>> Da, samo sto je jedini problem da od linije nema ni traga ni
>> crte:), a ni povra-
>> tak u dos ne funkcionira:(((
>
> Povratak ne funkcionira :) jer je mazi izgleda kucao taj
> program iz glave pa je na par mesta malo pogrešio :) Treba da
> umesto MOV SI, 0 staviš MOV DI, 0 (ili gde 'oćeš da se "iscrta"
> linija, Y * 320 + X), i treba REP STOSB a ne REP MOVSB. Da bi
> programče izletelo u DOS, treba da piše MOV AH, 4Ch a ne AX.
> Otprilike tako.
>
>> Da li je zbog programa ili sam ja smotan ko sajla, pa ga nisam
>> dobro uneo, nemam pojma. Uglavnom---nece:((((
>
> To je programče za VGA. Imaš li je? :) Uzgred, pitanje ti je
> malo preopšto... "da crtam tačke" :)
E pokrivam se ušima. Jeste, pisao sam iz glave on-line.
E, evo ispravljene verzije, sa sve zaglavljem i završetkom,
ovako radi u MASM-u, a za TASM ne znam:
---
.MODEL tiny
program segment para public 'code'
assume cs:program, ds:program
org 0100h
start: Mov ax,0013h
int 10h ; Uključi se mod 320*200 u 256 boja
push es
mov ax,0a000h ; Setuje se data segment na video blok
mov es,ax
cld
mov al,0 ; Boja kojom se ispisuje tačka
mov di,0 ; Odakle se ispisuje (u video memoriji)
p2: mov cx,140h ; Koliko tačaka
rep stosb ; Ponavljaj ispis dok se ne završi
inc al ; Promeni boju
cmp al,200 ; Ispisasmo li ceo ekran?
jne p2 ; Ne? Ajd nazad na P2
pop es
p1: mov ax,0 ; Dok ne pritisneš space gledaš liniju :))
int 16h
cmp al,' '
jne p1
mov ax,0007h
int 10h ; Vratimo se u textualni mod
mov ah,04ch
int 21h ; Vraćanje u DOS
program ends
end start
E, sad ima da radi, proverio sam
Uzgred, ovo ti iscrta ceo ekran
Ivan.
asembler.96valhala,
Ono zadnje za ah=04ch sam provalio sam, a na onom prvom i srednjem:) ti hvala.
BTW imam vga, tacnije ATI VGA WONDER, tako da za mene prvi interrupt nije
ah=13h
nego ah=61h:)))(nadam se da ga dobro otkucah:))).
Sto se tice koncepcije pitanja, eh, pa zbunjen ja pa i zbunjena moja pitanja:))
Nego namera mi je bila da setujem samo jedan bit, odnosno nacrtam samo jednu
ta-
cku, a vi mi poklonili celu liniju( ne da se bunim, naprotiv:))).
Val.
asembler.97mazi,
> BTW imam vga, tacnije ATI VGA WONDER, tako da za mene prvi
> interrupt nije ah=13h nego ah=61h:)))(nadam se da ga dobro otkucah:))).
Kako bre, 320*200*256 je standardni VGA mod, on je oduvek bio 13h
u modovima. Da nije tako kod tebe, ne bi ti radila ni jedna igra ili
program koji radi u toj rezoluciji.
Ivan.
asembler.98valhala,
Sorry but C! Opet nece:((((.
Dkle stvarno sam baxuz, ne radi ni kad ga tlinkujem niti kad ga koristim iz
paskala sa {$L...}
:(((((((
asembler.99mazi,
> Sorry but C! Opet nece:((((.
> Dkle stvarno sam baxuz, ne radi ni kad ga tlinkujem niti kad ga
> koristim iz paskala sa š$L...ć
> :(((((((
E, evo šaljem ti i source i .com fajl. Sad ima da ti radi!
Ivan.
PS ako sad ne radi, dolazim sa macolom da ti sredim kvar :))
fajl.arjasembler.100valhala,
>###### PS ako sad ne radi, dolazim sa macolom da ti sredim kvar
>###### :))
RADI!!!!!!!!!!!!!!:)))))))))))))))))))))))
Thanks.
Sto se macoli tice, ako imas para za kartu do Bara(kako poeticki:)) )
be my guest, but be gentle, it's my first time:)))))))
Val.
asembler.101valhala,
>###### Kako bre, 320*200*256 je standardni VGA mod, on je oduvek
>###### bio 13h u modovima. Da nije tako kod tebe, ne bi ti
>###### radila ni jedna igra ili
Da, ali ako si citao sezamov interrupt info file, videces da je za vgawon.
specifican ah=61h, sto opet ne bi trebalo da znaci da 13h ne radi( a radi:) )
^^^^^^^^^^
Pitanje: kakvo je znacenje naredbi insb i outsb?
Val.
asembler.102dens,
Ima li neko asembler za mikroprocesor 6502 ? Asembler 6502 iz
paketa TASM???.??? (bio je okačen na sezamu) ne odgovara
potrebama.
Dejan :)
asembler.103spantic,
> Ima li neko asembler za mikroprocesor 6502 ? Asembler 6502
> iz paketa TASM???.??? (bio je okačen na sezamu) ne
> odgovara potrebama.
Mislim da sam ga video na Hobbitonu.
asembler.104mazi,
> Pitanje: kakvo je znacenje naredbi insb i outsb?
ins uzima byte, word ili dword sa spoljnjeg uređaja, sa adrese
smeštene u DX, i smešta ga na adresu es:di, a outs šalje byte,
word ili dword na spoljni uređaj na adresu određenu sa DX sa
adrese ds:si.
Inače, INS BYTE PTR ŠES:bilostaĆ,DX radi isto što i INSB
isto kao i INS WORD PTR ŠES:bilo staĆ,DX, koji je isto što i INSW
Što li su zapetljavali, pojma nemam.
Ivan.
asembler.105mazi,
> RADI!!!!!!!!!!!!!!:)))))))))))))))))))))))
Sreća tvoja da je proradilo! :)))
Ivan.
asembler.106ficus,
:) Inace, INS BYTE PTR SES:bilostaC,DX radi isto sto i INSB
:) isto kao i INS WORD PTR SES:bilo staC,DX, koji je isto sto i INSW
:) Sto li su zapetljavali, pojma nemam.
Pa insb i insw kao i outsb i outsw su predvidjene za rad sa REP prefixom
koj ce tu naredbu vise puta da izvrsi i automatski se i menja adresa di
tj ako imas:
REP INSW port ; ne secam se tacne sintaxe jer mi portovi
; apsolutno nisu trebali
desice se sledece: dok god ti je cx>0 ulazice podaci sa porta i smestati se na
ES:DI DI ce se povecavati ili smanjivati za 2 u avisnosti od df -flaga (direct
(direction flag ???) i cx ce se smanjivati za 1.
Drugim recima insw je specijalizovana da smesta podatke na es:di i automatski
azurira di a obicno se koristi sa rep prefixom mada moz biti zgodno i sa loop
Primena je za rad sa stringovima ili bilo kakvim nizovima a sa rep prefixom je
mnogo brze nego sa loop mada in i out obicno procesor ceka ostatak hardvera.
Eto zasto su zapetljavali
P.S. Sory ako sam slucajno negde u objasnjenju zabrljo imam 2 jaka razloga:
1. Spava mi se.
2. Sa asm-om vec neko vreme ne petljam tolko intenzivno a sa portovima
nikad nisam ni petljao tako da sam siguran u sve sem u specifikaciju po
porta (parametar koj se nalazi iza insb/insw)
FICUS
asembler.107mazi,
> P.S. Sory ako sam slucajno negde u objasnjenju zabrljo imam 2
> jaka razloga:
Ma ne uzrujavaj se uopšte oko takih stvari :))
Mene je jedino zaintrigiralo to što recimo MASM prihvata kad
napišeš (staviću male zagrade umesto srednjih zbog YUSCII-ja)
INS byte ptr (ES:bilošta),DX i kad napišeš samo INSB, ali
na kraju, kad se debaguje, stoji samo INSB.
Inače za INSB i OUTB (i ostale u grupi), važe ista pravila
ko i za sve naredbe koje se završavaju na B ili W (MOVSB,
STOSB, itd) - zavise od DF (direction flag-a), uvećavaju-
-umanjuju SI i DI, vezani za ES i DS, umanjuju CX.
Ja onako, usput.
Ivan.
asembler.108valhala,
Mani, startovo ga x(tezi beskonacnom)puta samo da uzivam u prelivima:)))))
Jos jednom puuuuuno hvala:)
Val.
asembler.109bulaja,
**** new file ****
R:\IBMPC\PROGRAM\*.*
----------------------
80x0393 zip 172660* 80xxx Snippets, zbirka korisnih funkcija u asembleru
Nabavljeno zahvaljujuci FFS-u i Skerlu.
Uz poruku je prikacen spisak stvari koje se nalaze u zbirci.
80x_list.zipasembler.110mazi,
> Mani, startovo ga x(tezi beskonacnom)puta samo da uzivam u
> prelivima:))))) Jos jednom puuuuuno hvala:)
Nego, nije ti se valjda prelilo i na tepih? :)))
Inače, nema na čemu :))
Ivan.
asembler.111valhala,
Ajde sad ovakooo: kako da jedan manipulise fajlovima iz asemblera? Znaci one
stvari:direktorijumi, kopiranje, otvaranje, iscitavanje, etc.
Val.
asembler.112dejanr,
>> Ajde sad ovakooo: kako da jedan manipulise fajlovima iz asemblera? Znaci
>> one stvari:direktorijumi, kopiranje, otvaranje, iscitavanje, etc.
Bojim se da ovo pitanje malo prevazilazi nešto na šta bi se odgovorilo
u jednoj poruci. U globalu, napune se registri nekim vrednostima pa se
pozove odgovarajući INT. Treba ti neka knjiga o DOS-u - preporučujem
"Advanced MS-DOS" Reja Dankana ili, ako ne možeš da dođeš do stranih
knjiga, umetak Zorana čivotića iz "Računara 28", naslov je bio "Sve MS
DOS funkcije"
Ako preferiraš "elektronski čitljivu" literaturu, imaš ovde u direktorijumu
INFO fajlove INTER33, sa podacima o svim MS-DOS funkcijama.
asembler.113bulaja,
│Ako preferiras "elektronski citljivu" literaturu, imas ovde u direktorijumu
│INFO fajlove INTER33, sa podacima o svim MS-DOS funkcijama.
└───
Nek saceka do sutra, trebao bih (konacno:) da okacim Inter34, a i jos
mnoge druge lepe stvari (da, i jargon:) koje sam preuzeo od skerla.
asembler.114valhala,
Skinuo sam dva fajla, ili mozda tri, o interaptima, i to jos ranije, i koliko
mi se cini, int13 radi sa diskom, ne?
Nego apropo clanka iz racunara, da li neka dobra dusa ima to ukucano u komp,
pa da mi majlne?(izvinjenja autoru na eventualnom krsenju autorskih prava,
etc.)
P.S. ajde ljudi zivnite malo, ako pogledate u vas sor videcete da je ova tema
malkice previse zgasnula. Niste valjda rekli sve sto ste imali, pa ja sam tek
dosao:) ocu da cujem puuuuno lepih stvari i saveta, zasto pratim ovu temu ako
ne zbog toga. Dakle KUCAJTE!:)
Val.
asembler.115sslavko,
>> Dakle KUCAJTE!:)
Kuc, kuc.
asembler.116mmile,
Kako se u zasticenom modu (386/486) pristupa bios-u ?
asembler.117dino,
rz
B0080000000dd38
Moj drug Vladimir poceo je da vezba asembler, napisao je
jedan rezidentan program koji bi trebao ispisivati datu rec na vrhu
ekrana a zatim bi sa svakim interaptom ona kretala u desno, ali
program mu ne radi dobro pa moli za pomoc, uz poruku je prilozen
program.
Pozdrav od D.Kovacevica
i V.Lomovica
asm6.zipasembler.118mornar,
Aj' nek nekog ne mrzi da napise kako bi uradio sledecu stvar
u assembleru...
Konkretno, radim interrupt rutinu koja treba da posrtavi bafer
sa paletom slike (768 bajtova) na poziciju ES:DX .
Pitanje kratko i jasno: KAKO da bafer smestim na to mesto.
Ako je nekom lakse neka jednostavno prevede sledecu C funkciju
na asembler :
union REGS regs;
struct SREGS sregs;
void SetAllPalette(char *p)
{
regs.x.ax=0x1012;
regs.x.bx=0;
regs.x.cx=256;
sregs.es=FP_SEG(p);
regs.x.dx=FP_OFF(p);
int86x(0x10,®s,®s,&sregs);
}
Hvala svima unapred - Mornar.
PS. Mozda ce se neko i smejati, stvar je zaisůta jednostavna, ali ja nisam neki
assemblerista, a ovo mi bas treba u istom.
asembler.119vitez.koja,
#=> union REGS regs;
#=> struct SREGS sregs;
#=>
#=> void SetAllPalette(char *p)
#=> {
#=> regs.x.ax=0x1012;
#=> regs.x.bx=0;
#=> regs.x.cx=256;
#=> sregs.es=FP_SEG(p);
#=> regs.x.dx=FP_OFF(p);
#=> int86x(0x10,®s,®s,&sregs);
#=> }
Da pretpostavimo da P sadrzi cetvorobajtni pointer na to mesto...
P DW 2 DUP(?)
MOV DX, P
MOV ES, DX
MOV DX, P[1]
MOV AX, 1012H
XOR BX, BX
MOV CX, 100H
INT 10H
asembler.120mmile,
Zamolio me je ortak da postavim ovo pitanje.
Kako se pristupa BIOS-u iz zasticenog rezima ( na 386/486 ) ?
btw pominjao mi je neki ABIOS od 128k i sl. stvari ali ga nisam 100 %ukapirao.
asembler.121martin,
Zamolio bi nekog programera na ASEMBLERU da mi pomogne.
Potreban mi je rezidentni program koji kontrolise izlaz na stampac
i usput menja neke karaktere. Radi se o problemu YU seta:
kolega poseduje herkules sa Custom2 setom a stampac ne podrzava
taj set.
asembler.122darone,
>> kolega poseduje herkules sa Custom2 setom a
>> stampac ne podrzava taj set.
Ako ima štampač sa YUSCII setom, neka presvičuje na
mikroprekidačima raspored na _američki_. Trebalo bi
da sve bude u redu (a pogotovo ako je EPSON).
Ako ne radi, neka vrati na staro, da ne bude da sam
zajebo stvar :)
darone
asembler.123ppekovic,
>> Zamolio bi nekog programera na ASEMBLERU da mi pomogne.
>> Potreban mi je rezidentni program koji kontrolise izlaz na stampac
>> i usput menja neke karaktere. Radi se o problemu YU seta:
>> kolega poseduje herkules sa Custom2 setom a stampac ne podrzava
>> taj set.
Pre godinu dana sam ja napravio jedno programče u C-u jer sam
imao upravo taj problem. Sve bi bilo lepo i krasno da nema
kontrolnih sekvenci. A pošto ih ima, onda bi morao da upišem u
jednu tabelu sve kontrolne sekvencem pa da proveram da li se niz
bajtova koji ide na štampu slaže sa nekom od njih, pa da, ...
Sve u svemu može, ali je mnogo dosadan posao.
Paya
asembler.124nkbog,
> Potreban mi je rezidentni program koji kontrolise izlaz na stampac
> i usput menja neke karaktere. Radi se o problemu YU seta:
Tu treba obrađivati i ESC sekvence. Trenutno imam razvijeno nešto
slično za JUS.015. S obzirom da je to što je potrebno potskup tih
funkcija, samo primenjeno na drugi kodni raspored, možemo, eventualno,
preko "maila" da se dogovorimo oko neke kastomizovane verzije.
Pozdrav,
Nenad Bogojević
asembler.125dejanr,
U direktorijumu PROGRAM je CPUID.ZIP, oficijelni Intelov source za
identifikaciju 80x86 procesora. Preuzeto sa Intel-ovog BBS-a.
asembler.126djnsnd,
Da li neko moze da mi pomogne?
Treba da prevedem neki Pascal source, ali on zahteva postojanje datoteke
tipa .OBP. Imam listing tog programa, ali kada upotrebim
TASM mogu da dobijem samo .OBJ datoteku.
Naravno, pronasao sam prekidac /op koji asembleru naredjuje da
pravi object datoteku za protected mode, ali i sa njim dobijam
kao razultat .OBJ datoteku.
Hvala.
Djn
asembler.127goran,
Da li bi mi neko mogao reci gde mogu da nadjem asembler i pratecu
literaturu ?
Unapred se zahvaljujem na odgovoru.
Goran
asembler.128drpr,
-> Da li bi mi neko mogao reci gde mogu da nadjem asembler i
-> pratecu literaturu ?
Za knjige na našem jeziku ,a i pod sankcijama, na stranom
ovde ćeš teško naći :(. Ipak ima nade pa pogledaj u stare
pc.prog konferencije te ćeš tamo naći asmtutor, lw286 i ostale
stvari. Za originalan softwer ti ne mogu pomoći (probaj kod
CET-a ako imaš love) jer ne smem preko sezama a u diru imaš
mali asembler koji je sasvim dovoljan za počretak pa navali.
cope
asembler.129spantic,
> Za knjige na našem jeziku ,a i pod sankcijama, na stranom
> ovde ćeš teško naći :(. Ipak ima nade pa pogledaj u
> stare
Nije baš sasvim tačno. Od literature na srpskom postoji za asembler
8086 knjiga Mileta Stojčeva "Savremeni 16-bitni mikroprocesori", stara
više godina :) Tu se obrađuje i Motorola 68000 i još ponešto.
asembler.130janko,
1. Ima li neko DPMI _programersku specifikaciju_?
2. Ima li neko primer programa koji radi pod DPMI?
3. Da li pri radu sa DPMI treba memoriju rezervisati kroz XMS
drajver ili ne?
4. Kako pisati protektid programe samo uz XMS drajver (da li je
to uopšte moguće?)
5. Pod pretpostavkom da "ogolim" računar (tj. izbacim sve
programe koji bi eventualno 'teli da koriste nešto iznad 640K)
koji je minimalni kod, sa kojim bih mogao da pišem 386 kod
u protektid modu, a zatim se "prizemljim" u DOS?
Dakle, kako programirati u asembleru 386 programe pod DOS-om?
asembler.131dejanr,
>> Dakle, kako programirati u asembleru 386 programe pod DOS-om?
Samo asembler - napraviš program i on će raditi ako nema ničega
što bi ga sprečilo da pređe u protected mode. Samo, iz takvog
programa nećeš moći da koristiš usluge DOS-a, nego bi sve morao
sam da pišeš. Mislim da DPMI nije rešenje, jer se tako, ako
ja dobro shvatam, ne dobija pravi 32-bitni kod nego neki 16-bitni
hibrid. Dakle, jedino da uzmeš neki DOS extender, tu se lepo pišu
32-bitni programi... ali je dosta skup (program i literatura), a
često se zahteva i docnije plaćanje tantijema za svaki distribuirani
primerak programa.
asembler.132drpr,
-> Nije baš sasvim tačno. Od literature na srpskom postoji za
-> asembler 8086 knjiga Mileta Stojčeva "Savremeni 16-bitni
-> mikroprocesori", stara više godina :) Tu se obrađuje i
-> Motorola 68000 i još ponešto.
Vidi ja imam te knjige (dve od tri) i potpuno sam zaboravio na
njih. Veoma su zanimljive ali se na bave samo assemblerom pa se
verovatno zato nisam ni setio :)
cope
asembler.133draganm,
Da li neko ima ideju kako da u turbo debugeru postavim expression
breakpoint tako da izvrsavanje programa stane kada je ax=0925 i IP pokazuje
na int 21 komandu ...
asembler.134.obj,
> sam da pišeš. Mislim da DPMI nije rešenje, jer se tako, ako
> ja dobro shvatam, ne dobija pravi 32-bitni kod nego neki 16-bitni
> hibrid.
Slažem se. Pod DPMI-jem (koliko sam ja gledao) programi se pišu isto
kao pod DOS-om, jedino umesto "fizičkih" segmenata imaš selektore, čime
je omogućena daleko veća memorija nego u realnom režimu. Stvar je
*veoma* slična 16-bitnim Windows programima - segmenti su 64Kb, ali ih
ima kol'ko 'oćeš :) zahvaljujući selektorima. Svi DPMI serveri
omogućavaju iz normalno pozivanje (skoro) svih DOS funkcija.
> Dakle, jedino da uzmeš neki DOS extender, tu se lepo pišu
> 32-bitni programi... ali je dosta skup (program i literatura)
Pošto janko kaže "32-bitni programi u asembleru", postoji još jedno
rešenje ("rešenje";) a to je da napiše Windows program koji koristi
WINMEM32.DLL. Upotrebom ovog DLL-a mogu se pisati 32-bitni programi pod
običnim Windows-om. Jedini, i najnezgodniji, problem je što se Windows
API funkcije ne mogu pozivati iz 32-bitnog dela programa, već se mora
napraviti poseban segment (Microsoft ga zove "helper segment") iz koga
se pozivaju Windows API (ili DOS) funkcije. Stvar nije baš jednostavna
jer se pre prenošenja neke 32-bitne adrese Windows API funkciji mora
uraditi njeno "zaključavanje" - naime, 32-bitna adresa je samo jedna
LONG vrednost, a Windows API funkcije primaju standardnu selektor:ofset
adresu. Zbog toga postoji nekoliko funkcija u WINMEM32.DLL koje
"transformišu" 32-bitnu adresu u selektor:ofset. Na sreću, nije
neophodno pisati zaključavanje podataka svaki put kada se poziva neka
Win API funkcija - dovoljno je da se 32-bitni poziv (recimo) funkcije
CreateWindow napiše samo jednom - posle toga se poziva sopstveni (npr.)
CreateWindow32 koji radi posao. Malo sam konfuzan, ali nadam se da je
jasno. ;)
Verujem da će MS na nabudži nekakav WINMEM32-EASYWIN, za obične C
programe u 32-bitnom režimu. :)
Optimista. ;)
asembler.135.obj,
> Da li neko ima ideju kako da u turbo debugeru postavim expression
> breakpoint tako da izvrsavanje programa stane kada je ax=0925 i IP pokazuje
> na int 21 komandu ...
Samo treba da postaviš globalni breakpoint (iz menija) koji bi izgledao
nekako ovako: (AX EQ 0925H) AND ( (. WORD PTR CS:IP .) EQ 021CDH).
Zameni (. i .) sa uglastim zagradama.
Jedini problem je što ovo ima da jaaaako uspori izvršavanje programa.
asembler.136draganm,
*> Jedini problem je sto ovo ima da jaaaako uspori izvrsavanje
*> programa.
Na 486 to i nije neki problem :)
asembler.137bojanp,
>> Da li neko ima ideju kako da u turbo debugeru postavim expression
>> breakpoint tako da izvrsavanje programa stane kada je ax=0925 i IP
>> pokazuje na int 21 komandu ...
>
> Samo treba da postaviš globalni breakpoint (iz menija) koji bi izgledao
> nekako ovako: (AX EQ 0925H) AND ( (. WORD PTR CS:IP .) EQ 021CDH).
> Zameni (. i .) sa uglastim zagradama.
>
> Jedini problem je što ovo ima da jaaaako uspori izvršavanje programa.
Sem pomenute varijante, postoji još jedna koja ne usporava
izvršenje programa, ali joj je mana da je već otpočelo izvršavanje
pomenutog interrupta. Postavi uslovni breakpoint na početak rutine za
obradu pomenutog interrupta koji glasi AX EQ 0925h. Ova varijanta
neće raditi u slučaju da program instalira novu interrupt rutinu.
Pozdrav, Bojan
asembler.138.obj,
> Na 486 to i nije neki problem :)
Pa, TD pri glob.breakpt. usporava dibagovani program za 10-50 puta - za
strpljive to verovatno nije problem ;)
Ou bi džej
asembler.139ficus,
> Da li bi mi neko mogao reci gde mogu da nadjem asembler i
> pratecu literaturu ?
Literaturu je prilično teško kod nas naći (na srpskom). Na engleskom još i ima,
ali je gadno skupa... Dakle izvoli, uzmi neki od fajlova za učenje iz direkto-
rijuma /msdos/program/assembler (valjda tako) sa FFS-a, ili pogledaj starije
po-
ruke u PC.PROG (ne PC.PROG.2) u temi asembler. Tamo je mjova ostavljao neke tu-
torijale...
Pozdrav, Deki
asembler.140ficus,
> 1. Ima li neko DPMI _programersku specifikaciju_?
>
> 2. Ima li neko primer programa koji radi pod DPMI?
>
> 3. Da li pri radu sa DPMI treba memoriju rezervisati kroz XMS
> drajver ili ne?
>
> 4. Kako pisati protektid programe samo uz XMS drajver (da li je
> to uopšte moguće?)
>
> 5. Pod pretpostavkom da "ogolim" računar (tj. izbacim sve
> programe koji bi eventualno 'teli da koriste nešto iznad 640K)
> koji je minimalni kod, sa kojim bih mogao da pišem 386 kod
> u protektid modu, a zatim se "prizemljim" u DOS?
>
> Dakle, kako programirati u asembleru 386 programe pod DOS-om?
>
Mani se DPMI-a ako ti baš nije hitno...
Pozdrav, Deki
asembler.141dens,
>> Mani se DPMI-a ako ti baš nije hitno...
>>
>> Pozdrav, Deki
Mani se dugačkih quote-ova ...
Pozdrav, Dejan :)