asembler.103spantic,
-> #102, dens> 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,
-> #101, valhala> 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,
-> #100, valhala> RADI!!!!!!!!!!!!!!:)))))))))))))))))))))))
Sreća tvoja da je proradilo! :)))
Ivan.
asembler.106ficus,
-> #104, mazi:) 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,
-> #106, ficus> 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,
-> #105, maziMani, 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,
-> #108, valhala> 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,
-> #111, valhala>> 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,
-> #112, dejanr│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,
-> #112, dejanrSkinuo 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,
-> #114, valhala>> 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,
-> #118, mornar#=> 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,
-> #121, martin>> 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,
-> #121, martin>> 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,
-> #121, martin> 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,
-> #127, goran-> 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,
-> #128, drpr> 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,
-> #130, janko>> 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,
-> #129, spantic-> 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,
-> #131, dejanr> 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,
-> #133, draganm> 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,
-> #135, .obj*> Jedini problem je sto ovo ima da jaaaako uspori izvrsavanje
*> programa.
Na 486 to i nije neki problem :)
asembler.137bojanp,
-> #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.
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,
-> #136, draganm> 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,
-> #127, goran> 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,
-> #130, janko> 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,
-> #140, ficus>> Mani se DPMI-a ako ti baš nije hitno...
>>
>> Pozdrav, Deki
Mani se dugačkih quote-ova ...
Pozdrav, Dejan :)