Parametre príkazového riadku v DOSe – Assembler – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Parametre príkazového riadku v DOSe – Assembler – Fórum – Programujte.comParametre príkazového riadku v DOSe – Assembler – Fórum – Programujte.com

 

m-> 29
~ Anonymní uživatel
4 příspěvky
11. 2. 2009   #1
-
0
-

Mám taký problém s NASM (Net Assembler). Potreboval by som prečítať parametre príkazového riadku a nijak sa mi to nedarí. Skúšal som googliť, ale riešenia typu: parametre sú uložené na adrese 0X81, alebo na vrchole zásobníku mi nefungovali. A ani pár ďalších :( Mohol by mi niekto kto sa vyzná v Assemblery, konkrétne NASM, poradiť niečo funkčné? Potreboval by som len z

C:\> my_program.exe pepek namornik
prečítať string "pepek namornik". O rozsekanie do pola by som sa postaral (hádam) ;)

Nahlásit jako SPAM
IP: 147.229.208.–
o-lox0
Super člen
11. 2. 2009   #2
-
0
-

Mělo by to být od byte ptr[ds:82h] a ukonceny nulovym bytem
na [ds:80h] mas delku celeho retezce (pripocitej si znak 0dh jako odenterovani)

DS - segmentovy registr inicializovany po startu na data
neprepis si ho

Jak pracovat s assemblerem a zachazet s pameti (u NASM) by sis
mohl nekde najit sam, staci ti otevrit jediny vzorovy soubor .asm

imho na vrcholu zasobniku v DOSu nejsou.

EDITovano ;)

Nahlásit jako SPAM
IP: 85.71.152.–
m-> 29
~ Anonymní uživatel
4 příspěvky
11. 2. 2009   #3
-
0
-

Veď som hľadal, a veľa. To mi môžeš veriť, a aj to, že som skúšal už všeličo:-D Každopádne mi to fakt pomohlo. Všetko som mal dobre, akurát ma naštartovala tá tvoja poznámka o neprepísaní "ds";-) na začiatku som "ds" hneď prepísal svojim vlastným data segmentom. Stačilo to odstrániť a už je to;-) dík moc - som si to neuvedomil:-)

Nahlásit jako SPAM
IP: 147.229.208.–
o-lox0
Super člen
11. 2. 2009   #4
-
0
-

OK,trefa:]
Tu pamet, já to bral totiž pro jistotu i nějak tak že nechápeš něco jako
mov al,[81h] ; aka co to proboha asi je?

Nahlásit jako SPAM
IP: 85.71.152.–
m-> 29
~ Anonymní uživatel
4 příspěvky
11. 2. 2009   #5
-
0
-

Ta teda, ešte raz thx a lot :smile2: šupnem sem nahratie toho stringu do pola, keby to niekoho ešte trápilo;-)

   bits 16


segment code
..start:
mov ax,data
mov es,ax ; es = &argv

; zásobník
mov ax,stack
mov ss,ax
mov sp,stacktop

xor cx,cx ; cx = 0
mov cl,[80h] ; cl = počet znakov argumentov

mov si,82h ; si = &args
mov di,argv ; di = &argv

or cx,cx ; cmp(cx, 0)
jz no_args

cld ; set incremet si, di
dec cx ; prvý znak je medzera
rep movsb ; while(cx > 0) argv[di++] = args[si++];

no_args:
mov al,'$' ; al = ukončovací znak asm
mov [es:di],al ; argv[di] = '$' (ukonči reťazec)

mov ax,es
mov ds,ax ; ds = &argv

mov ah,09h ; služba výpis reťazca na adrese dx
mov dx,argv ; dx = &argv
int 21h ; vypíš reťazec ukončený '$'

mov ah,4Ch ; vráť sa do DOSu
int 21h

segment data
argv resb(256) ; char argv[256];

segment stack stack
resb 1000
stacktop:

Nahlásit jako SPAM
IP: 147.229.208.–
o-lox0
Super člen
12. 2. 2009   #6
-
0
-

Tak zase abych nemystifikoval, já sem hodil už 82h jako, že jsme za too mezerou :D (čili 81h)

To tvé odečítání odečítá spíše ten Enter. Ale "kdo" ví co vlastně DOS v počtu vrací jestli mezeru nebo Enter :D

Nahlásit jako SPAM
IP: 85.71.152.–
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, 193 hostů

Podobná vlákna

Adresácia v DOSe v NASM — založil x.kodi

C# zápis do příkazového řádku — založil Začátečník MEGA32

 

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