nevie mi niekto poradit ako by som mohol v pascale adresovat pamatovy priestor?Viem ukladat data do premennej, ktoru si predom zadefinujem,ale ja bz som chcel ulozit data do urcitej pamatovej bunky v pamati.Napr.Do pamatovej bunky xxxxxxxxx chem ulozit obsah regostra b.Alebo nevie mi niektop poradit odkial bz som si mohol stiahnut daku dobru verziu Pascalu.Pamatove bunky by sa ,mali dat totizto adresovat asemblerovskymi prikazmi, ktorym by pascal normalne mal rozumiet, ale ta moja verzia tomu akosi nerozumie :-)) ani po zadani vyrazu asm.
Fórum › Pascal
Adresovanie pamatoveho priestoru
Assembler na to nepotřebuješ. Od toho jsou pseudopole Mem, MemW a MemL
Používají se podobně jako pole, ale syntaxe je nepatrně odlišná.
např.
Mem[$B800:0]:=65;
zapíše hodnotu 65 do paměti na adresu B800h:0000h což je první znak videopaměti. (tento příkaz napíše do levého horního rohu obrazovky písmeno A)
Obdobně se používá MemW (pro hodnoty typu integer či word) a MemL (pro longinty)
Jestli chceš zapisovat do delšího paměťového ůseku najednou, tak použij proceduru Move (pozor!, to platí pro Turbo pascal, ve FP je to trochu jinak)
např.
Move(pole,Ptr($B800,0)^,sizeof(pole));
Ale opatrně s tím, protože v takovém kódu se špatně hledají chyby :-)
Jsem si jistej :-)
D?l? se to pomoc? p??kazu INLINE. P??klad:
FUNCTION MaxI(x,y:integer):integer;
begin
inline($58/$5b/$3b/$d8/$7e/$01/$93);
{pop ax;pop bx;cmp bx,ax;jle +1;xchg ax,bx}
end;
Tahle funce vr?t? v?t?? ze dvou zadan?ch ??sel. Jak vid??, zpracov?v? se p??mo strojov? k?d. Assemblerovsk? p?epis je jenom koment??.
Zaj?mav? je, ?e pokud je cel? funkce inline, tak nemus? b?t uzav?eno bloku BEGIN-END. N?sleduj?c? z?pis je tedy tak? mo?n?:
FUNCTION MaxI(x,y:integer):integer;
inline($58/$5b/$3b/$d8/$7e/$01/$93);
{pop ax;pop bx;cmp bx,ax;jle +1;xchg ax,bx}
A druh? zvl??tnost je, ?e takov? funkce se mohou ps?t p??mo do sekce INTERFACE jednotek a pak u? nemus? b?t vůbec zm?n?ny v IMPLEMENTATION. Tedy:
unit maximum;
interface
FUNCTION MaxI(x,y:integer):integer; inline($58/$5b/$3b/$d8/$7e/$01/$93); {pop ax;pop bx;cmp bx,ax;jle +1;xchg ax,bx}
implementation
end.
Zjistit počet nových příspěvků
Přidej příspěvek
Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
Uživatelé prohlížející si toto vlákno
Uživatelé on-line: 0 registrovaných, 7 hostů
Moderátoři diskuze