asembler.1omega,
Znaci ja cu morati da zapocnem ? :)
Da li neko poseduje brzu proceduru za pisanje u text modu, direktnim
gadjanjem video memorije, a naravno, jedan od argumenata je boja?
asembler.2markom,
█*█ Da li neko poseduje brzu proceduru za pisanje u text modu, direktnim
█*█ gadjanjem video memorije, a naravno, jedan od argumenata je boja?
Jel mora iz asemblera? Ja imam za pascal (ali sa puuuuno asemblera ;)
asembler.3omega,
Ţ █*█ Da li neko poseduje brzu proceduru za pisanje u text modu, direktnim
Ţ █*█ gadjanjem video memorije, a naravno, jedan od argumenata je boja?
Ţ
Ţ Jel mora iz asemblera? Ja imam za pascal (ali sa puuuuno asemblera ;)
Savrseno. TO mi je bas potrebno. Salji...
asembler.4markom,
█*█ Savrseno. TO mi je bas potrebno. Salji...
Oukej, evo ga ...
display.zipasembler.5omega,
ŢOukej, evo ga ...
Gde je!?
asembler.6.hik,
Da li neko zna koji kodovi mogu da se ubace da bih izvrsio WormBoot, tj.
reset uz testiranje memorije...
asembler.7markom,
*** Gde je!?
Nisam zvao dugo sezam, ali eno ga sad uz poruku ...
Sorry, na zakašnjenju ...
asembler.8dzakic,
> Da li neko zna koji kodovi mogu da se ubace da bih izvrsio
> WormBoot, tj. reset uz testiranje memorije...
Warm boot NE testira memoriju, dok cold boot to radi.
warm: mov ax,40h
mov ds,ax
mov word ptr [72h],1234h
cold: jmp 0f000h:0fff0h ; Skok na F000:FFF0 - power-on test
asembler.9rkramer,
Koja je najbolja knjiga za ucenje asm-a??
Kako da direktno upisem text u video RAM?
Thanks,RKR
p.s. Izvinite zbog ovakvih pocetnickih pitanja, ali tek ucim...
asembler.10maksa,
Da li važi: jedan fwait = 3 NOP-a ?
asembler.11berry,
> Da li vazi: jedan fwait = 3 NOP-a ?
Nije tako prosto. NOP je jedan byte i traje 3 clocks. FWAIT nije instrukcija
NPX-a nego alternativni mnemonik za CPU-ovu instrukciju WAIT.
WAIT obustavlja dalje dekodovanje/izvrsenje CPU-ovih instrukcija dok je BUSY
pin aktivan (high). Busy signal postavlja numericki procesor. To znaci da
WAIT odnosno FWAIT treba da ti omoguci da sacekas da se numericka ionstrukcija
zavrsei ( i to uspesno). Trajanje FWAIT bi trebalo da bude min. 8 clcks.
Primer:
F.... brojka
FWAIT
MOV AX,brojka
Ovo FWAIT ti omogucuje da CPU ne dira 'brojka' mem operand dok NPX ne zavrsi
sa njim.
asembler.12bulaja,
Ima li neko gotovu funkciju (da se ne mučim:) za brzo traženje
nekog stringa (case insensitive) unutar text datoteke? Dovoljno
će biti samo da vrati flag da je string nadjen ili nije, može
eventualno i file pointer na mesto gde je pronadjen. :)
asembler.13markov,
Da li iko ima ili zna za neku dobru knjigu za ucenje asemblera
(88/286/386)????
Unapred hvala ,
Marko
asembler.14kriss,
Da li neko zna kako može da se 'otvori' (pod)direktorijum i da se
čitaju podaci iz njega? Recimo, nalazim se na disku n:, negde u
memoriji imam ASCII string 'c:\utility\',00 i želeo bih da povadim sve
podatke iz istog.
asembler.15markom,
:: Da li iko ima ili zna za neku dobru knjigu za ucenje asemblera
:: (88/286/386)????
Mile K. Stojčev: Savremeni 16-bitni mikroprocesori II
Takođe nije loš ni udžbenik sa 3 ili 4 godinu MG-a (ne znam kako se zove, ali
jesu neki informacioni sistemi:), onako čisto za početak :)
asembler.17markov,
HI!
Postoji li neka grupa koja se bavi asemblerom koja je voljna da me usvoji :))
Hvala ,
Marko
asembler.18dejanr,
>> Postoji li neka grupa koja se bavi asemblerom koja je voljna da me
>> usvoji :))
Ne verujem da postoji takva grupa, a i ne vidim za šta bi služila, kada
već postoji tema u konferenciji.
asembler.19kdrazan,
Je l' ima ko kakav dobar disasembler (da mu ne moram prepravljati kod
da bih ga ponovo asembliro) ? :)))
asembler.20kriss,
Ajd' opet da pitam:
Da li postoji način se direktorijum 'otvori', znači nešto slično kao
fajl i da mogu da se čitaju podaci iz njega? Ako ne, da li postoji
neki drugi način sem sledećeg, koga od milošte zovem 'oko sedam
planina'. ;)
- Nalazim se bilo gde ( d:\x\y\z> );
- Imam negde puni path nekog programa u sledećem string obliku
'c:\x1\y1\z1\name.ext',00
- odšetam se do c:\x1\y1\z1\ ;
- Pronađem podatak o prvom klasteru tekućeg direktorijuma;
- Odem do FAT-a (prethodno utvrdim da li je 12-to ili 16-to bitni -
jel nisam odvalio za bitove?) i krenem da učitavam klaster po klaster
pa gde naletim na name.ext.
Usput, možda bi sve bilo lakše da pitam sledeće: :)
Da li se podatak o prvom klasteru programa nalazi i na nekom drugom
mestu sem u direktorijumu? :)
asembler.21miljko,
>> Da li postoji način se direktorijum 'otvori', znači
>> nešto slično kao fajl i da mogu da se čitaju podaci iz
>> njega? Ako ne, da li postoji neki drugi način sem
>> sledećeg, koga od milošte zovem 'oko sedam planina'. ;)
Zašto ne probaš sa DOS-ovim FindFirst (Int 21h, AH=4Eh)
i FindNext (Int 21h, AH=4Fh) pozivima. žini mi se da je to
ono što ti treba.
asembler.22kriss,
odgovor na: 13.401 KOMUNIKACIJE.6:yu.bbs [ mmitrovic ]
˙˙ Takvo ret i INT 20H su jedno te isto, jer se sa ret CS:IP
˙˙ vraća na PSP:0 gde se nalazi INT 20H instrukcija. ;)
U onom konkretnom slučaju - da. Ali se moja poruka odnosila na
završetak programa uopšte - šta ako je zaostalo par bajtova na steku?
:)
asembler.25bulaja,
**** new file ****
R:\IBMPC\PROGRAM\*.*
----------------------
cpuid3 zip 5139* Oficijelni Intelov source za identifikaciju procesora
This program has been developed by Intel Corporation. You have
Intel's permission to incorporate this source code into your
product royalty free.
This program contains three parts:
Part 1: Identifies CPU type in the variable cpu_type:
0=8086 processor
2=Intel 286 processor
3=Intel386(TM) processor
4=Intel486(TM) processor
5=Pentium(TM) processor
Part 2: Identifies FPU type in the variable fpu_type:
0=FPU not present
1=FPU present
2=287 present (only if cpu_type=3)
3=387 present (only if cpu_type=3)
Part 3: Prints out the appropriate message. This part can
be removed if this program is not used in a DOS-based
system. Portions affected are at the end of the
data segment and the print procedure in the code
segment.
REVISION HISTORY:
Date: 4/93
1. Replaced the .486 with .186 to avoid generation of 0FH type long
conditional branches (such as the branch to end_get_cpuid at
the end of the 8086/8088 test, near code address 003D). These
are not executable on the 8086/8088 and 80286, so the code falls
into some strange place and hangs the system. The .186 also allows
multi-bit shifts to unpack CPUID info. Using .186 requires
that all 32-bit operand prefix (66H) be inserted by hand.
This is done with a macro (OPND32).
2. Avoid all usage of 32-bit operands until it is clear that the
CPU is at least an 80386. The use of the Exx registers caused
the generation of the 66H prefix, which are not executed
correctly on the 8086/8088 and 80286.
3. Eliminated all the register save/restore and added comment
that all registers are used by the functions.
4. Do the stack alignment just before messing with the AC bit in
EFLAGS, otherwise the stack may not be properly aligned. Also
restore the AC bit immediately, so it does not stay set.
5. Changed the FPU detection to set one flag fpu_type (instead of
the previous two flags: fpu_present and infinity). An fpu_type
of zero indicates no floating point unit is present, an fpu_type
of 2 indicates an 80287 is present, an fpu_type of 3 indicates
an 80387 is present.
If this code is assembled with MASM with no options specified, it
runs correctly on an 8086/8088, 80286, 80386, 80486, and
Pentium(tm) processor.
asembler.26kriss,
˙˙ Zašto ne probaš sa DOS-ovim FindFirst (Int 21h, AH=4Eh)
˙˙ i FindNext (Int 21h, AH=4Fh) pozivima. žini mi se da je to
˙˙ ono što ti treba.
Zato što podaci koje te funkcije vrate u DTA imaju sve korisno sem
prvog klastera fajla :(( A baš mi on treba :( Evo šta kaže help pc:
00 byte attribute of search (undocumented)
byte drive letter used in search (DOS 3.1-4.x, undocumented)
01 byte drive letter used in search (undocumented)
11bytes search name used (DOS 3.1-4.x, undocumented)
02 11bytes search name used (undocumented)
0C byte attribute of search (DOS 3.1-4.x, undocumented)
0D word directory entry number (0 based, undocumented)
0F word starting cluster number of current directory; zero
for root directory (DOS 3.2+, undocumented)
dword pointer to DTA (DOS 2.x-3.1, undocumented)
11 word reserved
13 word starting cluster number of current directory; zero
for root directory (DOS 2.x+, undocumented)
15 byte attribute of matching file
16 word file time (see FILE ATTRIBUTES)
18 word file date (see FILE ATTRIBUTES)
1A word file size
1E 13bytes ASCIIZ filename and extension in the form NAME.EXT
with blanks stripped
asembler.28mmitrovic,
Ů█▀█Ţ U onom konkretnom slučaju - da. Ali se moja poruka odnosila na
Ů█▀█Ţ završetak programa uopšte - šta ako je zaostalo par bajtova na steku?
da bi RET izašao iz programa mora biti:
CS=seg(PSP), vrednost na steku: 0000h
Ako se kontroliše stek, uvek se ovako može izaći iz COM programa,
jerbo je po ulasku u COM vrednost na steku uvek 0, a CS=DS=ES=PSP.
Pošto nema far poziva CS će uvek biti PSP.
Razlika sa INT21 je valjda u tome da INT 20 ne zatvara fajlove.
asembler.29kriss,
˙˙ da bi RET izašao iz programa mora biti:
˙˙ CS=seg(PSP), vrednost na steku: 0000h
˙˙
˙˙ Ako se kontroliše stek, uvek se ovako može izaći iz COM
˙˙ programa, jerbo je po ulasku u COM vrednost na steku uvek 0, a
˙˙ CS=DS=ES=PSP. Pošto nema far poziva CS će uvek biti PSP.
˙˙
˙˙ Razlika sa INT21 je valjda u tome da INT 20 ne zatvara
˙˙ fajlove.
:))) Upravo to, i slažemo se kroz više poruka, so: :)
Ako u COM programu zaostane nešto na steku (a zna da se desi pri
nepažnji/slučajno) završiti program sa RET može da bude 'pogubno'. :)
Zato je najbolje staviti ah=4ch, INT 21 i sve muke rešene. :)
asembler.30pik.becej,
Treba mi rutina koja bi proizvela samo jedan beep,znaci kao u bejziku kad bi
otkucao.Unapred zahvalan
asembler.31kriss,
˙˙ Treba mi rutina koja bi proizvela samo jedan beep,znaci kao u
˙˙ bejziku kad bi otkucao.Unapred zahvalan
Jel ti treba običan beep, ili određena frekvenca + trajanje? Ako je
običan beep onda je to
mov ah,02
mov dl,07
int 21h
ret
dobijeno preko DOS-a. :)
Ako ti treba SOUND javi mi se na mail :)
asembler.32mmitrovic,
Ů█▀█Ţ Ako u COM programu zaostane nešto na steku (a zna da se desi pri
Ů█▀█Ţ nepažnji/slučajno) završiti program sa RET može da bude 'pogubno'. :)
Ako na steku ostane nešto onda će se program zaglaviti pre nego
dogura do famoznog RET. ;) Onda, blago meni, ide na reviziju.
asembler.33kriss,
˙˙ Ako na steku ostane nešto onda će se program zaglaviti pre
˙˙ nego dogura do famoznog RET. ;) Onda, blago meni, ide na
˙˙ reviziju.
?!?!!
Kada se zaglavljuje sledeći program (na kom mestu)?
.model tiny
.code
org 0100h
start:
jmp preko
poruka:
db 'Trtmrt ...$'
preko:
mov ah,09h
push ax
mov dx,offset poruka
push dx
int 21h
ret
end start
asembler.34bajaga,
Može li mi neko reći kako izgleda ulazno/izlazni kod interupts procedure.
asembler.35mmitrovic,
Ů█▀█Ţ mov ah,09h
Ů█▀█Ţ push ax
Ů█▀█Ţ mov dx,offset poruka
Ů█▀█Ţ push dx
Ů█▀█Ţ int 21h
Jel ti to ozbiljno, il' me samo testiraš? ;)
Paramteri za DOS dispatcher (INT 21h) ne idu na stek, već u registre.
Dakle izbaci ovo push ax i push dx. Posle onog RET skočio bi IP na
početak stringa, a mrzi me da gledam koji opcode odgovara bajtovima iz
stringa, svejedno se blokira, bilo da zamre ili upadne u mrtvu petlju.
asembler.36dekiper,
Sourcer!
Pozdrav, Deki
asembler.37pik.becej,
Kako se koristi Teletype mode iz assemblera,ja sam probao ovako ali
izgleda da nije tako ...
mov ah,0e
mov al,219 ; Umesto 219 moze bilo koji ASCII znak
int 10h
E sad ... ,kako mu reci koji tekst da ispise u Teletype modu ?
probao sam da ubacim ...
tekst: db "Proba.$"
mov dx,offset tekst
mov ah,9
int 21h
asembler.38berry,
> tekst: db "Proba.$"
^
> mov dx,offset tekst
> mov ah,9
> int 21h
Ovo ti je suvisno. Time si definisao labelu, a ne string.
Na kraju dodaj :
mov al,return_code ; ako ti treba
mov ah,4CH
int 21H
da se zavrsis proces i vratis se u DOS (ako to zelis).
Ako sam dobro razumeo sta zelis da uradis :)
asembler.39pik.becej,
> Ovo ti je suvisno. Time si definisao labelu, a ne string.
>
> Na kraju dodaj :
> mov al,return_code ; ako ti treba
> mov ah,4CH
> int 21H
>
> da se zavrsis proces i vratis se u DOS (ako to zelis).
> Ako sam dobro razumeo sta zelis da uradis :)
Pa probao sam to tvoje ali mi opet nije jasno gde on cita text koji
treba da izbaci na ekran ali nema veze,trazi mi neki com file kad ga
startujem sa tim dodatkom,evo sta meni treba,ispis nekog texta na
ekranu ali slovo po slovo i pritom da se kursor pomera kako ide
sledece slovo,u clipperu a slicno je i u bejziku to je ovo ...
a = "Neki text"
for i = 1 to len(a)
x = substr(a,i,1)
č 3,i say "*"
tone(151,1)
č 3,i say x
next
Nepoznajem dobro assembler pa me zanimalo kako bi to izgledalo u
assembleru,disasemblirao bi ja to ali je problem sto bilo sta da se
napise u clipper-u makar i da je samo jedna linija u kojoj stoji cls
napravice se exe fajl od nekih 200 Kb sto je dugacak asm ...
Tako sam video interupt 10,0e pored koga pise Write in teletype mode
sto ja mislim da je to sto sam objasnio gore,tu jos stoji ...
ah = 0e
al = ascii character to write
bh = page number
bl = foreground page color
Sve je to ok,jedino neznam gde staviti text koji treba da ispise.
asembler.40snemcev,
>> al = ascii character to write
>>
>> Sve je to ok,jedino neznam gde staviti text koji treba da ispise.
Jeste da ne znam asembler, ali zar ovde ne piše da u al treba staviti
ascii kod karaktera koji treba ispisati? Znači, karakter po karakter.
Ili se možda varam?
asembler.41pik.becej,
>>> al = ascii character to write
>>>
>>> Sve je to ok,jedino neznam gde staviti text koji treba da ispise.
>
> Jeste da ne znam asembler, ali zar ovde ne piše da u al treba staviti
> ascii kod karaktera koji treba ispisati? Znači, karakter po karakter.
> Ili se možda varam?
Pa varas se,tu treba staviti kakav ce biti kursor koji ce ici ispred
nekog teksta,znaci ako se stavi 65 ici ce slovo 'A' ispred svakog
karaktera,najbolje je staviti 219 ...
asembler.43kriss,
˙˙ Sve je to ok,jedino neznam gde staviti text koji treba da
˙˙ ispise.
Moraš da uradiš preko petlje. Evo rešenja:
ekran proc near
p1: cld
p01: lodsb
or al,al
jne p3
ret
p3: push si
mov ah,0eh ; <- e sad ovde izmeni, zaboravih već šta ti
int 10h ; treba
pop si
jmp p01
endp
I onda imaš nešto ovako:
tekst: db "Proba",00 ; (Ne zaboravi 0 bajt na kraju!!)
mov si,offset tekst
call ekran
... i to bi bilo to (pišem veoma na brzinu, ali mislim da je OK). Ako
nešto ne radi - javi. Ako treba da ti piše slovo po slovo (sa
pauzama), valjda ćeš se snaći i ubaciti praznu petlju u proceduru
ekran. :) Ako se svejedno ne snađeš, javi pa da objasnimo kako. :) Ali
požuri, već od nedelje nisam tu na duže. :)
asembler.44pik.becej,
> ... i to bi bilo to,ako nesto ne radi - javi.
Pa radi samo sto pre texta izbacuje neke brljotine i ako mozes stavi da
ispisuje slovo po slovo (i probaj dali radi pre nego sto posaljes listing),
Umesto pauze mozes da stavis neki beep (to ce ga malo usporiti).
I ako ti nije tesko posalji ceo listing a ne samo rutinu,jer neznam bas dobro
assembler pa mozda ja pogresim na pocetku a kad asembliram samo rutinu nece da
radi,ja na pocetku svakog programa stavim ...
main segment
assume cs:main,ds:main
org 100h
....... ; ovde dalje neki program
ends
end main
I mozda nemora to da se uradi u teletype modu (int 10 , ah,0eh) ali objasnio
sam ti u prethodnoj poruci sta mi treba,pa ako znas na drugi nacin ...
U svakom slucaju hvala ti.
asembler.45markov,
Postoji li grupa koja se bavi assemblerom do krajnjih granica , ako me
razumete sta mislim. Vrlo rado bih se pridruzio.
MArko
asembler.46kriss,
˙˙ Pa radi samo sto pre texta izbacuje neke brljotine i ako mozes
˙˙ stavi da ispisuje slovo po slovo (i probaj dali radi pre nego
˙˙ sto posaljes listing),
??? Kakve brljotine? Usput, da li si fajl koji sam poslao kompajlirao
u com? Ako nisi, trebalo je. ;) Znači tasm trtmrt.asm, tlink /t
trtmrt.ojb (ne zaboravi /t!). Možda si to već znao, možda i nisi, ali
valjda će poslužiti nekom ko ne zna. :) Listing koji sledi _radi_
(kao com fajl). Nisam koristio tvoje oznake za segmente, baš sam u
škripcu sa vremenom, potrudio sam se samo da sve bude OK. Nadam se da
ćeš uspeti da ga prilagodiš svojim potrebama. :)
.model tiny
.code
org 0100h
start:
jmp preko
podaci:
db "Proba.",00 ; 00 na kraju je obavezno.
ekran proc near
p1: cld
p01: lodsb
or al,al
jne p3
ret
p3: push si
;
; Ovaj deo usporava ispis (tako da ide slovo po slovo)
;
mov cx,0ffffh ; Ako ti je sporo, smanji vrednost.
p4: nop ; Ako ti je brzo, ubaci još koji nop :)
loop p4
mov ah,0eh ; Valjda je ovo ono što ti treba? (teletype mode)
int 10h
;
; ... a ovaj deo bipće :)
;
mov al,07
int 10h
pop si
jmp p01
endp
preko:
mov si,offset podaci
call ekran
mov ah,4ch
int 21h
ret
end start
E sad, definitvno može i bolje, kraće, optimizovanije, ali to
prepuštam tebi ili nekom drugom. :) So, javi kako ti odgovara. :)
P.S. Ako ubaciš beep efekat, petlja kod mene (386/40) i nema baš
smisla - usporenje je neznatno. E sad, ako hoćeš po jedno slovo u 2
sekunde, onda će imati. ;) Bez beep-a - hoće :)
asembler.47nikac,
Jeste da je pitanje "malo" glupo ali ipak:
Sta se desava kada interapt procedura koju okacim na clock koji se izvrsava
18.2 puta u sekundi traje duze od tog jednog tika?
asembler.48evlad,
>> Jeste da je pitanje "malo" glupo ali ipak:
>> Sta se desava kada interapt procedura koju okacim na clock koji se
>> izvrsava 18.2 puta u sekundi traje duze od tog jednog tika?
varijanta 1:
Svaki put kada udje u interrupt upisace povratnu adresu na stack.
Tako ce raditi dok ne prepuni stack (i ondak Ctrl-Alt-Del naravski).
varijanta 2:
Stalno ce se vrteti u tom interrupt-u. (ako zabranis ostale)
varijanta 3:
napisace oni koji znaju vise od mene.
asembler.49pik.becej,
> E sad, definitvno moze i bolje, krace, optimizovanije, ali to
> prepustam tebi ili nekom drugom. :) So, javi kako ti odgovara. :)
Sto se tice brljotina za koje si pitao,zar kod tebe nije izbacivao
brljotine na onom prvom listingu sto si poslao ili nisi ni probao,
nema veze,bitno je da ovo radi,malo sam izmenio beep tako da je bolje
uglavnom hvala ti na pomoci.
Setih se da te pitam ako znas kako se menjaju boje ,znam da menjam
modove ali neznam kako da tekst koji izlazi recimo bude u plavoj
boji,drugi red u crvenoj itd.
asembler.51dkrstic,
Molim dobre poznavaoce asemblera da obrate pažnju na poruku 1.28 u ovoj
konferenciji.
Hvala!
asembler.52zolika,
> Molim dobre poznavaoce asemblera da obrate pažnju na poruku 1.28 u ovoj
> konferenciji.
To već imaš gotovo u nekim "Računarima", a ako želiš, imam sorsove
u Moduli-2. Eh, Dragiša, što te nema...*sigh* :(
asembler.53dkrstic,
Hvala. Već sam skinuo sa Sezama sors PGP-a - ima interesantnih rutina u C-u!
asembler.54kriss,
Dva pitanja:
Da li neko ima tabelu sličnu ovoj:
8086 (16 bit data bus, 20 bit adress bus)
Instructions:
(...) - (opis)
(opis)
(...) - (opis)
(opis)
80286 (16 bit data bus, 24 bit adress bus)
Instructions:
(...) - (opis)
(opis) ( dodate samo nove stvari, flegovi itd.)
(...) - (opis)
(opis)
80386
(...)
i drugo:
da li kod 386+ pali ovo:
MOV EAX,AABBCCDDh
asembler.56pedjak,
> da li kod 386+ pali ovo:
> MOV EAX,AABBCCDDh
Jes' da nemam 386, ali ne vidim razloga da ne radi.
asembler.58mmitrovic,
Ů█▀█Ţ da li kod 386+ pali ovo:
Ů█▀█Ţ MOV EAX,AABBCCDDh
Može. Mogu i instrukcije tipa
mov eax,gs:Šebx+edi*8+1200hĆ ;) (sorry za yuscii)
Što se tiče DOCova koje si tražio, ja bi trebalo da imam Intelov
DOC za 386 i 387 (ako nije stradao u poslednjoj disketnoj krizi)
Međutim, dejan je u Računarima pisao o 486, pa pretpostavljam da ima
isti takav fajl ali za 486. Pa dejane, ako ga imaš podeli ga sa nama ;)
Inače svi ti fajlovi mogu da se nađu na anonymous FTP site-u intel.com
za intelove i motorola.com za motoroline procesore, međutim ja nemam full
internet access, pa ne mogu da ih skinem, so, ako neko ima nek skine DOC
za pentium, pošto su ga do sada sigurno okačili.
asembler.59kriss,
˙˙ Inače svi ti fajlovi mogu da se nađu na anonymous FTP site-u
˙˙ intel.com za intelove i motorola.com za motoroline procesore,
Ma poskidajte sve (ako se već neko reši), pa nek stoje ovde, UVEK
zatrebaju nekom ... U budućnosti makar kao istorijski podatak. :)
asembler.60mmitrovic,
Jedna zanimljivost, ako već nije bila:
tiče se AAD (opcode: D5 0A) i AAM (D4 0A) instrukcija,
AAD uzima raspakovani BCD broj iz AX (desetice u AH, jedinice u AL) i
pretvara ga binarni broj i stavlja u AL, a resetuje AH
AL = AH*10d + AL
AH = 0
pr.
AAD (ax=0102h)
posle toga će biti AX=000Ch
AAM radi obrnuto dakle pretvara binarni broj u raspakovani BCD
AH = AL div 10d
AL = AL mod 10d
ono što je zanimljivo je opcode (D4,5 "0Ah"), gde je ono 0A u stvari
nedokumentovana osnova (0Ah=10d), i promenom tog bajta može se ostvariti
konverzija u i iz drugih osnova
pr. opcode D5 13h
će uraditi sledeće:
AL = AH*19d + AL
AH = 0
jedino što asembleri ne podržavaju promenu tipa AAD 13h ili AAD AX,13h pa
se mora ići preko: db D5h, 13h.
Ova instrukcija, kažu u DOCu, ne radi na svim 80x86 kompatibilnim proc.
primer ne radi na NEC V-seriji
asembler.61ikordic,
RE: Početnik & asembler
Molio bih znalce i iskusne programere, da mi preporuče literaturu i softver
za jednog početnika u 80x86 asembleru. Dakle, koje knjige (papirne ili
elektronske) su raspoložive kod nas i koji bi softver najbolje odgovarao za
tako nešto.
asembler.62mjova,
> RE: Početnik & asembler
jugoslovenska knjiga, zgrada na početku kneza. tamo sam prošle
godine video više knjiga o asm programiranju.
što se tiče softvera, preporučujem tasam, mada je nebitno. tasm
koristim po inerciji (iako je bolji od masm-a ;), ali za početak
uzmi bilo šta.
asembler.64mdimitrijevic,
HI!
Znam da je o ovome bilo reci ( cak sam i ja slao nesto :) ali treba mi
rutina u ASM-u koja kopira deo memorije od odredjenog segmenta na recimo
segment A000h ( VGA video memorija ) preko DMA.
Znam da u poruci 3.266 u PC.PROG.3 ima sors ali on ne radi. :((((
Zato ako neko zna kako to uraditi preko DMA neka mi posalje.
Unapred zahvalan,
Marjan
asembler.65duzle,
>**> Znam da je o ovome bilo reci ( cak sam i ja slao nesto :)
>**> ali treba mi rutina u ASM-u koja kopira deo memorije od
>**> odredjenog segmenta na recimo segment A000h ( VGA video
>**> memorija ) preko DMA.
Ne znam da li će ti ovo pomoći, ali u zbirci (asm)snippets imass fajl koji
opisuje kako se izvodi DMA transfer i mislim da ima i neki primer. Lično mi
ovo nije trebalo ali ako želiš naći ću vremena da razgledam i isprobam.
asembler.66mdimitrijevic,
Nema potrebe da isprobavas. Posalji mi samo taj fajl pa cu ja da se zezam
sa tim. Sto vise raznih informacija imam to bolje.
Pozdrav,
Marjan
asembler.67mmitrovic,
Ů█▀█Ţ Nema potrebe da isprobavas. Posalji mi samo taj fajl pa cu ja da se
Ů█▀█Ţ zezam sa tim. Sto vise raznih informacija imam to bolje.
Ima ovde još interesenata za taj fajl ;). Kači ga ovde.
asembler.69mdimitrijevic,
Tek se sad javih :(
Evo ga fajl koji sam dobio od DUZLE.
Pozdrav,
Marjan
P.S. Pitanje i dalje vazi. Ima li neko neki primer u ASM za prenos podataka
memory-to-memory preko DMA !!!!!!
dma.arjasembler.70mdimitrijevic,
Zna li neko kako pomocu 32-bitnih instrukcija pomnoziti dva broja.
jedan 32-bitni i drugi 32-bitni ali da ne izlaze iz opsega od 32-bita. I kako
ih podeliti. E sad trebalo bi da mogu da se mnoze i dele i negativni brojevi.
Pozdrav,
Marjan
P.S. moze to da se uradi na mnogo nacina ali mene interesuju 386+ instrukcije
za to. Naravno bez koprocesora.
asembler.71mmitrovic,
Ů█▀█Ţ Zna li neko kako pomocu 32-bitnih instrukcija pomnoziti dva broja.
Ů█▀█Ţ jedan 32-bitni i drugi 32-bitni ali da ne izlaze iz opsega od 32-bita. I
Ů█▀█Ţ kako ih podeliti. E sad trebalo bi da mogu da se mnoze i dele i
Ů█▀█Ţ negativni brojevi.
Deljenje i množenje u 32b modu ti je slično kao i u 16b. Jedino
što moraš da navedeš kao operand neki 32b podatak.
pr.
DIV EBX (deli EDX:EAX sa EBX; vraća količnik u EAX, ostatak u EDX)
IDIV ECX ( --//-- samo što se radi sa označenim brojevima)
MUL ESI ( (EDX:EAX) := ESI*EAX )
IMUL (e ovda ima fešte :)
IMUL op1 (mnozi op1 sa EAX i smešta u EDX:EAX)
IMUL op1,op2 (množi op1 sa op2 i stavlja ga u op1, ako pretekne
diže CF i OF)
IMUL op1,op2,op3 (op1:=op2*op3, važe ista pravila za pretek. Jedino
je problem što op3 mora biti konstanta)
Znači samo tu imaš kontrolu da li je rezultat "uleteo" u 32 bita. Kod
ostalih moraš da proveriš EDX.
asembler.72mdimitrijevic,
E bas ti hvala. Bas se nesto namerio na ove 386+ procesore pa hocu da ih
bolje upoznam.
Pozdrav,
Marjan
asembler.73kanki,
Molio bih upućene da mi preporuče neku knjigu za učenje asemblera.
goran
asembler.74ikordic,
RE: Početnik
=> Molio bih upućene da mi preporuče neku knjigu za učenje asemblera.
Pridružujem se molbi, imam neku omladinu koja me guši već par meseci po ovom
pitanju. Daklem, neku knjigu u papirnoj ili elektronskoj formi i eventualno
izvor gdi se može nabaviti.
asembler.75kriss,
˙˙ Molio bih upućene da mi preporuče neku knjigu za učenje
˙˙ asemblera.
Ako te ne mrzi, preturi malo i stare konferencije jer je ovo pitanje
već zaslužilo da uđe u FAQ. Tamo preporučuju neku knjigu, a ja mogu da
ti kažem dve stvari:
- ja sam asembler "naučio" iz knjige Dejana Ristanovića "Asemblersko
programiranje za 6502 i Z80" a za PC se korigovao za onim udžbenikom
za četvrtu godinu srednje škole (pregledao naredbe)
- uzmi TASM, kreni da pišeš svoj prvi program i spremi se na krv, znoj
i suze.
asembler.76mjova,
> Ako te ne mrzi, preturi malo i stare konferencije jer je
> ovo pitanje već zaslužilo da uđe u FAQ.
baš tako, u staroj pc.prog postoji jedna datoteka (a možda i više
njih) koje se bave ovim problemom. naime, jedna se sigurno zove
ASMHELP.* (ili tako nekako ;). u njoj je SUPER opisan asembler
(nažalost 8086, a možda i 80286 - ne znam više), pa ovo uvek
preporučujem kao početak, čak i onome koji nikad nije pisao ništa
u asembleru.
što se mene tiče, ja sam asembler naučio iz iskustva ;). imao sam
spektruma i kasnije pazario mons & gens. najviše vremena sam
provodio u monsu i *provaljivao* šta koja instrukcija radi. samo
da pomenem, tada *nije bilo knjiga* u mojoj okolini - nisam imao
gde da ih pazarim. dobro se sećam svog otkrića po imenu FLAGS ;).
moj Bože, kako je to vreme imalo *dušu*.
kao prvi problem koji sam rešavao bilo je štampanje teksta na
ekran. RST #10 (jel tako beše?) je bilo očajno sporo, pa sam ubrzo
napisao mnogo bolju rutinu. sad, ja nisam pojma imao šta je to RST,
a ni mnogo toga drugog, pa sam jurio knjige i dalje.
prva, i jedina knjiga, koju sam našao bila je DISASEMBLIRANI ROM, i
pretpostavljam da je i danas većina Spektrum programera ima. tu
knjigu sam dobio na poklon kopiranje (dakle, dobio sam je par dana
da bih je kopirao), od tada čuvenog pirata Zorana Mošorinskog. isti
je danas gl urednik SK. pored knjiga, u svom izlogu, zoran je imao
i razne utl programe (hobbit, manic miner...). naravno, to je tada
bilo popularno i skoro svako se time bavio. ono što je njega
izdvajalo od drugih, je da se tih dana prebacivao na komodor, pa je
delio sve ono što mu nije trebalo ;). drugo, mislim da je studirao
nešto o računarima (jal pmf, jal etf).
i tako, uz pomenutu knjigu, ja sam učio asembler analizirajući
razne rutine roma. kasnije sam pisao i svoj rom, za centroniks, i
to je radilo ko zmaj.
i danas imam sve to, rado se setim, ali ovo vreme *nema* dušu. sve
se dešava na silu i prevaru. možda sam se promenio, ali više me
ništa ne fascinira kao spektrum tih dana.
asembler.77dejanr,
>> i tako, uz pomenutu knjigu, ja sam učio asembler analizirajući
>> razne rutine roma. kasnije sam pisao i svoj rom, za centroniks, i
>> to je radilo ko zmaj.
Hm, ja sam svoje programerske početke imao sa računarom TI-58, i to
sa uputstvom na italijanskom koji pojma nisam imao... doduše, kupio
sam i rečnik, to je mnogo pomoglo ;(
>> i danas imam sve to, rado se setim, ali ovo vreme *nema* dušu. sve
>> se dešava na silu i prevaru. možda sam se promenio, ali više me
>> ništa ne fascinira kao spektrum tih dana.
Možda su današnji računari prosto bili dovoljno jednostavni da su se
mogli upoznati "u dušu". Za neki TI-58 si mogao napraviti program
svetske klase za dva popodneva. Za neki Spectrum, naročito u početku,
za par meseci. Za PC program svetske klase treba da piše tim ljudi,
možda više godine. Zato sve to izgleda nedostižno...
asembler.78kriss,
˙˙ njih) koje se bave ovim problemom. naime, jedna se sigurno
˙˙ zove ASMHELP.* (ili tako nekako ;). u njoj je SUPER opisan
˙˙ asembler (nažalost 8086, a možda i 80286 - ne znam više), pa
˙˙ ovo uvek preporučujem kao početak, čak i onome koji nikad nije
˙˙ pisao ništa u asembleru.
Za početak je sasvim dovoljan 8086, a svaki 'upgrade' kasnije dolazi
po potrebi, ili bolje rečeno vremenom. Postoji još jedna datoteka koja
se zove asmtutor i ima je po sezamu (možda čak i u nekom diru), i tamo
je fino objašnjeno sve najneophodnije za rad.
˙˙ moj Bože, kako je to vreme imalo *dušu*.
Tačno. Ja sam u to doba bio neki osmi osnovne i večito sam se čudio
kako se taj Z fleg postavi na jedan ako je rezultat neke operacije
nula. :) A tek kad nema nikakvih operacija a on se opet postavi na 1!
:) Kranji rezultat takvog otkrivanja 'tople vode' je specifičan osećaj
koji se ne može opisati, a koji se neminovno razvije i koji u mutnim
vodama uvek razdvoji teorijski perfektnog od samoukog praktičnog
programera.
˙˙ i danas imam sve to, rado se setim, ali ovo vreme *nema* dušu.
˙˙ sve se dešava na silu i prevaru. možda sam se promenio, ali
˙˙ više me ništa ne fascinira kao spektrum tih dana.
Tačno, *nema* dušu. Svi rade kao roboti, kretivnost je na nuli, želja
za istraživanjem ispod nule. Svi čekaju da dobar program sam padne s
neba. :(
asembler.79dejanr,
>> > i danas imam sve to, rado se setim, ali ovo vreme *nema* dušu.
>> > sve se dešava na silu i prevaru. možda sam se promenio, ali
>> > više me ništa ne fascinira kao spektrum tih dana.
>>
>> Tačno, *nema* dušu. Svi rade kao roboti, kretivnost je na nuli, želja
>> za istraživanjem ispod nule. Svi čekaju da dobar program sam padne s
>> neba. :(
Hm, vidim da ćemo u ORKA, pored teme 'najbolji', morati da otvorimo i temu
'stara.dobra.vremena' :) Ima nešto u tome što kažete, u tim danima su nam
kompjuteri bili nešto sasvim novo i uzbudljivo. Međutim, sa njima se ništa
pametno (šta god ta reč značila :) nije moglo uraditi. Kad treba da pišeš
tekst, ajde na kasetu, posle neće kaseta da se učita, šteluj azimut, fuj.
Najzad odštampaš na Seikoshi, pa u štampariji neće da prime da to slažu,
kažu mnogo tačkasto :( Presedne ti posao, lakše bi ti bilo 100 puta da si
kucao na mašini. Posle imaš disketu, pa kad treba da sortiraš 500 kilobajta
podataka, ubiješ se kao ratno siroče da smisliš kako to da obaviš. Zoran
(zz) može da vam priča kako je sortirao nekih par megabajta na Commodore
PC-ju, danima menjajući diskete.
Danas o svemu tome ne razmišljaš, kompjuter radi sam, i to dosta lepo :)
Što se mene tiče, negde od 1988. ili 1989. kompjuter mi je postao mašina
koja radi koristan posao. Možda sam je pre toga više "voleo", ali od tada
mi znatno bolje služi :)
asembler.80dpredovic,
> ˙˙ i danas imam sve to, rado se setim, ali ovo vreme *nema*
> dušu. ˙˙ sve se dešava na silu i prevaru. možda sam se
> promenio, ali ˙˙ više me ništa ne fascinira kao spektrum tih
> dana.
>
> Tačno, *nema* dušu. Svi rade kao roboti, kretivnost je na nuli,
> želja za istraživanjem ispod nule. Svi čekaju da dobar program
> sam padne s neba. :(
Jedini varijanta kojom ja mogu da objasnim pojavu Windows-a je da niko
iz MalogMekog nikada nije video rutinu za "super-turbo-express-brzi"
CLS na spektrumu. Takvo parče koda uvek će više da mi znači od bilo
kojeg Knutha, Wirtha, Dijkstre ili Stroustrupa.
asembler.81pbojan,
>> za par meseci. Za PC program svetske klase treba da pise tim
>> ljudi, mozda vise godine. Zato sve to izgleda nedostizno...
Pod uslovom da se pise bas sve "iz pocetka" ;). Koriscenjem naprednih
alata se vreme moze znatno skratiti. Ja tipujem na tim od pet ljudi
i manje od godinu dana za program svetske klase. Uz prethodna iskustva na
nekom slicnom projektu, sest meseci.
asembler.82mmitrovic,
Ů█▀█Ţ moj Bože, kako je to vreme imalo *dušu*.
Amin. ;)
Kad se setim (od pre nekih 6 godina) one "izborne nastave" kad su nam
poslali nekog tipa da nam drži programiranje ;)
Par postavljanja registara, i jedno LDIR (valjda tako beše), i voila
eto ga sneg na ekranu :)). Matori je samo gutao knedle, a ja cvetam ;)
Behu to vremena. Doduše kad se setim razredne, baš mi se i ne vraća u
to doba ;).
asembler.83sslavko,
Voleo bih da još neko proba ovo pa da mi javi da li sam to ja
lud ili nešto nije u redu sa DOS-om.
Naime, potrebno je pronaći tekuću poziciju u fajlu. To radim
DOS funkcijom 42h (Move file pointer), i to tako da u AL stavim 1
(mod kretanja od tekuće pozicije), u par CX:DX stavljam 0
(pomeri se za 0 bajtova), i zovem int 21. On mi u paru DX:AX
vraća novu poziciju, odnosno pošto se pomeram za 0 onda je to
tekuća. Sve to lepo radi dok ne pređem 65535. Onda bi u DX
trebalo da bude 1, jel tako. E, meni je u DX stalno 0!!!
Seansa sa debagerom je pokazala da je DX stvarno 0 odmah nakon
int 21. Napominjem da je Carry flag i dalje 0 što znači da
nema greške prilikom pomeranja. Šta je u pitanju? Bag u DOS-u??
Verzija DOS-a je 6.0.
Pozdrav
Slavko.
P.S. Ovo gore je provereno i na DOS-u 6.2 i na DR.DOS-u 6.0,
i svuda je isto. Znači da ja negde grešim ali gde?
asembler.84kanki,
>>˙˙ Molio bih upućene da mi preporuče neku knjigu za učenje
>>˙˙ asemblera.
>>
>>Ako te ne mrzi, preturi malo i stare konferencije jer je ovo pitanje
Malo sam zabrzao sa pitanjem...
>>- uzmi TASM, kreni da pišeš svoj prvi program i spremi se na krv, znoj
>>i suze. """""""""
""""
Znam da je težak za učenje, ali brate ubi me u pojam :)
asembler.85kriss,
˙˙>> - uzmi TASM, kreni da pišeš svoj prvi program i spremi se na
˙˙>> krv, znoj i suze.
˙˙ """"""""" """"
˙˙ Znam da je težak za učenje, ali brate ubi me u pojam :)
:)) Ne daj se, nije sve tako crno. Crni su samo krv i znoj. ;))
Ne znam kako je kod drugih bilo, ali kod mene se situacija ovako
odvijala:
- naredbe su delovale prilično razumljivo, lako za pamtiti,
neobavezujuće.
- neke sitne nejasnoće su postojale (kako rezultat može da bude nula,
ako ne vršim nikakvu aritmetičku operaciju?? hint: cmp ax,0 ako je
ax=0)
- i flegovi su bili jasni (relativno)
- teorija je prošla bez puno muke.
Ali!
Onda sedam da napišem prvi program (više se ne sećam šta je to bilo,
ali sigurno nije bio 'Hello, world!' - ili je bio, ali ga ja ne
računam za prvi ;) i kreću muke. Te ne radi ovo, te ono, pa asembler
prijavi 150 grešaka, pa kad sve prođe OK, program ne radi kako bi
trebao - užas živi!
E onda sedi, gužvaj se, i na kraju - rezultat! Radi!! Pa pauza, pa
unapređivanje, proširivanje - ma sve je sad lako. E onda kreću drugi
zalogaji, pa ista priča. :(( I tako jedno 5-6 puta, vremenski 5-6
meseci (sa recimo pauzom, dve od po mesec ;) i na kraju je već bilo
bolje.
Problem kod asm-a je što skoro nikad nisi načisto da li to radi ili
ne. E onda vreme počne da čini svoje, pa na kraju ostane neki osećaj
koji se sve više i više razvija (logično). Super, rek'o bi neko, mučiš
se ali rezultat dođe. Svakako da dođe, ali kad na kraju uporediš vreme
provedeno učeći i mučeći se sa asemblerom, i ukapiraŠ da si za to isto
vreme mogao bar 2 i više puta da uznapreduješ u C-u, smuči ti se i
odustaneš. To je prelomni trenutak, ili radiš do kraja ili odustaneš
na početku. Kod mene taj početak još uvek traje, a dokle će nemamo
pojma. ;)
Generalno, u asembleru se ne isplati programirati, ali se itekako
isplati naučiti ga - mnoge stvari kasnije nećeš ni razmišljati kako da
izvedeš, same će se poka'sti. :) Jer osnova je osnova, i kasnije
razumevanje viših programskih jezika je mnogo, mnogo lakše. :)
asembler.86vitez.koja,
#=> izvedeš, same će se poka'sti. :) Jer osnova je osnova, i
#=> kasnije razumevanje viših programskih jezika je mnogo,
#=> mnogo lakše. :)
Baš naprotiv, asemblersko razmišljanje kod upotrebe viših
programskih jezika je mana.
asembler.87omega,
Ţ Generalno, u asembleru se ne isplati programirati, ali se itekako
Ţ isplati nauciti ga - mnoge stvari kasnije neces ni razmisljati kako da
Neke stvari MORAJU da se programiraju u asembleru.
asembler.88evlad,
>> Baš naprotiv, asemblersko razmišljanje kod upotrebe viših
>> programskih jezika je mana.
Zavisi na koje više programske jezike misliš !
C ili Clipper ;)
asembler.89neman,
># => izvedes, same ce se poka'sti. :) Jer osnova je osnova,
># i => kasnije razumevanje visih programskih jezika je
># mnogo, => mnogo lakse. :)
>
> Bas naprotiv, asemblersko razmisljanje kod upotrebe visih
> programskih jezika je mana.
Secam se jednog slucaja
"Joj, pa ovde ima tipove podataka, kazes Char i picis" :)))
Asm -> C
asembler.90bceklic,
> Generalno, u asembleru se ne isplati programirati, ali se
> itekako isplati nauciti ga - mnoge stvari kasnije neces ni
> razmisljati kako da izvedes, same ce se poka'sti. :) Jer osnova
> je osnova, i kasnije razumevanje visih programskih jezika je
> mnogo, mnogo lakse. :)
U asembleru mogu da napisem sve sto pozelim i da mi pri tome treba
manje vremene nego recimo u TP-u. Naravno ovo vazi za manje projekte
( < 5.000 linija koda) dok za vece projekte treba koristite neki od
visih jezika i posebno ukljucivati asemblerske procedure i funkcije.
Sto se tice samog razmisljanja ne mogu u potpunosti da se slozim. Kako
duze vreme radim u asembleru a trenutno citam Rick Spence-a (Clipper)
moram priznati da mi nije ni malo lako...;)
POzdrav!
asembler.91pedjak,
> U asembleru mogu da napisem sve sto pozelim i da mi pri tome treba
> manje vremene nego recimo u TP-u. Naravno ovo vazi za manje projekte
> ( < 5.000 linija koda) dok za vece projekte treba koristite neki od
Zato što imaš već razvijene biblioteke.
asembler.92bceklic,
>> U asembleru mogu da napisem sve sto pozelim i da mi pri tome
>> treba manje vremene nego recimo u TP-u. Naravno ovo vazi za
>> manje projekte ( < 5.000 linija koda) dok za vece projekte
> treba koristite neki od
>
> Zato sto imas vec razvijene biblioteke.
U svakom od mojih programa pisanih u asembleru koristim samo moje
externe funkcije i procedure. Nikakve 'strane' biblioteke.
Naravno za razvoj ovih procedura je trebalo vremena ali se citav
posao pre ili kasnije isplati.
POzdrav!
asembler.93sslavko,
Molio bih cenjeni auditorijum da obrati pažnju na moju poruku
broj 4.83. Verujem da će neko naći malo vremena da se pozabavi
mojim problemom.
Hvala.
asembler.94kriss,
Problem:
- turbo dibager niz bajtova
83 BC 16 00 00
"vidi" kao instrukciju
cmp word ptr ds:[si+0016],0000
- kada se to bukvalno prepiše i napravi COM fajl, tamo stoji
83 7C 16 00
znači em različito em skraćeno. OK, jedan bajt uštede, super, ali
ja baš hoću da mi se dotična naredba prevede u prvi niz. Da li neko
zna šta je u pitanju, i kako da prevarim asembler?
Usput, ovo se događa i sa nekim drugim instrukcijama, naročito sa
onima u kojima figuriše [si+xxxx].
asembler.95mjova,
> 83 BC 16 00 00
> 83 7C 16 00
radi se o memorijskom modelu u kome prevodiš prg.
> cmp word ptr ds:[si+0016],0000
oznaka cmp je zapravo procesorska instrukcija 83, iza nje treba da
sledi oznaka prvog operanda. sad, pošto je prvi u fazonu [SI+n],
onda postoje više mogućnosti:
SI = 3c
SI + 8-bitni indeks = 7c
SI + 16-bitni indeks = bc
e, sad, ako hoćeš da ti se baš to nađe u kodu, onda možeš uraditi
verovatno neku magiju ;), ili da skratiš muku i napraviš nešto
poput:
db 083h, 0bch, 16h...
kad malo bolje pogledam, ovo može zavisiti i od nekakve
optimizacije, a i od modela u kome prevodiš dati program.
asembler.96kriss,
˙˙ radi se o memorijskom modelu u kome prevodiš prg.
˙˙
˙˙> cmp word ptr ds:[si+0016],0000
Aha, jasno ...
˙˙ e, sad, ako hoćeš da ti se baš to nađe u kodu, onda možeš
˙˙ uraditi verovatno neku magiju ;), ili da skratiš muku i
˙˙ napraviš nešto poput:
˙˙
˙˙ db 083h, 0bch, 16h...
Ovo dole sam radio dok mi se nije smučilo ... više bi me zanimala
magija. ;) Nego sve mi se čini da bi ovakva stvar morala da se
dokumentuje, i da bi asembleri (bolji) morali da imaju neku pseudo
instrukciju. Sad je magija naći je ... ;((
asembler.97nbulatovic,
> e, sad, ako hoćeš da ti se baš to nađe u kodu, onda možeš uraditi
> verovatno neku magiju ;), ili da skratiš muku i napraviš nešto
> poput:
mozes pomo°─cu neke asemblerske direktive da naglasis da se radi bas
o onom tipu koji ti hoces (nesto kao BYTE, WORD, BYTE PTR, WORD PTR).
NB
asembler.98drpr,
Imam pitanje za sve ljude koji se bave pisanjem u assembleru:
Zanima me da napišem recimo programče "hello world" ali da to
radi sa 32-bitnim instrukcijama. Znači da u tasmu stavim gore
jedno .386 i da to sve lepo radi. Da li se neko bavio ovim i
kako se to radi jer meni ne uspeva.
cope
asembler.99duzle,
Evo ga .asm source za 3D rotaciju objekta. Uz njega ;) dolazi i mali .txt u
kome je sve objasnjeno. Enjoy. :)
Ogi
3dsource.arjasembler.100duzle,
MODSRC.zip je arhiva koja sadrzi .asm source za sviranje (pogadjate) .mod
fajlova. Enjoy.
Ogi
modsrc.zipasembler.101maksa,
>> Imam pitanje za sve ljude koji se bave pisanjem u
>> assembleru: Zanima me da napišem recimo programče "hello
>> world" ali da to radi sa 32-bitnim instrukcijama. Znači da u
>> tasmu stavim gore jedno .386 i da to sve lepo radi. Da li se
>> neko bavio ovim i kako se to radi jer meni ne uspeva.
Da li si na kraju stavio .8086 ?
Ne trošim čist asm, samo u poneki CPP ubacim 32-bitni inline
asm, i to sasvim fino (i do 2 puta brže :) radi, al' mi se i
tu javlja problem. Na pr., na početku C/CPP programa stavim
#pragma inline, što bi značilo da taj modul treba da prevede
asemblerom. On prevodi, prevodi, prevodi, i na kraju TASM prijavi
grešku u stilu 'Neadekvatna naredba za procesor ... ' i namesti
se kod naredbe leave u asm listingu koji je generisao. Ovo se dešava
samo kad prevodim iz IDE-a (3.1). Iz komandne linije se sve prevede
i radi ok. Je l' zna neko šta treba da navedem u Transfer opcijama
TASM-a, pa da i iz IDE-a funkcioniše kako treba ?
asembler.102brus,
Verovatno je bilo 100x ali mi hitno treba...
Da li neko zna kako da deinstaliram rezidentni program iz memorije.
Prvi deo oko deinstalacije vektora je ok.
1. Proverim da li tekuci vektor za odredjeni int pokazuje na moju rutinu
2. Ako pokazuje, zabranim intove (cli) i prebacim na stari int-vektor
Medjutim, sta dalje (treba mi da oslobodim memoriju) ?
asembler.103andrejt,
Q> Medjutim, sta dalje (treba mi da oslobodim memoriju) ?
Nije assembler ali pogledaj poruku iz PC.P.3 8.677.