Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.04.2012, 20:01   #1
Adverse
 
Регистрация: 15.04.2012
Сообщений: 4
Печаль Nasm. Получение параметров командной строки.

Возможно вопрос довольно глупый но я в Асме человек новый.
Необходимо получить имя файла который надо открыть, написанное после имени программы в командной строке. Прочитал что все парметры кладутся в стек. Но я не знаю длину имени файла. Как ее найти? Вот код который я написал:

Код HTML:
SECTION .data

SECTION .bss
fn:	resb 80 
SECTION .text

GLOBAL _start
_start:
	times 2 pop ebx
	mov ebx, 0
	pop ebx
	mov BYTE[fn], ebx
	mov eax, 4
	mov ebx, 1
	mov ecx, fn
	mov edx, 10
	int 80h
	mov eax, 1
	mov ebx, 0
	int 80h
З.Ы. Компилятор Nasm
Adverse вне форума Ответить с цитированием
Старый 15.04.2012, 20:10   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

компилятор то понятно, вы под какую ОС то пишите?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 15.04.2012, 20:12   #3
Adverse
 
Регистрация: 15.04.2012
Сообщений: 4
По умолчанию

Ubuntu 11.04
Adverse вне форума Ответить с цитированием
Старый 15.04.2012, 20:17   #4
Adverse
 
Регистрация: 15.04.2012
Сообщений: 4
По умолчанию

SECTION .data

SECTION .bss

SECTION .text

GLOBAL _start
_start:
times 2 pop ecx
mov ecx, 0
pop ecx
mov eax, 4
mov ebx, 1
mov edx, 10
int 80h
mov eax, 1
mov ebx, 0
int 80h

Этот код в принципе выводит но если количество символов равно значению помещенному в edx.
Adverse вне форума Ответить с цитированием
Старый 16.04.2012, 18:39   #5
programmisto1
Пользователь
 
Регистрация: 16.04.2012
Сообщений: 11
По умолчанию

Лучше пиши на TASM'е, там проще. Вот код:


mov ah,CS:[81h];длина строки c параметром
mov di,offset fname;
mov si,82;начало строки с параметром
mov cl,ah
mov ch,0 ;цикл в длину строки
lop:

;а здесь делаешь что хочешь с каждым символом например,
mov ax,[si]
mov [di],ax
inc si
inc di
loop lop;
int 20h
fname db 90 dup (0);

Последний раз редактировалось programmisto1; 16.04.2012 в 18:43.
programmisto1 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Asm. Передача параметров командной строки. Adverse Помощь студентам 0 15.04.2012 19:42
Получение значений командной строки в Fortran Power Station 4.0 Игорь1979 Помощь студентам 6 28.03.2010 22:08
передача параметров программе при запуске из командной строки shurik_7866 Общие вопросы Delphi 3 03.06.2009 18:23
Получение параметров командной строки по PID sadist_ds Win Api 1 25.02.2009 20:22
Передача параметров в командной строке RUBEY Общие вопросы Delphi 1 12.01.2009 18:57