Adresovanie pamatoveho priestoru – Pascal – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Adresovanie pamatoveho priestoru – Pascal – Fórum – Programujte.comAdresovanie pamatoveho priestoru – Pascal – Fórum – Programujte.com

 

jozef0
Duch
24. 11. 2006   #1
-
0
-

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.

Nahlásit jako SPAM
IP: ...–
eMan0
Stálý člen
24. 11. 2006   #2
-
0
-

klasickej Turbo Pascal 5.0 nebo +.0 umi asm uplne v pohode

Nahlásit jako SPAM
IP: ...–
Laaca
~ Anonymní uživatel
225 příspěvků
28. 11. 2006   #3
-
0
-

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 :-)

Nahlásit jako SPAM
IP: ...–
Laaca
~ Anonymní uživatel
225 příspěvků
28. 11. 2006   #4
-
0
-

To eMan: Ne, assembler znají jenom verze 6.0 a 7.0 V 5.0 můžeš psát jenom strojový kód.

Nahlásit jako SPAM
IP: ...–
eMan0
Stálý člen
28. 11. 2006   #5
-
0
-

Laaca píše:#
# To eMan:#
#Ne, assembler znaji jenom verze 6.0 a 7.0#
#V 5.0 muzes psat jenom strojovy kod.



strojovej kod? ses jsi jistej?? naka ukazka prikladu??

Nahlásit jako SPAM
IP: ...–
Laaca
~ Anonymní uživatel
225 příspěvků
29. 11. 2006   #6
-
0
-

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.




Nahlásit jako SPAM
IP: ...–
eMan0
Stálý člen
29. 11. 2006   #7
-
0
-

To Laaca: jj dík, to se hodí vědět :D

Nahlásit jako SPAM
IP: ...–
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žit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 4 hosté

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý