Vykreslování v assembleru – Assembler – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Vykreslování v assembleru – Assembler – Fórum – Programujte.comVykreslování v assembleru – Assembler – Fórum – Programujte.com

 

maherik
~ Anonymní uživatel
4 příspěvky
24. 2. 2007   #1
-
0
-

Ahoj, potřeboval bych, aby někdo, kdo tomu hodně rozumí, porovnal tyhle tři procedury pro zápis bodu na obrazovku.
Jde mi o co nejvyšší rychlost. Program je v Pascalu a funguje tak, že se ve for cyklu (for k:=...to...do) do proměnné barva načte barva daného bodu (ta je uložena v poli bodů (bytů)). Celé to funguje ve VESA 800x600x256.

1) asm
jmp @dal
@vid:
dw $0,$a000
@dal:
les di,cs:[offset @vid]
mov di,k
mov al,barva
mov es:[di],al
end;

2) asm mov di,k; mov ax,$a000; mov es,ax; mov al,barva; mov [es:di],al end;

3) Mem [$a000:k]:=barva;

Předem dík

Nahlásit jako SPAM
IP: ...–
Laaca0
Stálý člen
24. 2. 2007   #2
-
0
-

Huh!
Myslím, že tohle nebude kritické "hrdlo láhve" v tvém programu. Raději se zaměř na optimalizace na vyšší úrovni. Jak vypadá tvůj algoritmus na vykreslení obrázku? Jak kreslíš čáru? Jak počítáš viditelné plochy? atd...
Taky nezapomeň, že v režimu 800x600x256 musíš přepínat tzv. banky.
Nicméně - assemblerové rutiny pracují nejrychleji, když je přistupuješ do paměti přes registr DS.
např. MOV DS:[SI],AL je o chlup rychlejší než MOV ES:[DI],AL
Jde o to, že DS je defaultní segmentový registr, a když použiješ jiný, tak se ve strojovém kódu objeví tzv. prefix záměny segmentu, jehož zpracování si vyžádá pár pidisekund navíc. V pascalu to ale využít moc nemůžeš, protože pomocí DS pascal vidí globální proměnné, takže ho nemůžeš beztrestně měnit. Musel bys ho ukládat a obnovovat, což by si vyžádalo určitý čas.

Nahlásit jako SPAM
IP: ...–
DOS-u-akbar
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, 26 hostů

Podobná vlákna

Quicksort v assembleru — založil myšák

Zaciname v Assembleru — založil trebuk

 

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