PCPROG.5

05 Jan 1995 - 02 Oct 1995

Topics

  1. algoritmi (106)
  2. comment (2)
  3. ms.dos (27)
  4. windows (332)
  5. asembler (203)
  6. basic (228)
  7. jezici (126)
  8. pascal (1085)
  9. cccc (546)
  10. cpp (117)
  11. clipper (1048)
  12. baze.podataka (194)
  13. fox (231)
  14. cavo (192)
  15. razno (593)

Messages - asembler

asembler.1 mibak,
Interesuje me uloga određenih(a može i svih) I/O aresa kao na primer in al,60h ; sourcer javlja keybd scan or sw1 ali šta se stvarno tamo nalazi in al,61h out 61h,al ; al=80h out 20h,al ; al=20h Možda postoji neki faj sa kompletnim(mada sumnjam) opisom portova ili programabilnih kontrolera kao 8255,8259
asembler.2 evlad, -> #1, mibak
>> Možda postoji neki faj sa kompletnim(mada sumnjam) opisom portova >> ili programabilnih kontrolera kao 8255,8259 i82C55A programmable peripheral interface ----------------------------------------- ┌──────────────────┐ PA3 ─┤ 1 40 ├─ PA4 PA2 ─┤ 2 39 ├─ PA5 PA1 ─┤ 3 38 ├─ PA6 PA0 ─┤ 4 37 ├─ PA7 đRD ─┤ 5 36 ├─ đWR đCS ─┤ 6 35 ├─ RESET GND ─┤ 7 34 ├─ D0 A1 ─┤ 8 33 ├─ D1 A0 ─┤ 9 32 ├─ D2 PC7 ─┤ 10 31 ├─ D3 PC6 ─┤ 11 30 ├─ D4 PC5 ─┤ 12 29 ├─ D5 PC4 ─┤ 13 28 ├─ D6 PC0 ─┤ 14 27 ├─ D7 PC1 ─┤ 15 26 ├─ VCC PC2 ─┤ 16 25 ├─ PB7 PC3 ─┤ 17 24 ├─ PB6 PB0 ─┤ 18 23 ├─ PB5 PB1 ─┤ 19 22 ├─ PB4 PB2 ─┤ 20 21 ├─ PB3 └──────────────────┘ CONTROL WORD ┌────┬────┬────┬────┬────┬────┬────┬────┐ ┌───────────────┐ │ D7 │ D6 │ D5 │ D4 │ D3 │ D2 │ D1 │ D0 │ │ GROUP B │ └─┬──┴─┬──┴─┬──┴─┬──┴─┬──┴─┬──┴─┬──┴─┬──┘ ├───────────────┤ │ └─┬──┘ │ │ │ │ └──────────┤ PORT C (LOWER)│ │ │ │ │ │ │ │ 1 = INPUT │ │ │ │ │ │ │ │ 0 = OUTPUT │ │ │ │ │ │ │ ├───────────────┤ │ │ │ │ │ └───────────────┤ PORT B │ │ │ │ │ │ │ 1 = INPUT │ │ │ │ │ │ │ 0 = OUTPUT │ │ │ │ │ │ ├───────────────┤ │ │ │ │ └────────────────────┤ MODE SELECTION│ │ │ │ │ │ 1 = MODE 1 │ │ │ │ │ │ 0 = MODE 0 │ │ │ │ │ └───────────────┘ │ │ │ │ ┌───────────────┐ │ │ │ │ │ GROUP A │ │ │ │ │ ├───────────────┤ │ │ │ └─────────────────────────┤ PORT C (UPPER)│ │ │ │ │ 1 = INPUT │ │ │ │ │ 0 = OUTPUT │ │ │ │ ├───────────────┤ │ │ └──────────────────────────────┤ PORT A │ │ │ │ 1 = INPUT │ │ │ │ 0 = OUTPUT │ │ │ ├───────────────┤ │ └──────────────────────────────────────┤ MODE SELECTION│ │ │ 00 = MODE 0 │ │ │ 01 = MODE 1 │ │ │ 1X = MODE 2 │ │ └───────────────┘ │ ┌───────────────┐ └─────────────────────────────────────────────┤ MODE SET FLAG │ │ 1 = ACTIVE │ └───────────────┘ da napomenem 55-tica ima 3 moda rada ... za 59-ku bih morao punooo da kucam iz intelovog kataloga ... ima 4 ICW-a i 3 OCW-a, ono 20h je EOI za OCW2
asembler.3 bkaradzic, -> #1, mibak
> Mozda postoji neki faj sa kompletnim(mada sumnjam) opisom portova Postoji:) TECH HELP mozda ga ima na sezamu(?).
asembler.4 pedjak, -> #1, mibak
> Interesuje me uloga određenih(a može i svih) I/O aresa kao na primer > Možda postoji neki faj sa kompletnim(mada sumnjam) opisom portova > ili programabilnih kontrolera kao 8255,8259 Postoji, fajlovi su inter*.*, ima ih na Sezamu, ne znam koji direktorijum.
asembler.5 bulaja, -> #3, bkaradzic
│Postoji:) TECH HELP mozda ga ima na sezamu(?). └─── MSDOS - R:\INFOPROG ---------------------- techelp zip 167638 Tech Help, PC tehničke informacije za programere
asembler.6 mibak, -> #2, evlad
> da napomenem 55-tica ima 3 moda rada ... > > za 59-ku bih morao punooo da kucam iz intelovog kataloga ... > ima 4 ICW-a i 3 OCW-a, ono 20h je EOI za OCW2 Zaista ti hvala na trudu, ali ova sličica mi ne govori puno(jer još nisam dublje upoznat u same kontrolere). Mene(kao pocetnika u asm prog.) interesuju neki primeri programiranja kontrolera sa opisom portova.
asembler.7 mibak, -> #5, bulaja
> MSDOS - R:\INFOPROG > ---------------------- > techelp zip 167638 Tech Help, PC tehničke informacije za > programere Hvala svima na info.
asembler.8 jkpbvk,
U drugom broju Altera je bio source za scroll ali izgleda da ne radi kako treba, naime kad se kompajlira javi gresku kod SHL AX,4 , kad sam smanjio vrednost na 1 , dakle SHL AX,1 , prosao je kroz kompajler ali zato umesto slova izbacuje neke brljotine. Jel' zna neko resenje ? Za one koje nisu skinuli Alter uz poruku je source. intro.arj
asembler.9 bceklic, -> #8, jkpbvk
> U drugom broju Altera je bio source za scroll ali izgleda da ne > radi kako treba, naime kad se kompajlira javi gresku kod SHL > AX,4 , kad sam smanjio vrednost na 1 , dakle SHL AX,1 , prosao > je kroz kompajler ali zato umesto slova izbacuje neke > brljotine. Jel' zna neko resenje ? Problem je u tvom kompajleru. Ako koristis tasm ne bi trebalo da bude bilo kakvih problema. E sad, sama sustina naredbe namece resenje. Ako vec kompajler ne mozes da nateras da ti uspesno prevede shl ax,4 umesto ove naredbe stavi cetiri (4) naredbe shl ax,1 koje imaju isti efekat. Ovo mora da radi bez obzira na kompajler. Brljotine su posledica pogresnog izracunavanja adrese karaktera fonta u memoriji. Pozdrav!
asembler.10 jkpbvk, -> #9, bceklic
||| Problem je u tvom kompajleru. Ako koristis tasm ne bi trebalo da ||| bude bilo kakvih problema. E sad, sama sustina naredbe namece resenje. ||| Ako vec kompajler ne mozes da nateras da ti uspesno prevede shl ax,4 ||| umesto ove naredbe stavi cetiri (4) naredbe shl ax,1 koje imaju isti ||| efekat. Ovo mora da radi bez obzira na kompajler. Brljotine su posledica ||| pogresnog izracunavanja adrese karaktera fonta u memoriji. Imam TASM 2.01 i kompajlirao sam ga sa /m2 switche-om i nije hteo. Inace radi sa 4 shl ax,1 Thanx
asembler.11 mdimitrijevic, -> #10, jkpbvk
Hi, ja sam autor SKROL-a. Stvar je u tome sto sam SKROL pisao TASM-om 3.1 mada me cudi sto nece da prevede SHL AX,4 ???? Uzgred citaj novi broj bice jos nesto lepse od mene. Trenutno se bavim obicnijim rutinama da bi ljudi mogli da shvate neke fazone od nule mozda cu vec za sledeci broj napisati tekst o sprajtovima u X-MODE-u, ali videcemo ko zna sta mi padne na pamet. :) Pozdrav, Marjan
asembler.12 mdimitrijevic, -> #10, jkpbvk
Uzgred mala napomena skrol je napisan da bi pazljivo prateci tok primera naucili neke osnovne stvari. Mnoge od najlepsig rutina za INTRO-e su napisane vrlo prosto ali je zato ideja komplikovana :). Pozdrav, Marjan
asembler.13 kriss, -> #11, mdimitrijevic
˙˙ Stvar je u tome sto sam SKROL pisao TASM-om 3.1 mada me cudi ˙˙ sto nece da prevede SHL AX,4 ???? Problem je što SHL kod 808x procesora "radi" samo sa jedinicom ili sa CL registrom, tj. može da se piše SHL reg,1 ako se šiftovanje vrši za jedno mesto ili SHL reg,CL ako treba da se pomeri ulevo za više mesta, što naravno uslovljava punjenje CL registra pre toga Kasnije je to izmenjeno, pa SHL ax,4 prolazi bez problema. Međutim ... :) problem je u starom TASM-u, koji izgleda nema SMART direktivu, koja rešava ovaj i još neke specifične slučajeve (dodatni JMP, CALL FAR u NEAR opsegu itd.), pa su rešenja sledeća: - ili program prevesti nekim novijim TASM-om, kod koga je SMART default stanje - ili zameniti SHL ax,4 sa 4 SHL ax,1 No to ste već znali, ali eto, možda neko nije ... O:)
asembler.14 mdimitrijevic,
Evo sta uradi TASM kada napisem SHL AX,8. On napise u fajl 8 puta SHL AX,1 logicno zar ne ? :))) Pozdrav, Marjan
asembler.15 bkaradzic, -> #14, mdimitrijevic
> Evo sta uradi TASM kada napisem SHL AX,8. On napise u fajl 8 puta SHL AX,1 > logicno zar ne ? :))) Zaboravio si da na pocetak programa stavis .286 :) čatßoy
asembler.16 rcolic,
E ljudi ovako, posto se dugo nisam javljao, da postavim pitanje da li se vde slao sors programa za pustanje VOC semplova, i ako jeste Please lupite mi jedan pointer na poruku :) Ako nije bio anek neko ga ima molio bi za jedan mail fala
asembler.18 djuradj,
hi! Zanima me kako se vrsi unos neke recenice u string. Npr.: stampam 'Koliko imate godina :' ukuca dvadeset ocu da u promenljivu god bude upisano 'dvadeset' Valjda ste shvatili. Izvinite ako je ovo nesto prosto,ali ja sam pocetnik. Pozdrav, Mindza.
asembler.19 jkpbvk,
Renaissance '93 Presents PMODE v2 1232 Coded By: Tran Of Renaissance Finally! A raw, DPMI, VCPI, and XMS Compliant Protected Mode System Designed For The Serious 386 Programmer Works Flawlessly Under DesqView, QEMM, and even. asm32pm.arj
asembler.20 bkaradzic, -> #19, jkpbvk
PMODE/W (PMode za Watcom C) secnuto iz DEMONEWS-a;) ------------------------------------------------------------------------------ ______ _ _ _ _ (_____ \ | | | || || | _ _____) )___ ___ _ | | ____ | || || | ____| |_ ____ ___ ____ | ____/ \ / _ \ / || |/ _ ) | ||_|| |/ _ | _)/ ___) _ \| \ | | | | | | |_| ( (_| ( (/ / | |___| ( ( | | |_( (__| |_| | | | | |_| |_|_|_|\___/ \____|\____) \______|\_||_|\___)____)___/|_|_|_| ---------------------------------------------------------------------------- PMODE/W (PMode for Watcom C) review by StarScream of Renaissance ------------------------------------------------------------------------------ This is an article about Tran and Daredevil's new PMODE/W (Pmode for Watcom C/C++). This new PMODE looks to be a very exciting new product and it could be quite groundbreaking for the demoscene! Special thanks to StarScream for contributing this article. For more information, be sure to check out the advertisement for PMODE/W in the advertisements section of DemoNews. -Ryan Why Watcom? ~~~~~~~~~~~ Over the past year, a lot of talk has been generated in the demo scene about the WATCOM C/C++ compiler. Almost all of the new games coming out for the PC seem to be using it, and with good reason! WATCOM C has many great features to boast; It uses the Protected Mode of the 386 or higher processor, and generates highly optimized code which often runs many times faster than the code generated by a competing compiler such as Borland. The benefits of increased speed are obvious - if one can develop with more C and less Assembly but not lose a great deal of speed in the process, development time can be greatly reduced. Many people are even debating whether they need to use Assembly anymore! Although WATCOM C can generate fast code, it can not beat an expert Assembly coder, and I have personally outwritten it many times with relative ease. Nevertheless, a lot of game authors have been noticing that a slightly slower routine written in WATCOM will often do just as well for them as if they had coded the same thing in Assembly. For this reason, many games are being written with WATCOM. Protected Mode and Tran's PMODE ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The Protected Mode of the 386 and higher processors was first put to use in the demo scene when Tran wrote the first version of his revolutionary DOS extender entitled 'PMODE', and began using it in Renaissance productions. Protected Mode allows programmers a lot more flexibility, ease of coding, and lets them access ALL of memory with NO speed loss. Programs which use what is known as Real Mode are limited to the bottom 640k of memory and can only access the other x megs on the computer by slowly swapping them back and forth. Tran's PMODE is probably the standard for DOS extenders in the demo scene today. It has been since its release a few years ago. Tran has been constantly updating it, and from using it I can tell you that it is nearly if not 100% bug free now. In fact, the only drawbacks to using PMODE up until now had been that you usually had to code in all Assembly with it because the libraries in C didn't work, and that all of the DOS Interrupts had been remapped, making it take a little time to learn how to use. However, Daredevil & Tran's new PMODE/W (PMODE for WATCOM!) completely removes these drawbacks and adds great new advantages as well as we will see later in the review. What ISN'T cool about WATCOM C ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Actually, WATCOM C is VERY cool. However, it is packaged with an extender called DOS4GW, which you may recognize because it pops up an annoying little thing telling you that's its name every time you run something coded in WATCOM C. The DOS4GW extender leaves many things to be desired, but it also has some nice features. Together with WATCOM C it's allright. DOS4GW has two great things about the way it works with WATCOM C. First of all, memory is considered as being TOTALLY linear in most cases. If you want to access the address 0a0000h, you can without having to change that number in any way. All of the pointers correctly point to their respective addresses with no change needed. The other nice thing is the support DOS4GW has for DOS and BIOS Interrupts. All of these are mapped directly to their normal Interrupts, so you can access the Interrupts just as if you were coding in Real Mode. That's nice because you don't have to learn anything new! Unfortunately, DOS4GW can NOT be used in the demo scene for a few reasons which are totally annoying. One of these reasons is its size. DOS4GW takes up about 250K on disk! That's not so cool for an intro or something. Another is that it HORDES memory when your program is running - it takes about 300k (more i think) of memory AWAY from your program for its own personal use! Finally, it has slow Real Mode/Protected Mode transitions. For a timing critical routine, it is totally not accurate enough for use. These are all major problems with the extender that don't seem like they will ever be resolved - they are just fundamental flaws in the way it was programmed. PMODE/W ~~~~~~~ For the good part of a year now, I have been wishing that I could use WATCOM C in things we at Renaissance do for the demo scene. It would make my life much easier and really help me out a lot. Daredevil and I have discussed the idea of a using PMODE with a C compiler any times in the past, and at one point Tran tried adding partial PMODE support to Borland C. However, Borland turns out to be an extremely buggy compiler (as Tran found out :) and, due to the nature of the compiler, the support was not even good enough for it to be a useful tool for me. Wonderfully, Daredevil and Tran decided to really get down to work a couple of months ago and made the decision to make a full blooded PMODE for use with WATCOM C. All that needed to be done was to replace the DOS4GW extender with their own new version of PMODE. However, this proved not to be such a simple task. In fact, at least two other people who I know have tried to do the same thing - their versions, although technically they 'work', do not allow the same flexibility of coding styles (i.e. the ability to add your old Real Mode code/libs into your Protected Mode program) and do not emulate many of the features necessary to WATCOM C well enough or at all. Tran and Daredevil have written a new and updated version of PMODE especially for their system with WATCOM C. This new version has a bundle of great things, one of which is the size! PMODE/W IS UNDER 8K! Compare than to DOS4GW's whopping almost 300K! PMODE/W also adds a lot of speed to the switching done between Real and Protected Modes. These are great features, but the best feature of all I find to be the fact that it is TOTALLY COMPATIBLE with DOS4GW and WATCOM C! That means that you can add it to your code later on even if you decide to develop with DOS4GW to begin with and not have to change ANYTHING! I hear it even runs DOOM and Epic Megagames' ONE MUST FALL with no differences except for lots more free memory and that the two games run a bit better. Here are some of the features listed in the PMODE/W docs: ) No external extender required (everything needed to execute is in the EXE). ) Small size (less than 8k for the entire extender program). ) Low memory overhead. ) Does not require ANY extended memory to load OR execute. ) No annoying initialization messages. ) Fast execution time. ) Free for non-commercial use. PMODE/W costs $500 USD for use in a commercial or shareware program. The professional version of DOS4/G costs around $1000. I would opt to buy PMODE/W in a second because it runs better, gives you memory and will most likely pay for itself in disk duplication costs! It's use is free if you want to code any kind of public domain (freeware) software with it, making it ideal for demo use. In fact, this is one place where it really shines - if you are thinking of writing a demo I suggest that you use PMODE/W. It makes life so much easier and allows so much flexibility that I've come to see it as an indispensible tool. There are a few features which I have found in PMODE/W which are not listed in the documentation, but I have come to know about both by using it and talking to Daredevil. I will list them here: > Full Interrupt support > You can STILL use the Watcom debugger! (yes, a debugger for PMODE!:) > You don't need to worry about developing with it in mind.. you can add it or take it away at any time > Zip sizes become much smaller (great for commercial OR bbs distribution) > Speeds up floating point emulation many 100s of percent > You can use your old Real Mode code! > Code can be loaded into extended/expanded memory! > Full setup program which allows configuration of memory usage etc There are doubtless many more features I haven't thought of or seen yet, so I suggest you try it for yourself and see what else you can come up with. :) Anyway, PMODE/W has been like a godsend for me, so I REALLY suggest you try it.. it's WELL worth the 50k download! :) --------------------------------------------------- PMODE/W v1.10 - Finally A Replacement For DOS/4GW --------------------------------------------------- PMODE/W is a replacement for DOS/4GW and is fully compatible with Watcom C/C+. PMODE/W provides you with a number of advantages over DOS/4GW. The following is just a small list of what you can expect: - Small Size (Less than 9Kbytes!) - Fast Execution Time - Low Memory Overhead - No Annoying Initialization Messages - Self Contained Extender Requires Nothing External To Your EXE - Does Not Require ANY Extended Memory To Load OR Execute - Minimal Interrupt Latency - PMODE/W Programs Can Be Run Under DOS/4GW Without ANY Modifications - Free For Non-Commercial Use Simply put, PMODE/W has been designed with two things in mind: size and speed. PMODE/W undergone rigorous optimization, making it the smallest and fastest extender available for Watcom C/C++. PMODE/W does not provide many of the frills found in other extenders. It does not provide virtual memory, exception trapping, or anything else that could possibly slow down the execution of your code. For this reason, we have designed PMODE/W specifically with the developer in mind. You can perform all of your development and debugging using DOS/4GW if necessary, and then plug PMODE/W in for the release version of your program. If at any time you are dissatisfied with PMODE/W, you can switch back to DOS/4GW with absolutely no hassle whatsoever. PMODE/W has been thoroughly tested with popular programs like Doom, Doom ][, and One Must Fall 2097 in order to insure compatibility. But don't take our word for it, try it out for yourself today! The current version of PMODE/W as of this writing can be found in PMW110.xxx, where xxx is some archive extension (ZIP, ARJ, etc.) ------------------------------------------------------------------------------ PMODE/W Is Currently Available From The Following Sources: ------------------------------------------------------------------------------ - Data Connection BBS (703)506-8598 or (703)847-0861. - oak.oakland.edu /SimTel/msdos/c (or any SimTel mirror) - By E-Mail daredevi@dorsai.dorsai.org ------------------------------------------------------------------------------ PMODE/W is Copyright (C) 1994, Charles Scheffold and Thomas Pytel. All rights reserved. ------------------------------------------------------------------------------ All other trademarks are property of their respective owners. ------------------------------------------------------------------------------ čatßoy
asembler.21 jkpbvk, -> #20, bkaradzic
+| PMODE/W (PMode za Watcom C) +| secnuto iz DEMONEWS-a;) Ako naidjes negde na ovo salji.
asembler.22 mmaric,
Da li neko zna na koji nacin se pristupa memoriji VGA kartice ? Mislim na onih 512 Kb, ili 1024 itd. (Zavisi od kartice)? Uzgred ako neko programira u PROTECTED modu neka mi se javi radi razmene iskustava. Hteo bih da ga pitam o TASK-ovima uopste o njihovoj strukturi nacinu upotrebe itd. P.S. Ako neko ima noviji Debbuger od Borlanda 4.0 ili neceg slicnog (WATCOM C-a) neka mi se javi radi prenosa. Uskoro ce moja programerska grupa napraviti program kompletno u 386 protected modu koji ce predstavljati mali operativni sistem iz koga cete moci da razbijate bilo koju igru (bice mnogo mocniji od bilo kakvih GAMETOOL-sova ,Actiona) moci ce da editouje memoriju do 4GB-a i jos mnogo mnogo toga 32 Debbuger itd...)KKKKK
asembler.23 nemko, -> #22, mmaric
)>Ć- Da li neko zna na koji nacin se pristupa memoriji VGA )>Ć- kartice ? Mislim na onih 512 Kb, ili 1024 itd. (Zavisi od )>Ć- kartice)? Sto se memorije tice to je bar jednostavno. Za razne kartice se posao obavlja drugacije! Reci za koju ti treba i poslacu ti. Ako hoces poslacu ti za sve koje imam. Fora je u tome sto se memoriski segment a000 preklapa sa odredjenim 'segmentom' u video memoriji! Obicno se ta funkcija zove load_write bank i mozes je naci i u pojedinim uputstvima za poneke kartice! Javi sta ti sve treba! Trazim tabelu grafickih modova za razne graficke kartice (imam vec podosta, ali toga nikad dosta :)) )!!
asembler.25 nemko, -> #24, mmaric
)>Ć- Ovako moj kucni telefon je 137728 ove nedelje idem popodne u )>Ć- skolu tako da mozes ... )>Ć- Dakle, ocekujem tvoj poziv!!! Javicu ti se, u to nemoj da sumnjas. Samo mi se cini da si hteo da mi posaljes private mail! :))))))
asembler.26 duzle, -> #24, mmaric
>**> Uzgred nebavim se grafikom kao ostali paceri u konferenciji >**> sto ce se videti u javnosti kada izadje nesto slicno DOS >**> Navigatoru Nortonu itd. sa mnogo mnogo originalnih ideja i >**> mnogo brze i bolje uradjeno. (Mali operativni sistem >**> kompletno radjen u protected modu) Nemoj ovo da kazuješ ovako javno. Mog'o bi neko u Microsoftu ili Symantec-u da se uplaši i završi kod svog psihijatra ;)). >**> naravno u Assembleru a ne >**> ko sto to neki paceri rade u WATCOM C-u i ostalim shitovima. Jeste, svi pravi programeri pišu u asembleru. Ono, vi ste paceri za MOJU programsku grupu (mi smo Windows napisali odnovo i to upotrebom samo 0 i 1-ce). ;) Ognen P.S. No offence :)
asembler.27 vitez.koja, -> #26, duzle
#=> Ono, vi ste paceri #=> za MOJU programsku grupu (mi smo Windows napisali odnovo i to #=> upotrebom samo 0 i 1-ce). ;) JA SAM sam to uradio isto, ali bez jedinice... Sada pišem OS/3 4 Win i biće gotovo do kraja godine... sk
asembler.28 mmitrovic, -> #27, vitez.koja
:::::# => Ono, vi ste paceri :::::# => za MOJU programsku grupu (mi smo Windows napisali odnovo i to :::::# => upotrebom samo 0 i 1-ce). ;) ::::: ::::: JA SAM sam to uradio isto, ali bez jedinice... Sada pišem ::::: OS/3 4 Win i biće gotovo do kraja godine... :::::::::: :))))) E sad sam se setio jednog manijaka koji nas je proganjao kroz srednje školovanje (tip je bio vezara, al naduven k'o balon, stalno nas je obletao i "savetovao" šta i kako da radimo). Jes da je za viceve, al ajd da se nadovežem: Moj ortak (bio je jedno vreme na sezamu pod zavereničkim imenom shox) je spremao maturski rad na temu "Grafičke mogućnosti amige" i uradio je (između ostalog) fini skrol celog ekrana i sad pravi iz Real 3D-a sliku koju će da skroluje. E sad mu dođemo ja, pa kretenčić. Pričamo mi tako, on nas guši, kad odjednom: Kret: A jeli, šta to radiš sad? (u tom trenutku vrši se renderovanje i vidi se pola slike) ort: Pravim u Real 3D-u sliku za rad. Kret: (sav nadmen, potcenjivački) E jak si mi ti programer, pravi programeri prave slike u asembleru, bajt po bajt! Ne mogu da vam opišem kako je to izgledalo, al mene su tri put dizali na stolicu.
asembler.29 sbrcin, -> #28, mmitrovic
Pisem programcic koji po svom startovanju treba da simulira rad tastarure. Ali postoji jedan "mali problemcic" i sastoji se u tome da se sa IO adrese 60h moze samo citati. Interesuje me kako poslati podatak tastaturi tj da taj podatak ostane zapamcen na doticnoj adresi. mov dx,60h mov al,50 out 60h,al in al,dx Kako da u al bude broj 50.
asembler.30 nemko, -> #29, sbrcin
)>Ć- mov dx,60h mov al,50 out 60h,al in al,dx )>Ć- Kako da u al bude broj 50. Predpostavljam da hoces da zeznes neki program! Ako se nekaci na tastaturu tada ti je dovoljno da prepravis INT9 (keyboard) da do pritiska nekog tastera puni tastaturni bafer vrednostima iz nekog fajla. Ali daleko lakse je izvrsiti redirekciju ulaza ... .
asembler.31 sbrcin, -> #30, nemko
:( > puni tastaturni bafer vrednostima iz nekog fajla. :( > Ali daleko lakse je izvrsiti redirekciju ulaza ... . Problem nije u punjenju bafera nego to sto vecina igara ima svoju kontrolu tastature. Ja sam napravio programcic koji kada ga aktiviram pocinje slanje odredjenog niza kodova preko vremenskog interapta. I to je idejno zamisljeno da na port 60h upisem podatak i da softverski aktiviram int 09, koji treba da taj podatak protumaci kao podatak koji stize od tastature. Inace od kacenja na int 09 nema nista posto me igra izbaci sa njega, a i da ostanem nista mi nebi znacilo posto igra ne ocitava bafer tastature. Ako neko ima opsirno uputstvo za programiranje tatsature preko io adresa molio bih ga da mi ga ostavi uz odgovor. Nadam se da ce mi neko dati odgovor na ovo ne bas poznato pitanje: ":-( kako upisati podatak na output adresu 60h?". Pitao bih jos jednu stvar. Prilikom programiranja izgleda karaktera javlja mi se sledeci problem. Naime kakater bi trebao da bude velicine 8x16 tacaka ali on je u stvari velicine 9x16. U taj 9 bit neki karakteri preslikavaju 8 bit. Interesuje me da li moze da se taj 9 bit definise kao i ostali bitovi da ima nezavisnu vrednost, ili KAKO naznaciti video kartici koji karakteri mogu da se preslikavaju u 9 bit.
asembler.32 mmaric,
Izvinjavam se svim korisnicima ovog BBS-a i uopste, ako sam bilo cime ;) uvredio unapred spomenute. Ali i dalje mislim na to da li su oni iz nekog Debbugera pogledali "cisti" kod nadaleko omiljenog C-a. Programiranje u C-u ima svoje dobre strane, brzo se radi, medju visokim i srednjim jezicima je najbrzi i tu se priblizio ;> Assembleru ali ipak. Jos jedanput izvinjenje, i neka glupa poruka ne unisti neku buducu saradnju!
asembler.33 vision,
Hi. Kako procitati parametre koje se dodeljuju programu, i ime samog programa - i u verziji .com i u .exe. Hvala :).
asembler.34 msavkovic,
Da li neko ima IceSoft Debugger?
asembler.35 sbrcin, -> #33, vision
Trebao bi da ostavis konkretnije pitanje.
asembler.36 jkpbvk, -> #34, msavkovic
+| Da li neko ima IceSoft Debugger? Of course. icedebug.rar
asembler.37 msavkovic, -> #36, jkpbvk
### +| Da li neko ima IceSoft Debugger? ### Of course. Hvala...
asembler.38 vision, -> #35, sbrcin
> Trebalo bi da ostavis konkretnije pitanje. Pa nezmam kako da ga postavim konkretnije, prosto kako preuzeti (naci offset:segment adresu u kojoj su smesteni) parametri programa, pre poziva:, npr. program se zove: proba.com, parametar je npr. *.*, znaci 'proba *.*', e sada da preuzmem *.* sa programa.
asembler.39 msavkovic, -> #37, msavkovic
### ### + | Da li neko ima IceSoft Debugger? ### ### Of course. ### Hvala... Opet ja :) Da li neko ima IceSoft Debugger za DOS?
asembler.40 kriss, -> #38, vision
˙˙ Pa nezmam kako da ga postavim konkretnije, prosto kako ˙˙ preuzeti (naci offset:segment adresu u kojoj su smesteni) ˙˙ parametri programa, pre poziva:, npr. program se zove: ˙˙ proba.com, parametar je npr. *.*, znaci 'proba *.*', e sada da ˙˙ preuzmem *.* sa programa. PSP - DOS Program Segment Prefix Layout Offset Size Description 80 byte count of characters in command tail; all bytes following command name; also default DTA (128 bytes) 81 127bytes all characters entered after the program name followed by a CR byte Ne bi bilo loše da uzmeš HELPPC, odakle je ovo izvučeno. Ima ga na SEZAM-u, dir INFOPROG (mislim da je tamo).
asembler.41 ddotlic, -> #23, nemko
Meni treba sve u vezi programiranja grafike na PC-ju (kako izgleda paleta, koji grafički modovi postoje, kako da upisujem vrednosti direktno na ekran tj. u video memoriju a ne koristeći dos ili bios ...). Ako se radi o dužim arhivama možemo se dogovoriti i da to prenesemo direktno. Unapred hvala! Derek
asembler.42 bkaradzic, -> #38, vision
> Pa nezmam kako da ga postavim konkretnije, prosto kako preuzeti (naci > offset:segment adresu u kojoj su smesteni) parametri programa, pre poziva:, > npr. program se zove: proba.com, parametar je npr. *.*, znaci 'proba *.*', e > sada da preuzmem *.* sa programa. Format of disk info: Offset Size Description 00h WORD info level (zero) 02h DWORD disk serial number (binary) 06h 11 BYTEs volume label or "NO NAME " if none present 11h 8 BYTEs (AL=00h only) filesystem type--string "FAT12 " or "FAT16 " Format of PSP: Offset Size Description 00h 2 BYTEs INT 20 instruction for CP/M CALL 0 program termination 02h WORD segment of first byte beyond memory allocated to program 04h BYTE unused filler 05h BYTE CP/M CALL 5 service request (FAR JMP to 000C0h) BUG: (DOS 2+) PSPs created by INT 21/AH=4Bh point at 000BEh 06h WORD CP/M compatibility--size of first segment for .COM files 08h 2 BYTEs remainder of FAR JMP at 05h 0Ah DWORD stored INT 22 termination address 0Eh DWORD stored INT 23 control-Break handler address 12h DWORD DOS 1.1+ stored INT 24 critical error handler address 16h WORD segment of parent PSP 18h 20 BYTEs DOS 2+ Job File Table, one byte per file handle, FFh = closed 2Ch WORD DOS 2+ segment of environment for process 2Eh DWORD DOS 2+ process's SS:SP on entry to last INT 21 call 32h WORD DOS 3+ number of entries in JFT (default 20) 34h DWORD DOS 3+ pointer to JFT (default PSP:0018h) 38h DWORD DOS 3+ pointer to previous PSP (default FFFFFFFFh in 3.x) used by SHARE in DOS 3.3 3Ch 4 BYTEs unused by DOS versions <= 5.00 40h 2 BYTEs DOS 5.0 version to return on INT 21/AH=30h 42h 14 BYTEs unused by DOS versions <= 5.00 50h 3 BYTEs DOS 2+ service request (INT 21/RETF instructions) 53h 9 BYTEs unused in DOS versions <= 5.00 5Ch 16 BYTEs first default FCB, filled in from first commandline argument overwrites second FCB if opened 6Ch 16 BYTEs second default FCB, filled in from second commandline argument overwrites beginning of commandline if opened 7Ch 4 BYTEs unused 80h 128 BYTEs commandline / default DTA command tail is BYTE for length of tail, N BYTEs for the tail, followed by a BYTE containing 0Dh Procitas word sa adrese PSP:2Ch i to je ENV segment. Sad u ENV segmentu nadjes 01h. Kad si to nasao preskocis jedan bajt i odatle ti pocinje komandna linija (put,program i parametri). Na kraju komandne linije je 00h. čatßoy
asembler.43 kriss, -> #42, bkaradzic
˙˙ 80h 128 BYTEs commandline / default DTA ˙˙ command tail is BYTE for length of tail, N BYTEs for the tail, ˙˙ followed by a BYTE containing 0Dh ˙˙ Sad u ENV segmentu nadjes 01h. Kad si to nasao preskocis jedan ˙˙ bajt i odatle ti pocinje komandna linija (put,program i ˙˙ parametri). Na kraju komandne linije je 00h. Malo je zaobilazno, evo onog što njemu treba pre tvoje poruke. Dakle, pročita koliko mu je dugačka kom. linija (bajt 80h) iza naziva programa, pa krene da je ispituje počevši od bajta 81h. Naravno, ako prethodno nije radio nešto sa default DTA (FindFirst, FindNext), i tako prebrisao podatak.
asembler.44 mmitrovic, -> #43, kriss
::::: Malo je zaobilazno, evo onog što njemu treba pre tvoje poruke. Dakle, ::::: pročita koliko mu je dugačka kom. linija (bajt 80h) iza naziva Između ostalog, tražio je i kako da dođe do imena programa koji se izvršava, a to se jedino može saznati preko ENV.
asembler.45 vision, -> #42, bkaradzic
Ovaj PSP:xx je koliko ja vidim CS:xx??
asembler.46 vision,
Pravim znaci svoj program - cisti asm :) i u tinny modelu - .com output, i treba mi jos jedan segment memorije za rad, znaci jos 64 k. memorije. Kako da potrazim od DOS-a mesto u memoriji koje je slobodno (treba mi sa bazne memorije zbog nekompliciranja, a moze i XMS, EMS), znaci segment. Hvala puno.
asembler.47 bkaradzic, -> #46, vision
> Pravim znaci svoj program - cisti asm :) i u tinny modelu - .com output, i > treba mi jos jedan segment memorije za rad, znaci jos 64 k. memorije. > Kako da potrazim od DOS-a mesto u memoriji koje je slobodno (treba mi sa > bazne memorije zbog nekompliciranja, a moze i XMS, EMS), znaci segment. mov ah,48h mov bx,1000h int 21h ;) i posle ovoga ti se u AX nalazi taj segment odnosno kod greske. čatßoy
asembler.49 mmaric, -> #29, sbrcin
Slobodane da li si probao da skines neki od programa koji se bakcu tastaturom npr sa Mr Systems BBS-a. Mislim da tamo ima nesto tako. Ako uspes da to uradis u Mortalu II javi se ( BY VOICE !!) uzgred zavrsio sam sve editore Ascii Hex dva fajla u jednom prozoru itd.
asembler.50 mmitrovic, -> #45, vision
::::: Ovaj PSP:xx je koliko ja vidim CS:xx?? Samo kod COM i nekih (retkih) slučajeva EXE fajla. Veoma često nije.
asembler.51 pirke, -> #48, mmaric
>>> Na taj nacin se pravlinim algoritmima sprecava bilo kakvo >>> trepatanje na ekranu! Imam problem sa 'treptanjem' na ekranu, koji u vecini slucajeva biva resen sa proverom Vertical retrace-a ($3DA cini mi se). Kazem u vecini slucajeva jer na nekim karticama (moja S3 805 npr.) 3DA bude azuriran tek kada je beam na nekih 3-4cm od vrha ekrana. Ima li neki drugi nacin za sigurno resavanje problema? Porblem vazi za graficki 320x200x256 mod ($13). DP...
asembler.52 kdrazan,
Je l' ima ko kakvo razumljivo uputstvo za Ass. bilo u elektronskoj (poželjnije je), bilo u papirnatoj formi ? gpa#aH.
asembler.53 jolicm, -> #52, kdrazan
Nortonove knjige ???
asembler.54 madamovic, -> #53, jolicm
> Nortonove knjige ??? Da, ima to (cini mi se oko 300KB arh.) onda imam neki TexhHelp for DOS (i to je potrebno praktično...) onda Ralf's Comment NG for Assembler . . . Ne sećam se više....
asembler.55 kdrazan, -> #54, madamovic
<=>> Nortonove knjige ??? <=> Da, ima to (cini mi se oko 300KB arh.) Ma imam to - no malo je nezgrapno. Je l' ima šta jednostavnije (semantika, sintaksa, prvi koraci, itd.) gpa#aH.,
asembler.56 ognjen, -> #18, djuradj
)-> Zanima me kako se vrsi unos neke recenice u )-> string. )-> )-> Npr.: )-> )-> stampam 'Koliko imate godina :' )-> ukuca dvadeset )-> ocu da u promenljivu god bude upisano 'dvadeset' )-> )-> Valjda ste shvatili. )-> Izvinite ako je ovo nesto prosto,ali ja sam pocetnik. Svi junaci nikom ponikoše? Ovo je baš i meni trebalo, ali izgleda niko ne može ni mesec dana da se seti. :(
asembler.58 kriss, -> #57, flash
˙˙ Znam da nema veze sa programiranjem, ali ako nekog ne mrzi ˙˙ neka mi pošalje EXE2BIN ili neki sličan programčić koji EXE ˙˙ pretvara u COM. Ajde sad, sigirno ga imaju svi koji rade u ˙˙ asembleru. Naravno da ga imamo. Zove se tlink sa opcijom /t. :)
asembler.59 vitez.koja, -> #57, flash
#=> Znam da nema veze sa programiranjem, ali ako nekog ne #=> mrzi neka mi pošalje EXE2BIN ili neki sličan programčić #=> koji EXE pretvara u COM. Ajde sad, sigirno ga imaju svi #=> koji rade u asembleru. Takav program u 99% slučajeva neće moći da pretvori EXE u COM, jer 99% EXE fajlova ne mogu da se pretvore u COM. Sam exe2bin postoji da bi programi specijalno kompajlirani da postanu COM to i postali :) Inače, zašto ti trebaju baš COM fajlovi?
asembler.60 nemko, -> #58, kriss
)>- ˙˙ Znam da nema veze sa programiranjem, ali ako nekog ne mrzi )>- ˙˙ neka mi pošalje EXE2BIN ili neki sličan programčić koji )>- Naravno da ga imamo. Zove se tlink sa opcijom /t. :) Coveku to netreba. Pretpostavljam da hoce vec neki gotovi exe da konvertuje u com. Ja ima pc-dos 6.3 i on ima exe2bin. Mogu da ti 'bacim' ali nisam siguran da ce raditi bez pc-dos-a. Ostale stvari javljaju incorrect dos version na ms-dos-u a za exe2bin nisam siguran. Ako jes zelis da ti saljem reci.
asembler.61 flash, -> #59, vitez.koja
>> Inače, zašto ti trebaju baš COM fajlovi? Pa, evo. Uzeo sam onaj TSRBONES kostur za TSR programe i koristim ga kao osnovu za moj (početnički) TSR. masm proba; link proba; exe2bin proba.exe proba.com Kao EXE neće da radi, već samo kao COM, zbog strukture programa. Hvala svima na savetima, traženi prg sam nabavio. Vikaću ako bude nekih problema (a biće ih sigurno). KOLE
asembler.62 nikac, -> #56, ognjen
>■ )-> stampam 'Koliko imate godina :' >■ )-> ukuca dvadeset >■ )-> ocu da u promenljivu god bude upisano 'dvadeset' >■ >■ Svi junaci nikom ponikose? Ovo je bas i meni trebalo, ali >■ izgleda niko ne moze ni mesec dana da se seti. :( Evo kad nece niko :) Prosto preko int 21h, func. 0ah buffered input: .MODEL SMALL .DATA msg_out db "Koliko imate godina :",13,10,'$' msg_pom db 20 DUP(?) msg_in EQU BYTE PTR ds:[msg_pom+1] .CODE mov ax, @data mov ds, ax mov ah,9h mov dx, OFFSET msg_out int 21h mov msg_pom,20 ; maksimalna duzina ucitanog stringa, recimo 20 mov ah,0ah mov dx, OFFSET msg_pom int 21h mov ax,4c00h int 21h END Ovim dobijas u msg_in pascal like string (prvi byte je duzina, onda ide string). Pamti se i <cr>, ali se on ne racuna u duzinu koja pise u prvom byte-u. Inace ako tekst prelazi maksimalnu zadatu duzinu ostatak ce biti odsecen. Mozda je moglo i bolje ali i ovo radi :)
asembler.63 nemko,
Imam problema sa int 21H funkcijom 48H. mov ah,48h mov bx,num_of_paragrafs int 21h jc error .... Uvek mi javlja gresku 8-nedostatak memorije. Napominjem da pravim com file velicine oko 100 bajtova.
asembler.64 andrejt, -> #63, nemko
Subj: Re: Alloc... Q> Imam problema sa int 21H funkcijom 48H. S' ovim sam i ja imao problema - konkretno problem je u tome sto mi alocira samo UMB. Jel' zna neko zasto?
asembler.65 bceklic, -> #64, andrejt
> Q> Imam problema sa int 21H funkcijom 48H. > > S' ovim sam i ja imao problema - konkretno problem je u tome > sto mi alocira samo UMB. Jel' zna neko zasto? Zasto (kako) uopste alocirati novu kolicinu memorije kada Dos pri startovanju Com fajlova tom fajlu dodeli maksimalnu kolicinu slobodne memorije? U ovom pitanju se krije odgovor na izneti problem...:) Pozdrav! P.S. Pre alociranja memorije treba nesto uraditi. Hint: 49H,4AH
asembler.66 andrejt, -> #65, bceklic
Subj: Re: Alloc... Q> Zasto (kako) uopste alocirati novu kolicinu memorije kada Dos pri Q> startovanju Com fajlova tom fajlu dodeli maksimalnu kolicinu slobodne Q> memorije? U ovom pitanju se krije odgovor na izneti problem...:) Tacno tako :) Tenks.
asembler.67 ognjen,
Kako da, recimo uz pomoć DOS funkcije 42h, pomerim pointer na kraj fajla - const? Dakle, hoću da pročitam zadnjih N bajtova fajla proizvoljne dužine? Ili mora da se računa prvo filesize, pa onda da se oduzme N, pa onda da se pozicionira od početka fajla? Nije teško, ali da li posotji kraće?
asembler.68 bceklic, -> #67, ognjen
> Kako da, recimo uz pomoc DOS funkcije 42h, pomerim pointer na > kraj fajla - const? Dakle, hocu da procitam zadnjih N bajtova > fajla proizvoljne duzine? > Ili mora da se racuna prvo filesize, pa onda da se oduzme N, > pa onda da se pozicionira od pocetka fajla? Nije tesko, ali da > li posotji krace? Upravo tako. Pointer moze da pomeras na tri nacina: 0- apsolutno od pocetka fajla + 1- relativno od trenutne pozicije + 2- relativno od kraja fajla + Koristis treci nacin (Dx=0,Cx=0) da procitas duzinu, oduzmes od dobijene vrednosti ono tvoje N i ponovo pomeris pointer samo od pocetka datoteke.. Otprilike ovako.. (sorry ako ima gresaka, pisem napamet...) -------------------------------------------- N Equ 0100H ; Zadnjih sto bajtova Code Segment Byte Assume Cs:Code,Ds:Code,Es:Code,SS:Code Org 0100H ; COM File Start Label Near ; Otvoris fajl Lea Dx,FileName Mov Ax,3D00h ; Samo za citanje Int 21h Jc Exit Mov Bx,Ax ; File Handle ; Pointer na kraj Xor Dx,Dx Xor Cx,Cx Mov Ax,4202h Int 21h ; DX:AX sadrzi duzinu fajla ; Pronadjimo novi offset Sub Ax,N Sbb Dx,0h Xchg Cx,Dx Xchg Dx,Ax Mov Ax,4200h ; Apsolutno od pocetka fajla Int 21h ; I to je to ; Zatvorimo fajl Mov Ah,3eh Int 21h ; Kraj Exit: Mov Ax,4c00h Int 21h FileName Db 'IMEFAJLA.XXX',0 Code EndS End Start ------------------------------------------------ Pozdrav!
asembler.69 mmitrovic, -> #67, ognjen
::::: Kako da, recimo uz pomoć DOS funkcije 42h, pomerim pointer na ::::: kraj fajla - const? Dakle, hoću da pročitam zadnjih N bajtova ::::: fajla proizvoljne dužine? DOS Fn 42H: Set File Pointer -- LSEEK Expects: AH 42H BX file handle CX:DX distance to move file pointer: offset is (CX * 65536) + DX AL SubFn: 0 = move pointer to start of file + CX:DX 1 = move pointer to current position + CX:DX 2 = move pointer to end of file + CX:DX Returns AX error code if CF is set to CY DX:AX new position of file read/write pointer (if no error) Znači tebi treba: AX = 4202 BX = handle CX:DX = -(broj bajtova pre kraja) npr: FFFF:FF9C za -100
asembler.70 ognjen,
Šta može biti uzrok poruci File alocation table bad ??? NDD kaže da je sve u redu, ali program mi tu brljavi (igrao sam se Seek, Ffst i Fnxt dos funkcijama).
asembler.71 ognjen,
Zna li neko kako da konvertujem word (integer) ili byte (shortint) u üitljiv format, tj. kako da ispiäem na ekran? Na primer, u ah imam ffh, i hoću da na ekranu napiäem 255. Kako?
asembler.72 nemko, -> #71, ognjen
)>- Na primer, u ah imam ffh, i hoću da na ekranu napiäem 255. )>- Kako? Recimo ovako (mozda ima gresaka jer pisem na pamet): mov al, input {ulazni bajt} xor ah, ah mov bl, 10 div bl {deljenje sa 10} add ah, 48 {ascii kod 0 je 48} mov byte[3], ah {jedinice} xor ah,ah div bl add ah, 48 mov byte[2], ah {destice} add al, 48 mov byte[1]. al {stotine} e sad jos jedno: mov ah, '$' mov byte[4], ah mov ah, 9 mov dx, seg byte mov ds, dx mov dx, ofs byte int 21h {byte je niz bajtova} Ovo dva puta koristi deljenje, verovatno moze mnogo brze, ali pretpostavljam da ti brzina nije problem. Ako ti treba nesto bolje javi se ponovo.
asembler.73 ognjen, -> #70, ognjen
)-> Sta moze biti uzrok poruci File alocation table bad ??? Evo sam sebi da repliciram, naäao sam bug. Naime, pristupao sam fajlovima preko DTA (trebao mi je za FindFirst i FindNext), koji se nalazio na kraju code segmenta, a tu se takoöe nalazio i neki privremeni bufer. Posle F1st, bafer je napunjen podacima koji su uniätili DTA, pa je FNext prijavio da je FAT loä.
asembler.74 drpr, -> #71, ognjen
-> Na primer, u ah imam ffh, i hoću da na ekranu napišem 255. -> Kako? Jedini način koji sam ja znao je da dotičan word delim sa deset ostatak od deljenja bacam na stek i posle to sve skidam i ispisujem sa preko int 21. Bolji način ne znam, ako nije jasno mogu da iskopam parče koda pa da bacim. cope
asembler.75 ognjen,
JMP instrunkcija pravi relativan skok, tj. od tekuće pozicije ˝128 bajtova. Ali, šta ako hoću da napravim _apsolutan_ skok, dakle na recimo početak izvršavanja programa. Jasno, mogao bih da potljam da merim dužinu programa u DSu (ako je to ikako moguće) pa onda da računam koliki je to skok itt. Ali da li postiji neko elegantno rešenje da skočim na početak koda?
asembler.76 prvul, -> #74, drpr
-> Na primer, u ah imam ffh, i hocu da na ekranu napisem 255. >>Jedini nacin koji sam ja znao je da dotican word delim sa deset >>ostatak od deljenja bacam na stek i posle to sve skidam i Ako imas word, delis sa 10000 i tako dobijas prvu cifru. Zatim delis ostatak sa 100, uradis nad kolicnikom AAM i dobijes drugu i trecu cifru, a onda AAM nad ostatkom daje poslednje dve cifre. Stampanje pocinjes od prve nenulte cifre.
asembler.77 andrejt, -> #75, ognjen
Subj: Skok. Q> Ali da li postiji neko elegantno resenje da skocim na pocetak koda? push 0 retn a moze i push cs push 0 retf
asembler.78 ognjen, -> #74, drpr
)-> Jedini način koji sam ja znao je da dotičan word delim sa )-> deset ostatak od deljenja bacam na stek i posle to sve Nemko je vec poslao listing. :) BTW, kad si već pomenuo stek (on je sve to bacao u jedna niz) da li se on (stek) može koristiti kada se radi sa .COM filovima (model tiny)? Tada je SS=DS, pa bi push x, uništilo kod.
asembler.79 nemko, -> #78, ognjen
)>- BTW, kad si već pomenuo stek (on je sve to bacao u jedna niz) )>- da li se on (stek) može koristiti kada se radi sa .COM )>- filovima (model tiny)? Tada je SS=DS, pa bi push x, uništilo kod. Naravno da može, kako bi inače u com fajlu realizovao poziv potrograma? Samo da znaš, najbolje je da sam alociras mesto za stek (recimo 400 paragrafa) i onda si miran! :)))
asembler.80 bceklic, -> #79, nemko
> )>- BTW, kad si vec pomenuo stek (on je sve to bacao u jedna > niz) )>- da li se on (stek) moze koristiti kada se radi sa .COM > )>- filovima (model tiny)? Tada je SS=DS, pa bi push x, > unistilo kod. > > Naravno da moze, kako bi inace u com fajlu realizovao poziv > potrograma? Samo da znas, najbolje je da sam alociras mesto > za stek (recimo 400 paragrafa) i onda si miran! :))) Stack segment kod com fajlova je jednak CS segmentu (CS=DS=ES=SS). Stack pointer (SP) se kod Com fajova uvek stavlja na vrh segmenta odnosno na 0FFFEH. Na taj nacin je omogucena maksimalna dubina steka. Pozdrav!
asembler.81 nemko, -> #80, bceklic
)>- Stack segment kod com fajlova je jednak CS segmentu )>- (CS=DS=ES=SS). Stack pointer (SP) se kod Com fajova uvek )>- stavlja na vrh segmenta odnosno na 0FFFEH. Na taj nacin je )>- omogucena maksimalna dubina steka. Kod com fajlova ima jedna 'glupost'. Koliki god da je (100 ili 65000 bajtova) uvek zauzme svu raspolozivu memoriju pa je korisnik mora modifikovati ako zeli da oslobodi prostor za druge programe. I da vas pitam kako da od QEMM-a (taj koristim) zatrazim neki blok upper memorije da tu smestime rezidentan program i onda osnovni terminiram? I jos ovo da pitam jel tacno. Ako smanjim memoriju com fajlu i onda alociram neki blok memorije, tada kad prekine izvrsavanje tog programa dealociraju se i svi blokovi meorije koje je zahtevao?!? Kako da iste ostavim u memoriji?
asembler.82 ognjen, -> #77, andrejt
)-> push 0 )-> retn Aha... A šta radi instrukcija RETN? --- Što je lepo kad nemš literaturu - by kriss
asembler.83 ognjen, -> #79, nemko
)-> Naravno da može, kako bi inače u com fajlu realizovao poziv )-> potrograma? Samo da znaš, najbolje je da sam alociras mesto )-> za stek (recimo 400 paragrafa) i onda si miran! :))) Znači nije istina da kod COM file-ova SS=CS? Aha, a kako se onda alocira stek?
asembler.84 andrejt, -> #81, nemko
Subj: Re: TSR Q> Kako da iste ostavim u memoriji? Po opisu u Help PC-u i Ralf Brownovoj int listi int 21h (ah=31h) ne oslobadja memoriju alociranu sa int 21h (ah=48h).
asembler.85 andrejt, -> #82, ognjen
Subj: Re: Skok Q> Aha... A sta radi instrukcija RETN? "Vraca" se tako sto popuje ip. RETF popuje ip pa cs. PS. DL-uj Help PC - tamo ima dosta o asm-u za 8086-486.
asembler.86 bceklic, -> #81, nemko
> Kod com fajlova ima jedna 'glupost'. Koliki god da je (100 ili > 65000 bajtova) uvek zauzme svu raspolozivu memoriju pa je > korisnik mora modifikovati ako zeli da oslobodi prostor za > druge programe. Vec sam o tome koliko memorije Dos alocira pri startovanju com programa govorio ranije. Ne vidim nikakav poseban problem u tome. Kod Exe programa je stvar nesto drugacija. Alocira se dovoljno memorije za Mcb, Psp i onoliko koliko je program dugacak. Zatim se toj kolicini doda kolicina memorije specificirana u hederu fajla (kolicina memorije u paragrafima koja treba da bude rezervisana iza ucitanog fajla)... > I da vas pitam kako da od QEMM-a (taj koristim) > zatrazim neki blok upper memorije da tu smestime rezidentan > program i onda osnovni terminiram? U sustini bitno je da nateras dos da ti alocira blok iz umb-a a ne neki drugi. Nemam qemm pa ne mogu tacno da ti odgovorim. U principu mogao bi da promenis dos alocation strategy (mislim da je ova funkcija nedokumentovana) ili da na neki drugi nacin nateras dos da ti oslobodi memoriju bas iz umb-a (alociras svu osnovnu memoriju pa onda trazis jos koji segment ;). Btw, citav posao ja bih odradio rucno ali taj nacin ni u kom slucaju ne mogu da preporucim... > I jos ovo da pitam jel > tacno. Ako smanjim memoriju com fajlu i onda alociram neki blok > memorije, tada kad prekine izvrsavanje tog programa dealociraju > se i svi blokovi meorije koje je zahtevao?!? Kako da iste > ostavim u memoriji? Tacno. Svi memorijski blokovi imaju istog vlasnika: Program koji je vrsio manipulaciju sa memorijom. pri izlasku iz programa (4ch ili int 20) sva memorija koju je posedovao ovaj program biva oslobodjena. Oslobodi svu nepotrebnu memoriju sa 49h a deo koji ti je preostao terminiraj sa int 27h ili int 21h (31h)...
asembler.87 nemko, -> #86, bceklic
)>- Oslobodi svu nepotrebnu memoriju sa 49h a deo koji ti je )>- preostao terminiraj sa int 27h ili int 21h (31h)... Hvala za odgovore, ovo 'vec' postaje interesantno. Ako imas neki primer rucnog alociranje 'upper' memorije baci mi isti.
asembler.88 bceklic, -> #83, ognjen
> Znaci nije istina da kod COM file-ova SS=CS? Aha, a kako se > onda alocira stek? Nisi procitao moju poruku ? ;)
asembler.89 kriss, -> #82, ognjen
˙˙ Što je lepo kad nemš literaturu - by kriss Pa jeste surovo, ali se tako najbolje nauči. ;))
asembler.90 jolicm, -> #89, kriss
>>Pa jeste surovo, ali se tako najbolje nauči. ;)) Ne znam na šta je bila replika, ali znam da sam kupio spectrum daleko pre nego što je izašao prvi broj računara. Tada nije bilo NIKAKVE literature, a trebalo je nešto uraditi u asembleru. E to je bio život. Još kad sam kupio neku skriptu od (čini mi se Kulundžića)KKKKKKKKKK, a ono sve suprotno objašnjeno. Pa onda potraga šta je tačno, a šta nije. Otada se samo helpovima služim. Od literature (domaće) zazirem. :)
asembler.91 nemko, -> #90, jolicm
)>- potraga šta je tačno, a šta nije. Otada se samo helpovima )>- služim. Od literature (domaće) zazirem. :) A knjige koje idu uz Borland C++, i od njih zazires?
asembler.92 dr.grba, -> #91, nemko
>> )>- služim. Od literature (domaće) zazirem. :) >> >> A knjige koje idu uz Borland C++, i od njih zazires? Nije ih još ni video. A kad sam mu pokazao žuti set iz Borland C/C++ 2.0, samo je pretrnuo, pobledeo i rekao da žuri kući (((:
asembler.93 nemko, -> #92, dr.grba
)>- Nije ih još ni video. A kad sam mu pokazao žuti set iz )>- Borland C/C++ 2.0, samo je pretrnuo, pobledeo i rekao da žuri kući (((: A tek plavo-zuti i zuto-zeleni komplet uz 3.0. Milina je posle raditi. ;>
asembler.94 ognjen, -> #80, bceklic
)-> Stack pointer (SP) se kod Com fajova uvek stavlja na vrh )-> segmenta odnosno na 0FFFEH. Na taj nacin je omogucena )-> maksimalna dubina steka. A šta je bilo za onim poslednjim bajtom ffff? Šta se dešava kada se stek napuni do koda, da li će onda da brlja po njemu? I kako uopšte ja da odredim veličinu učitanog koda? Word na adresi 7 (dakle u PSPu) uvek vraća istu vrednost bez obzira koliki je COM fajl?!
asembler.95 bceklic, -> #94, ognjen
> )-> Stack pointer (SP) se kod Com fajova uvek stavlja na vrh > )-> segmenta odnosno na 0FFFEH. Na taj nacin je omogucena > )-> maksimalna dubina steka. > > A sta je bilo za onim poslednjim bajtom ffff? Nista, ostaje nedirnut.. :) > Sta se desava kada se stek napuni do koda, da li ce onda da > brlja po njemu? Naravno. Ako SP bude pao na nivo koji odgovara kraju programa bice svega! > I kako uopste ja da odredim velicinu ucitanog > koda? Ako dobro razumem hoces da odredis velicinu tvog programa koji je upravo ucitan u memoriju? :) Ako je tako postavi jedan label na kraj programa i jedan na pocetak. Oduzmi njihov offset i to je to.. Kasnije mozes sa tom vrednoscu da radis sta hoces... > Word na adresi 7 (dakle u PSPu) uvek vraca istu vrednost > bez obzira koliki je COM fajl?! Imas previse slobodne memorije... Zaboravi ga, ionako ti nicemu ne sluzi... :) Pozdrav!
asembler.96 mmitrovic, -> #94, ognjen
::::: A šta je bilo za onim poslednjim bajtom ffff? Nisam baš 100% siguran, ali mislim da je 8086 imao drugačiju organizaciju steka, tj. da je SP pokazivao ne na zadnji ostavljen podatak već na prvu sledeću slobodnu lokaciju, tj.2. PUSH bi prvo upisao vrednost a onda smanjio SP. Primite ovu informaciju sa rezervom, pošto ja nikada nisam single-stepovao PUSH instrukciju na 8086, pa ne znam koliko je istine u ovome. ::::: Šta se dešava kada se stek napuni do koda, da li će onda da ::::: brlja po njemu? I kako uopšte ja da odredim veličinu učitanog ::::: koda? Word na adresi 7 (dakle u PSPu) uvek vraća istu vrednost ::::: bez obzira koliki je COM fajl?! - Da. - Postaviš labelu na kraj koda, i njen offset će ti dati veličinu koda. - U pitanju je WORD na offsetu +06 u PSPu, međutim tu meni nešto smrdi, pošto se na lokaciji +05 nalazi far jump (5 bajtova) instrukcija koja poziva DOS dispečer, i ne znam kako dve informacije mogu zauzimati isto mesto u isto vreme. Paradox? ;) Svejedno, ja se na to ne bi oslanjao.
asembler.97 ognjen, -> #85, andrejt
)-> "Vraca" se tako sto popuje ip. RETF popuje ip pa cs. Zar nije onda lakše MOV ip, 0 ?
asembler.99 andrejt, -> #97, ognjen
Subj: Re: Skok Q> Zar nije onda lakse Q> MOV ip, 0 Nije moguce.
asembler.100 jolicm,
Da li neko ima rutine za rad sa COM portovima, čisto slanje i uzimanje asci. ?????????????????????????????????????????????????????????????????????
asembler.101 paki, -> #99, andrejt
­> Q> Zar nije onda lakse ­> Q> MOV ip, 0 ­> ­> Nije moguce. Jedna stvar me uvek zbunjivala, zašto u asembleru postoje ovakve "nemoguće" instrukcije (klasičan primer sa mov ax, @data; mov ds, ax)?
asembler.102 pedjak, -> #101, paki
> Jedna stvar me uvek zbunjivala, zašto u asembleru postoje ovakve > "nemoguće" instrukcije (klasičan primer sa mov ax, čdata; mov ds, > ax)? Jednostavno, stvar je do same arhitekture procesora. Ne postoji recimo naredba mov ds,nn, gde je nn broj, nego mu je moguće dodeliti vrednost registarskim adresiranjem. Slična stvar je i sa ostalim registrima posebne namene (segmentni registri, ip i sl.)
asembler.103 mmitrovic, -> #101, paki
::::: Jedna stvar me uvek zbunjivala, zašto u asembleru postoje ovakve ::::: "nemoguće" instrukcije (klasičan primer sa mov ax, @data; mov ds, ax)? Zbog načina na koji se instrukcije kodiraju. Npr. AX i IP nisu ista klasa registara pošto AX ima svoju "šifru" (000), a IP je nema, na njega utiču druge instrukcije (ret, jmp, call, ...). Za prenos vrednosti u i iz segmentnog registra ne postoji forma za neposredno adresiranje (immediate), samo iz opštih registara ili iz memorije. Tako na pr. može: mov ds, ax ili mov ds, [123h] ili mov ds, [bx+3] ali ne može: mov ds, 1234h Jedna zanimljivost vezana za temu (a može se koristiti za neku zaštitu) naravno ako proradi. opcode: 8E 0E <nearptr> će učitati CS (?!) registar iz memorije, tj iz DS segmenta sa offseta nearptr. IP registar će pokazivati na IP+4, kao da se ništa nije desilo. TD definitivno umire na ovome. ;) Problem je što i sam program umre pod DOSom. Asembler i TD ne dozvoljavaju unos ove instrukciju u mnoemičkoj formi, TD je prepoznaje (ispiše mov cs, [nearptr]), ali pogine pri izvršavanju. Moj Intel 386sx neće i ne želi da izvrši ovu instrukciju (iako je u skladu sa Inteleovom specifikacijom kodiranja instrukcija i njihovim ograničenjima), što će reći Intel nije Intel kompatibilan. ;) Kako stvari stoje na ostalim Intelima, AMDovima i Cirixima?
asembler.104 prvul, -> #95, bceklic
>>> )-> Stack pointer (SP) se kod Com fajova uvek stavlja na vrh >>> )-> segmenta odnosno na 0FFFEH. Na taj nacin je omogucena >>> )-> maksimalna dubina steka. >>> >>> A sta je bilo za onim poslednjim bajtom ffff? >> >> Nista, ostaje nedirnut.. :) Dva poslednja bajta u segmentu u kome radi .COM program su uvek 0x0000. To je zgodno jer se iz .COM programa moze izaci i sa obicnim RET - on pokupi onu nulu sa steka, a na ofsetu nula se nalazi instrukcija za kraj programa - INT 20h.
asembler.105 bceklic, -> #104, prvul
> programa moze izaci i sa obicnim RET - on pokupi onu > nulu sa steka, a na ofsetu nula se nalazi instrukcija za > kraj programa - INT 20h. Ovakav nacin izlaska ne preporucujem i treba ga izbegavati (bilo da se radi ret na pocetak PSP-a) ili direktan skok na int 20h. 21,4ch je resenje koje treba primenjivati uvek. Pozdrav!