Fórum témák
» Több friss téma |
Magyarrol nem igen tudok, de szerintem nem is igen fog kelleni. Az ASM sokkal inkább a logikát meg a müszaki ismereteket igényli mint egy tankönyvet. Szinte minden proci más ASM-t igényel és az egyes funkciok általában tartozékai a feljlesztö környezetnek. A legjobb kiválasztani egy menö procit, amihez van egy sereg mintapeogram ( meg kész program is) és azokbol kiindulva irod a magadét.
Van sok (föleg idegennyelvü) forum is, ahol tanácsot is kapsz meg rengeteg müködö megoldást.
Például Agárdi Gábor Gyakorlati Assembly , és a második része pedig haladónak.Vagy még egy
kicsit már komolyabb Horváth Gábor Assembly Védett módú programozás.Vagy például egy régi GDF es videó anyag is . A hozzászólás módosítva: Márc 1, 2018
Az assembly programozással kapcsolatos téma annyira szerteágazó, hogy nagyon kevés támpont van a kérdésedben a jó válaszhoz. Pinpongozni megtanulni sem elegendő, hogy egy labdajátékokat részletesen tárgyaló könyvet beszerzünk. A programozás is egy nagyon gyakorlatias szakma, elméletben és fejben nem fog menni.
Számos kérdés merül fel: 1. Teljesen kezdő vagy-e vagy már programoztál, kezdetlegesen vagy már komolyabb feladatot is? 2. Milyen nyelveket, ismersz már melyik nyelvcsaládból (Basic, Pascal, C++, Forth, Prolog, COBOL) 2. Melyik processzorhoz kódolnál Assemblyben, milyen környezethez (pl. PC/MAC, DOS/Win/Linux, Real/Protected mód, stb.) 3. Milyen témakörben van szükség az Assembly-re (kiegészítő kódok, rendszerprogramozás, beágyazott rendszer) 4. Programozáshoz azt sem árt tudnod miben vagy erősebb: algoritmusokban, adatszerkezetekben, mindkettőben (vagy gőzöd sincs miben). 5. Szintén jó ha az ember tisztában van, a gyakorlati programozási munka sötétebb oldalaival (agygörcsöt okozó tervezési bambulás; sok ezer programsorok kódolásának favágása; hibajelenségek frusztráló özönének helyes feldolgozása; a témával kapcsolatos információmorzsák ezreinek a fejben tartása; hozzánemértő főnökök számára látszólagos tétlenséged elfogadható kimagyarázása; a termékeny haladáshoz szükséges tartós és teljes mértékű lekötöttség katasztrofális hatása a párkapcsolatokra, stb.) PC-re 30 évvel ezelőtt még elég jó könyv jelent meg Pethő Ádámtól a Számalk kiadásában (Assembly Alapismeretek) valós módú környezethez (DOS). Az ebben leírtakat azonban mára már jelentősen ki kell egészíteni korszerű ismeretekkel.
sziasztok!
egy régi program részletet nem igazán tudok értelmezni,kérlek segítsetek. egy call ugrik ide. adt: push af 'miért rakja a verembe? adt1: in a, 01H 'A-ba tölti a 01 cim értékét and 08H 'and 8 cp 08H '??????????? jr nz,adt1 ' ugrás vissza adtr1 re .... pop af 'ki veszi a verem ből , de ugyanazt amit az elején betett??? out (dp),a 'dp cimre ki irja A értéket returtn én igy gondolom ,de a push és a pop nem tiszta hogy mit csinál az AF. Idézet: „push af 'miért rakja a verembe?” Mert egy utasítással menti a A és a FLAG regisztert. Idézet: „adt1: in a, 01H 'A-ba tölti a 01 cim értékét” Pontosabban a 0x01 című periféria regiszter értékét. Idézet: „and 08H 'and 8” Csak a 3. bitet hagyja meg mivel a maszkban csak az az egy bit 1. Idézet: „cp 08H” Beállítja a FLAG regiszter bitjeit mintha elvégezné az A regiszter értékének összehasonlítását a 0x08 értékkel. Idézet: „jr nz,adt1” Visszaugrik az adt1 címkén levő utasításra, ha az összehasonlítás eredménye nem 0. Magyarán adig vár, amíg a 0x1 című perifária regsizter 3 bitje 0 -ra nem vált. Idézet: „pop af 'ki veszi a verem ből , de ugyanazt amit az elején betett???” Igen. Miután legalább egyszer beolvastunk adatot az A regiszterbe és a maszkolás (and) a FLAG regiszter bitjeit is megváltoztatja, a ciklusból kilépve az A tartalma 0. A push utasítással elmentett értéket visszatöltjük. Amúgy a következő utasítás fel is használja az A regiszter értékét. Idézet: „out (dp),a 'dp cimre ki irja A értéket” A dp által megcímzett perifária regiszterbe kiírja az A regiszter értékét - azt amit a call utasítás vérgehajtásánál benne volt. A hozzászólás módosítva: Ápr 26, 2023
"Magyarán adig vár, amíg a 0x1 című perifária regsizter 3 bitje 0 -ra nem vált."
A 'jr nz,adt1' akkor ugrik vissza, ha a 3.bit =0 (nem tudom pontosan milyen CPU ez, de általában ha a 'cp 08H' összehasonlítás logikai igaz, akkor lesz a Z=1, azaz ha a==08H) Vagyis pont fordítva, addig várakozik, míg a 3. bit nem lesz 1. (a cp utasítás alapesetben egy kivonás, csak az eredmény nem kerül letárolásra)
Köszönöm a helyreigazítást...
Valószínűleg egy I8080 vagy Z80 (utód) lehet. Minek is a cp 0x08 utasítás? Az and 0x08 ugyanis beállítja a FLAG regiszter Sign, Zero, Parity bitjeit... |
Bejelentkezés
Hirdetés |