mám jednu otázku ohledně TASM,TLINK. Zkouším s tímto překladačem kompilovat .com programy na mém notebooku Pentium 4.
můžu si třeba vymyslet tento jednoduchý příklad:
A SEGMENT
ASSUME CS:A,DS:A
ORG 100H
.8086
start:
lea dx,text
mov ax,offset text1
mov ah,09h
int 21h
int 20h
text db 'ahoj'
text1 db 'assembler'
a ends
end start
tzn. hodnoty proměných mám v dx a ax, potom se vyvolá výpis na obrazovku a program skončí. Po spuštění by se mi tedy mělo zobrazit "ahoj assembler" a konec. Jenomže mě se za tímto zobrazí ještě dalších cca. 100-200 různých ASCII znaků, co tam nemají co dělat. Může to mít nějakou souvislost s tím, že jedu na Pentiu 4 apod.?
díky
Fórum › Assembler
Překlad na P4
![](img/forum_vlakno_help_vyreseno.png)
TooM napsal:
nemel by ten retezec byt ukoncen ukoncovaci nulou nebo tak nejak? :)
JJ, ukončuje se znakem $. Pak už je vše vpohodě. Když tam ten znak nedám vypíše se zdřejmě úplně všechno co ten registr obsahuje...
díky za inspiraci
o-lox napsal:
Řetězec musí být ukončen znakem '$' pro službu 09h DOSu !
S Pentiem 4 neni určitě problém.
a vymaž si to : mov ax,offset text1 ; to poustis do luftu jakousi jalovost
díky, o tom $ už vím, dopsali jsme příspěvky téměř nastejno. Co je špatného na mov ax, offset text1 ? je to to samé jako lea ax,text1. Nebo myslíš, že mám použít raději registr dx?
Špatné to není, je to jen zbytečné.
Služba 09h očekává řetězec definovaný počátkem v DX. Ty jí ho taky nahoře dáš, ale Musíš přece vidět, že AXko je hned na dalšim řádku přepsáno 9, tudíž tento registr AX ti definuje volanou službu DOSu.
Jsme doma?
To o-lox :
rozhodně to AXko je kravina, ale pokud bych chtěl vypsat takhle dva řetězce za sebou pomocí DXka, tak to taky nejde.
např:
...
lea dl, text
lea dh,text1
mov ah,09h
mov 20h
...
no assembler jsem viděl tak dvakrát v životě, tak sry jestli otravuju z blbejma dotazama....
Věř že Tyto řetězce jsou za sebou v paměti.
pam1 DB '11111'
pam2 DB '22222'
vytvori nekde v pameti blok 1111122222 , na to se muzes spolehnout. ( pokud teda nepouzivas konstrukce na zarovnani s align atd. )
do DX naláduješ offset pam1 a třeba ta 9ka jede od toho offsetu (a prvni 1ky) porad dal az po znak $.
To o-lox :
tomu rozumím. Jenomže teď jsem to zkusil(použít pro proměnné Dl,Dh) a program se mi vůbec nepřeložil. To jsem teda zrovna nečekal. Chápu, že třeba Ah se požívá pro fce DOSu, ale Dl a Dh by snad mohli fungovat...
...
lea dl, text1
lea dh,text2
mov ah,09h
int 21h
int 20h
text db 'a'
text db 'b$'
...
ehm, někdo mne neposlouchal !!!!!!!!!!
lea dx,text
mov ah,9
int 21h
exitcode
A za další když chci _reálné_ 2 texty, je to jako s chůzí jsem nucen udělat dva kroky. => 2x int21
EDIT> chyba prekladu je ze tam mas 2 promenne jednoho jmena text!
text db 'a'
db 'b$' ; takto
To 16bit :
No a pokračuju o kousek dál...
Jednoduchý program, který při stisku stejné klávesy vypíše rovno a při stisku dvou různých kláves nerovno.
A SEGMENT
ASSUME CS:A,DS:A
ORG 100H
.286
start:
mov ah,00h
int 16h
mov dh,al
int 21h
mov ah,00h
int 16h
mov dl,al
int 21h
cmp dh,dl
jne text2
je text
text:
lea dx,equal
mov ah,09h
int 21h
jmp konec
text2:
lea dx,nequal
mov ah,09h
int 21h
konec:
int 20h
key db 0
key2 db 0
equal db 'rovno$'
nequal db 'nerovno$'
a ends
end start
....no jo , jenomže stisknu třeba w,w program se vykoná vpořádku nebo w,e taktéž, s,s je OK, ALE a,s už není ok, program se začne chovat nestandartně(vypisuje nesmysly). Nebo když první písmeno stisknu f okamžitě vypíše : kontrolní blok souboru (fcb) není k dispozici. To mi přijde docela zajímavé...
edit: proč není možno porovat přímo proměnné(např. cmp key,key2) ?
edit: proč není možno porovat přímo proměnné(např. cmp key,key2) ?
nádherný dotaz- v dávných dobách by jistě Amigisty docela potěšil :-D (nejde jsme pod Intelem a ten preferuje registrovou manipulaci oproti paměťové, prostě je tak stavěno CPU)
mov ah,00h
int 16h
mov dh,al
int 21h ; ???
Tento blok mi v něm zkus obhájit to Int 21h (je to chyba), ale co si od toho čekal? - možná tu zajímavost výsledků :D
To o-lox :
RE1:
díky, je to jasné...
-----
Int 21h je tam podle mě nutný, protože jinak se v případě stisku stejných kláves místo rovno napíše rovnorovno. Jinak samozdřejmě funguje program i bez toho přerušení, bohužel pořád se stejnými chybami. ...
Programátore to jste neodpověděl korektně.
Int 16h ; = ceka na stisk klavesy, blokace programu
mov "cosi"
int 21h ; je volani DOSu nema tam co delat, ponevadz co tam volas, jakou sluzbu??, tim padem zpusobuje errors
To ze je tam porad chyba, je ze sis mozna nevsiml ze se jedna o 2 bloky (ja poukazal na 1).
Mam TASM a TLINK naloadoval jsem si tve zadani a funguje mi, zadny zazrak odstranil jsem jen double a ne single.
To o-lox :
:-)))
jj, už mi to jde. Problém je v tom, že vidím asm podruhé vživotě a připadá mi celkem zajímavý. Narovinu ještě ani pořádně nevím co int 21h dělá,
a proč zde být má:
text2:
lea dx,nequal
mov ah,09h
int 21h
a zde zase ne:
start:
mov ah,00h
int 16h
mov dh,al
i když možná už vím, 09h je funkce dosu, a proto musí být voláno přerušení int 21h. Kdežto 00h souvisí s přerušením int 16h klávesnice.
PS: jenom taková otázečka, jde v assembleru přejít ještě na nižší(nejnižší) úroveň jako třeba v Delphi jakožto vyšším prog. jazyku jde vepsat i blok ve strojových instrukcích. Tzn. co je to vlastně mov, lea nebo mov dx,ax apod. ve dvojkové soustavě? :-)) to už pak musí být docela na bednu, ale v počátcích počítačů, před assemblerem se tak programovalo...
/si Int jakejkoliv představ jako zmáčknutí funkční klávesy, třeba F1 - někde mi náhle vyvolá help, F2 - Save věci, F3 - ...
/Inline vlozeny kod
Trik je tady v tom zápisu proměnných - paměťových bloků
třeba tu instrukci Int 21h si pro zkoušku nahraď naostro zápisem DW 21CDh, vloženim mezi ostat. instrukce. A nic se ti nezmění. Usetril si praci nastroji tasm a vytvoril rovnou cpu strojak.
Můžeš se na ně pak podívat, děláš do .COMu a neni nic jednoduššího než si své dílo Notepadovat hexa editorem.
To o-lox:
čau, sry, musel jsem se trochu odmlčet....
Projel jsem si to hex-editorem, vypadá to celkem jasně. DW 21CDh jsem si ještě ze srandy poupravil na DW 10000111001101b. No a už jsme skoro doma... jo jenomže co to znamená to DW a označení soustavy, to b? Já vim, že teď už asi zacházim trochu do extrému, ale prostě mě to tak nějak zajímá a když to budu vědět napíšu to přerušení komplet binárně a překladač mě za to bude milovat, protože s tím nebude mít vůbec žádnou práci :-)))
Jo a mimochodem, nemel bys nejakej přehlednej seznam pro další instrukce, přerušení, fce atd....? Int 21h = DW 21CDh to už vím, ale co další???
díky
Cely binarne 8-0 ?
Nech si vygenerovat LST soubor parametrem v tasm /l
máš to lepší než se pokoušet sám rozepisovat MOV AX,[dx] neboť je to dosti překomplikované
(i pro nezačátečníka)
Jinak bys to našel někde na stránkách Intelu, můžu i zaslat manual/texťák (600KB nezabaleně).
DW Data Word - velikost pameti (tj.2B)
DB Data Byte
pak DD Data Doubleword atd.
DQ,..
když nedáš b tak je soustava decimal.
Ale malinko to akceleruj!!!!, nahod nejakej dalsi slozitejsi priklad, celkem dosti co se da nakonec zakodovat bravurne do assembleru, ovladace, graficky efekty, rezidentni setric, diskove tools cache pocinaje, debugger, viry. jedem.. ;-]
To o-lox :
díky, pokud se ti bude chtít pošli to na mail co mám v profilu.
určitě udělám nějakej další prográmek, ale taky mám ještě spoustu jiný práce, takže to bude asi chvilku trvat, než bude čas..ale rozhodně nehodlám tohle vlákno umrtvit!
Jo a taky se musim naučit nějaký další instrukce apod. a něco ještě počíst někde na netu, abych věděl co a jak dál...protože knížky o tom doma žádný nemám.
To 16bit :
Dneska jsem se konečně zase na chvilku dostal k ASM.
něco malinko jsem si přečetl o portech(instrukce IN,OUT). Jenomže problém je v tom, že tohle zrovna pod Win XP nefunguje, nešlo by to nějak obejít???
tady je takovej krátkej prográmek(ty výstupy by měli rozblikat ledky na klávesnici(opsal jsem to z návodu na netu :-) ).
Chtěl jsem ale odzkoušet ještě opakování , tzn. blok kódu se zopakuje podle hodnoty v BX. To jede v pohodě, až na to, že pokud chci pokaždé tu hodnotu vypsat na obrazovku, tak se program zblázní a začne vypisovat kraviny...
A SEGMENT
ASSUME CS:A,DS:A
ORG 100H
.286
start:
level1:
mov al, 0edh
out 60h,al
mov al,7h
out 60h,al
mov bx,65535
add cx,1
cmp cx,bx
je konec
mov dx,cx
mov ah,09h
int 21h
jmp level1
konec:
int 20h
a ends
end start
On assembler neni tak předpřipravenej na výpis čísel a dalších tvarovanejch těstovin.
Můžeš si udělat makro nebo nějakou funkci, kterou jen includem vlepíš.
něco jako:
(ať se naučíme pracovat se zásobníkem)
mov bl,0
mov ax,cx
@1:
xor dx,dx
div [ds:deset] ; definovat jako Word
push dx
inc bl
cmp ax,0
jne @1
@2:
pop dx
mov ah,2 ; vypis znaku
add dl,30h
int 21h ; prevedli jsme na cislo - rucne
dec bl
cmp bl,0
jne @2 ; tohle je ale lepsi zrovna delat pres string jelikoz tam muzes rovnou odradkovat -13,10 (zamysli se nad tim..)
Zas to nepřeháněj s těma registrama, na jedný straně paměť a na druhý číslo je povoleno.
Windows XP za tou klávesnicí takřka jistě nestojí, já jedu doma pořád na DOSu 6.22 a taky jsem
ostrouhal, to bude ten novej nekompatibilní hardware a buhví co za překopaný sběrnice. (nehledě na to že do kláves se zapisovalo přes 61h, nebo 64h)
Budeš mít lepší se naučit než s LEDkama klávesnice pracovat přímo s obrazovkou mrkni na INT10h
nebo ještě lépe si můžeme dát Lekce s velkym L a to přímý (bleskový) zápis do grafický paměti.
Pixely a tak.--. jedem..
Edit/napadlo me kdyz spustis VirtualPC a das PS/2 klavesnici a ne Usb melo by to pres 64h jit.
To o-lox :
No tak sem kouknul na int 10h v SH helpu. musim říct, že mě to osvětlilo pár věcí a něco sem se zase naučil....Jo když si vzpomenu na nějakou jednoduchou starou 286tkovou hru, kde byla udělaná taková ta kostičková grafika a všichni se tomu smáli, to by asi bylo docela maso stvořit pomocí int 10h. Já myslim, že na to budou ještě jiný vychytávky, který neznám.zatim...
Psal si něco o přímém zápisu do graf. paměti.tak to trochu nadhoď...
Zde je muj pokusnej prográmek(je to kokotina ,ale umožnila mi vidět jak pracuje int 10h):
A SEGMENT
ASSUME CS:A,DS:A
ORG 100H
.286
start:
mov al,13h
mov ah,00h
int 10h
mov bh,0
mov bl,5ah
mov ah,0bh
int 10h
mov dx,0
kresli:
mov bh,1
inc dx
mov cx,34
mov al,17h
mov ah,0ch
int 10h
cmp dx,cx
jne kresli
mov al,50h
mov bl,32h
mov ah,0eh
int 10h
lea dx,pre
mov ah,09h
int 21h
mov ah,00h
int 16h
mov dl,al
mov ah,00h
int 16h
mov dh,al
cmp dh,dl
je znova
jne dale
znova:
mov al,0fh
mov ah,00h
int 10h
lea dx,tes
mov ah,09h
int 21h
mov ah,00h
int 16h
mov dl,6fh
mov dh,al
cmp dl,dh
je jumpstart
jne znova
jumpstart:
jmp start
dale:
mov al,12h
mov ah,00h
int 10h
lea dx,tes1
mov ah,09h
int 21h
mov ah,00h
int 16h
mov dl,65h
mov dh,al
cmp dl,dh
je konec
jne dale
konec:
int 20h
pre db 'stiskni dve klavesy zasebou$'
tes db 'jsi chytrak?|||| stiskni :o: $'
tes1 db 'well and good bye|||| press :e:$'
a ends
end start
PS: klávesnici mám PS/2(ne DIN konektor),používám ještě jednoho desktop celera na 2,8 GHz....
PS2: píšeš, že jedeš na dosu 6.22. To já tu mám taky na 286tce(zrovna nepoužitelná bohužel), ale jinak výtečnej stroj na PROGRAMování v ASM . Na učení v ASM je ale na nic, pač bez multitaskingu jsou určitý věci fak zdlouhavý. Třebas přepnutí z SH helpu do editu apod...lepší je si vedle pustit noťas...bla.bla.konec
Tak nejdřív ke klávesnici DIN5pin starý velký PC/AT compatible ma byt těch 64h(prip. 61h)
co si pamatuju behalo to, mozna ten 6pin malej barevnej je uz nekde jinde, tezko
si vysvetlit jinak proc to nic nedela, jeste je prikaz na zpetny echo 0EEh (ale lovim
z paměti) pro status. Pak cti z 60h a jestli nevrati 0EEh do AL neni to OK. Ono
vyrobce klavesnice to mohl zmenit,nevim.
DOSů mám několik multiboot, ještě před dvěma/třema lety jsem fungoval na 80386ce, a že to mělo speciální atmošku nechat naběhnout takový stroj a čekat a čekat. Nakonec jsem to nevydržel :D (a na c4s upgradeoval na 486/66MHz, oni mrchy Windows 98 chtějí 486 jinak nespustí instalaci!!) Jinak spíš víc používám FAT32ovej.
Pokročilá Grafika - díl 1. úvodní procitnutí do nižšššího světa
Vyčlenili bychom si na to segmentový registr ES.
Graficka pamet se mapuje do adresoveho prostoru 0A000:0000 až po 0AFFF:F
Jelikož to je 64KB a na rozlišení 1024*768*16 které budem používat a žere 1572864Bytes
nestaci budeme používat přepínané mapovane banky. Vezmeme si na paškál Vesu, nic jiného ani neni.
Taky je možnost skočit rovnou do Protected modu a vyhnout se prepinani bank, ale nechame si to na pozdeji.
Abychom se dostali do cviku zacneme poporadku TEXTOVYM rezimem, ten se mapuje na
B800:0 a dal a je very Easy. Kazdy byte predstavuje znak, pozdeji bude Slovo predstavovat
65536 barev pixelu tozn es:[0],'A' zobrazi A na xy=1/1.
Ovsem v textovem rezimu je dalsi byte na barvu popredi a pozadi tozn. es:[1],17h ; obarvi znak na bilo a pozadi myslim na modro (7bila1modra). Souradnice vzrustaji jednoduse po x do 80*2. es:[20+160*1] je 2 radek 10 sloupec.
Zapni mozkovnu
Tu>
MASM
model tiny
.486
random MACRO cislo
xor dx,dx
mov ax,[r]
add ax,13
mov bx,cislo
mul bx
div [del]
mov [r],dx
mov cx,ax
ENDM
clearscreen MACRO
mov ax,700h
mov cx,80*25
mov di,0
rep stosw
mov ah,2
mov bh,0
mov dx,0
int 10h
ENDM
videopamet MACRO
push ax
xor di,di
mov al,160
mul bh
add al,bl
add al,bl
mov di,ax
pop ax
stosw ; vhodna instrukce
ENDM
dataseg
text DB 'a co tohle - jak jsi na tom v reakcich ?$'
text1 DB 92,138,134,158,0,168,146,0,170,150,130,160,152,158,'$' ;a
text2 DB 96,158,136,152,138,0,154,138,0,148,166,146,0,160,130,136,0130,172,150,130,'$';r1
text3 DB 72,94,68,100,114,0,96,94,102,104,100,74,80,2,'$'
buffer DB 100 dup(0)
; toto je predpripraveny sifrovany system co si vysyslime k ver.2.0 na pozdeji
chyceno DB 0
uniklo DB 0
cas DW 0
r DW 1000
znak DB 0
del DW 953
org 100h
codeseg
startupcode
mov ax,0b800h
mov es,ax
xor ax,ax
mov fs,ax
mov ax,[fs:46ch]
mov [r],ax
@dalsi:
mov ah,1
int 16h
jz @10
mov ah,0
int 16h
@10:
clearscreen
mov ah,9
lea dx,text
int 21h
; bl bude x // bh bude y
random 8
add cx,18
test cx,1
jne @v1
mov [znak],'s'
jmp @v2
@v1:
mov [znak],'x'
@v2:
add cx,[fs:046ch]
@1:
mov ah,1
int 16h
jnz @dalsi
cmp cx,[fs:46ch]
jne @1
mov cx,[fs:46ch]
mov bl,6
mov bh,1
@pos:
mov ax,20h
videopamet
inc bh
mov al,[znak]
mov ah,7
videopamet
mov si,[fs:46ch]
inc si
@2:
cmp si,[fs:46ch]
jne @2
mov ax,100h
int 16h
cmp al,[znak]
je @ch
cmp bh,25
jne @pos
@ch:
mov ah,1
int 16h
jz @nic
mov ah,0
int 16h
@nic:
mov ax,20h
videopamet
cmp bh,9
ja @3
inc [chyceno]
cmp [chyceno],3
jne @dalsi
cmp [uniklo],0
je @4
clearscreen
call rozkoduj c,offset text2
exitcode
@4:
clearscreen
call rozkoduj c, offset text3
exitcode
@3:
inc [uniklo]
clearscreen
call rozkoduj c, offset text1
mov ah,0
int 16h
jmp @dalsi
exitcode
rozkoduj PROC C ofs
mov bx,ofs
mov di,offset buffer
@p1:
cmp byte ptr[bx],'$'
je @p2
mov al,byte ptr[bx]
shr al,1
add al,32
mov ds:[di],al
inc di
inc bx
jmp @p1
@p2:
mov byte ptr ds:[di],'$'
lea dx,buffer
mov ah,9
int 21h
ret
ENDP
end
Neprijemne jsem se pritom uz zapotil, blbe odladovani [supky at vidim svoje makra zhodnoceny ve tvejch vecech] :D
Na pochopeni po odzkouseni a dosazeni hlavni vyhry doporucuji Borlandsky debugger.
PS Na hokusy pokusy se naučíme co nevidět používat myš, klávesy jsou hloupě zastaralé.
To o-lox :
No teď jsem na to tady koukal a popravdě se v tom moc nemůžu vyznat. Zjistil jsem, že vůbec neumim makra, že vůbec neznám pár instrukcí apod. No a i když znám, tak některý věci fakt nevim co dělaj... Ještě nad tim musim trochu podumat...Ale stejně mi dneska nějak hlava nebere!
Jo a TASM mi nechce přeložit regisr FS, píše nedefinonaný symbol!
A SEGMENT
ASSUME CS:A,DS:A
ORG 100H
.486
START:
mov ax,0b800h
mov fs,ax
int 20h
A ENDS
END START
To 16bit :
Dneska jsem začal pokusem o inicializaci vesa režimu. No jo jenomže, se to chová nějak podivně, chvili mi to šlo, pak zase ne...aniž by jsem měnil kód...no nic dyžtak k tomu tady trochu něco napiš. Taky nevím jak zapsat konkrétní byte na konkrétní adresu v paměti. PS: asi mi pořád něco uniká, budu si muset přečíst něco o základech assembleru...a teď jdu pokračovat v studierování vesa módu.
test. příklad:
xor ax,ax
mov al,02h
mov ah,4fh
mov bx,100h
int 10h
lea dx,text
mov ah,09h
int 21h
mov ah,00h
int 16h
int 20h
text db 'ahoj$'
To Anonymní uživatel :
sry, to jsem psal já...
Dneska jsem začal pokusem o inicializaci vesa režimu. No jo jenomže, se to chová nějak podivně, chvili mi to šlo, pak zase ne...aniž by jsem měnil kód...no nic dyžtak k tomu tady trochu něco napiš. Taky nevím jak zapsat konkrétní byte na konkrétní adresu v paměti. PS: asi mi pořád něco uniká, budu si muset přečíst něco o základech assembleru...a teď jdu pokračovat v studierování vesa módu.
test. příklad:
xor ax,ax
mov al,02h
mov ah,4fh
mov bx,100h
int 10h
lea dx,text
mov ah,09h
int 21h
mov ah,00h
int 16h
int 20h
text db 'ahoj$'
EDIT: takhle by měl vypadadat zápis na konkrétní adresu:
mov byte [0xABCC], 0
jenomže ten standartní borlanďáckej překladač(TASM) z roku '89 mi to nepřeloží. PS: a i kdyby přeložil,nebude tu taky problém v tom, že ve windowsech jede procesor v protected módu? Pokud ano, nemůžu si jen tak, něco napsat někam do paměti....mov byte [0xABCC],0 - pis jako mov [0abcch],0 ; ale uz si to mohl pochytit
byte je uvnitr hranate zavorky nebo vne podle rezimu masm/ideal
+ zvolil si dost netradicni rezim 640*400
dále nekombinuj DOS textový výpis int21 a grafickou obrazovku, když už si přeskočil texťák, tak musíš zapisovat přes A000:0000
a k tomu všemu ne přímo ale přes segmentový registr kterej naplníš na A000. Text vypíšeš nějakým fontem, ani nevim jestli na to má Vesa nějakou funkci, já píšu kód na text vlastnoručně. A je to dost kódu.
Protected mod umoznuje prepnout na realny rezim virtualni 86ky a to že se ve skutečnoti zapíše to z 0ABCC nekam jinam mne ještě nikdá netrápilo.
bx,si,di,bp registry pro adresaci nemusíš používat když si dáš překlad 32 bitově , eax,ecx,edx, jdou kliďánko používat. [eax+20],[esi+eax], ...
Celkově jdou tvoje výkony ke dnu. Dělej něco do hloubky. Makro ti napíšu, když uvidim že to nebude kvuli "ahoj". Zkus si i pohledat.
To o-lox :
mov byte [0xABCC],0 - pis jako mov [0abcch],0 ; ale uz si to mohl pochytit
což to už jsem doopravdy pochytil, problém je v tom, že druhou varianta také nejde....
byte je uvnitr hranate zavorky nebo vne podle rezimu masm/ideal
+ zvolil si dost netradicni rezim 640*400
dále nekombinuj DOS textový výpis int21 a grafickou obrazovku, když už si přeskočil texťák, tak musíš zapisovat přes A000:0000
a k tomu všemu ne přímo ale přes segmentový registr kterej naplníš na A000. Text vypíšeš nějakým fontem, ani nevim jestli na to má Vesa nějakou funkci, já píšu kód na text vlastnoručně. A je to dost kódu.
jo myslím, že tay funkce na fonty tam jssou.
Protected mod umoznuje prepnout na realny rezim virtualni 86ky a to že se ve skutečnoti zapíše to z 0ABCC nekam jinam mne ještě nikdá netrápilo.
bx,si,di,bp registry pro adresaci nemusíš používat když si dáš překlad 32 bitově , eax,ecx,edx, jdou kliďánko používat. [eax+20],[esi+eax], ...
Celkově jdou tvoje výkony ke dnu. Dělej něco do hloubky. Makro ti napíšu, když uvidim že to nebude kvuli "ahoj". Zkus si i pohledat.
:-)) jo tuhle větu jsem čekal...dej mi čas a já něco stvořim nebo dej mi typ na něco co bych mohl naprogramovat, mám na to slabou fantazii.
Používáš klíčové slovo ptr pro paměťový chlívek? Proč sem nenapíšeš tu chybu??
Nějaké zadání na šplouch obrazovky máš (to Int15). Použij ale 320*200*256 režim, abys nemusel přepínat banky. Výpočet souřadnic jsem nadhodil.
Koukal jsem na Vesa funkce a výpis jsem tam nenašel.
To 16bit :
Podle mě to s P4 nesouvisí, ale s tím, že ty textové proměnné nemáš ukončené znakem ukončení. To bývá znak $ v některých případech a nebo znak "NULL"... Záleží jakou funkci k výpisu použiješ.
![](img/forum_nove_psp_new.png)
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
![](/img/smile/1.gif)
![](/img/smile/2.gif)
![](/img/smile/3.gif)
![](/img/smile/4.gif)
![](/img/smile/5.gif)
![](/img/smile/6.gif)
![](/img/smile/7.gif)
![](/img/smile/8.gif)
![](/img/smile/9.gif)
![](/img/smile/10.gif)
![](/img/smile/11.gif)
![](/img/smile/12.gif)
![](/img/smile/13.gif)
![](/img/smile/14.gif)
![](/img/smile/15.gif)
![](/img/smile/16.gif)
![](/img/smile/17.gif)
![](/img/smile/18.gif)
![](/img/smile/19.gif)
![](/img/smile/20.gif)
![](/img/smile/21.gif)
![](/img/smile/22.gif)
![](/img/smile/23.gif)
![](/img/smile/24.gif)
![](/img/smile/25.gif)
![](/img/smile/26.gif)
![](/img/smile/27.gif)
![](/img/smile/28.gif)
![](/img/smile/29.gif)
![](/img/smile/30.gif)
![](/img/smile/31.gif)
![](/img/smile/32.gif)
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Překlad A na 1 — založil Petr Zbořil
Preklad z AJ do CJ PLS — založil Tomáš
Překlad z Delphi — založil neo_