
ASSEMBLER - nacitanie mena suboru a jeho otvorenie
Zdravim ... nacital som meno suboru a ked ho chcem otvorit (urcite taky mam v projekte) proste napise ze taky subor neexistuje. Mam pocit ze zle nacitavam nazov suboru preto ho to nenajde (znak naviac alebo daco take)
;NACITANIE MENA SUBORU
zadaj_sub:
call clrscr
nacitaj_sub:
vypis uvod_sub ;pomocny vypis
mov ah,0ah ;funkcia DOS na nacitanie retazca
mov dx,OFFSET subMeno ;do dx=zaciatok retazca
int 21h ;prerusenie
cmp subMeno[1],0 ;test ci je prazdny
jz prazdny_sub
xor bx,bx
mov bl,[subMeno+1] ;do bl=skutocnu velkost retazca
mov [subMeno+bx+2],'$' ;na koniec retazca pridaj '$'
jmp menu_vypis
prazdny_sub: ;ak bol zadany prazdny retazec tak skusi nacitat retazec znovu
call clrscr
vypis prazdny_ret
jmp nacitaj_sub
mam subor textak halo.txt a ked to tam zadam ze halo.txt stale nic nejde :/ a spravil som to tak ako si poradil :/ nemalo by tam byt \0 namiesto iba 0 alebo v uvodzovkach ci?
Ma tam byt 0, ziadne uvodzovky.
Skus si trebars napevno
potom sa stane co?
Program spustas z jakej zlozky a si vobec v DOSe a ne vo Windows? halo.txt je v ktorej zlozke?
P.S> dos programy by mali ist aj v 32bitovych win, int21 samozrejme emuluje Win.
P.S.2. DS register dufam nemenis nikde, ak ano tak ho musis nastavit nazad jak bol.
Pise to uplne to iste :/ dal som mov dx,offset buffer
BTW. Neni ten halo.txt nahodou uz otvoreny inym programom? Skus ho premenovat.
subor je presne v tej zlozke v akej mam obj asm aj exe su tam spolu vsetky skusil som aj premenovat a nic :/ ja nechapem vobec ze preco sa to deje ... :(
Spustam to cele cez GUI Turbo Assembler aj run
Ked sa chces vyhnut problemom so zlozkou tak si daj nazov suboru plnu cestu
buffer DB 'C:\neco\neco\neco.txt',0
ani s plnou cestou to nejde :D :D :D toto je hrozne :/ myslis ze by bol problem ak mam projekt na externom Hard disku? ked namiesto C: davam E:? Ci?
http://devdocs.inightmare.org/x86-assembly-dos-fil e-inputoutput/
toto proste musi fungovat (OFFSET tam mozes pridat to zavisi od compilera):
uz o funguje s DOS Boxom :) dakujem ti velmi pekne :)