|
1 / 1 / 0
Регистрация: 05.04.2019
Сообщений: 110
|
|
MASM Обработка параметров командной строки28.10.2019, 16:28. Показов 6861. Ответов 48
Метки нет (Все метки)
Добрый день
Не могу решить задачку, помогите пожалуйста Задача: написать программу на ассемблере, которая в зависимости от количества заданных параметров: а) открыть файл с именем [параметр1] и отобразить его содержимое в окне консоли. Пример: c:\program1.exe parametr1 б) создать файл с именем [параметр1] и записать содержимое в него [параметр2] Пример: c:\program1.exe parametr1 parametr2 в) отобразить сообщение о неверном количестве параметров. Пример: c:\program1.exe parametr1 parametr2 parametr3 c:\program1.exe
0
|
|
| 28.10.2019, 16:28 | |
|
Ответы с готовыми решениями:
48
Обработка параметров командной строки |
|
3410 / 1829 / 489
Регистрация: 28.02.2015
Сообщений: 3,696
|
||
| 01.11.2019, 22:04 | ||
|
Ansi или Unicode, какая разница, тут вопрос, в том, что у ТС нет опыта написания программ. И мы будем как pcmax'у по букве молотком вбивать знания..
Добавлено через 4 минуты Пока ждем шаг №1.
1
|
||
|
1 / 1 / 0
Регистрация: 05.04.2019
Сообщений: 110
|
|||||||||||
| 03.11.2019, 15:55 [ТС] | |||||||||||
|
ФедосеевПавел,
Вот имею код который считывает данные с файла(Задача а))
0
|
|||||||||||
|
Модератор
|
|
| 03.11.2019, 16:04 | |
|
Пусть в переменной argc находится количество аргументов (параметров) командной строки.
Assembler .const aszError db 'Error', 0 .code ....... mov eax, [argc] cmp eax, 1 je @@OneArg cmp eax, 2 je @@TwoArg ;вывести сообщение об ошибке invoke WriteConsoleW, hConsoleOutput, ADDR aszError,\ LENGTHOF aszError - 1, ADDR BufLen, NULL jmp @@Exit @@OneArg: ........................ jmp @@Exit @@TwoArg: ........................ jmp @@Exit @@Exit: INVOKE ExitProcess,0
0
|
|
|
1 / 1 / 0
Регистрация: 05.04.2019
Сообщений: 110
|
|
| 03.11.2019, 16:09 [ТС] | |
|
ФедосеевПавел,
Это вы задачу в) написали ?
0
|
|
|
Модератор
|
||||||
| 03.11.2019, 16:28 | ||||||
|
Задачу в) и остальные. Ведь если вы правильно решили остальные задачи - их код достаточно скопировать в итоговый исходник.
На C это было бы
Я не верю, что вы решили два первых задания - очень уж разный стиль вызова WinAPI и общее оформление. А сам за вас делать не хочу, поэтому объединять не буду, чтобы не услышать от вас: "Пока вы не полезли - всё работало, а теперь исправляйте - не знаю, что вы с моим идеальным кодом натворили".
0
|
||||||
|
1 / 1 / 0
Регистрация: 05.04.2019
Сообщений: 110
|
|||||||||||
| 03.11.2019, 16:44 [ТС] | |||||||||||
|
ФедосеевПавел, первый код задачу а) я нашёл.
второй код я сам уже писал Добавлено через 4 минуты То есть нужно там где
а там где
я правильно понял?
0
|
|||||||||||
|
Модератор
|
|
| 03.11.2019, 16:56 | |
|
Да.
Добавлено через 7 минут Только вывод сообщения при ошибке переделайте под собственный стиль.
0
|
|
|
3410 / 1829 / 489
Регистрация: 28.02.2015
Сообщений: 3,696
|
|||||||||
| 03.11.2019, 16:56 | |||||||||
|
@@OneArg: . . . . - это код,который работает с одним аргументом; @@TwoArg: . . . . - это код который работает с двумя аргументами; Но без анализа командной строки и получения argc. Т.к. Вы это должны были сделать сами. Её, как-то получили и вывели. Вместо того,чтобы сосредоточится на рекомендациях Вы лезете в тырнет и копипастите, ч/з что. Ваш код должен быть тут:
1
|
|||||||||
|
3410 / 1829 / 489
Регистрация: 28.02.2015
Сообщений: 3,696
|
|
| 03.11.2019, 17:22 | |
|
Programist_r, чтобы написать код Вашего задания нужно около часа времени. Но его можно написать по разному, к примеру на ФАСМ или ТАСМ или в стиле АТХ и дать Вам код, Вы его под МАСМ не переделаете и за месяц(тут можно даже тотализатор организовывать и делать ставки, что в месяц Вы несправитесь, с перекодированием кода в масм).
Хотите научится писать программы, выполняйте действия по шагам. И помните, Вы пока между: Анализом, Проэктированием и Кодированием(АПК). Помните, что если в АПК, не выполнить первые две буквы, то с третей у Вас ну ни как не получится. И это не важно какой язык программирования. Программа - код на основе спроэктированого алгоритма, который был получен на основе анализа.
1
|
|
|
1 / 1 / 0
Регистрация: 05.04.2019
Сообщений: 110
|
|
| 03.11.2019, 17:35 [ТС] | |
|
Constantin Cat,
обещаю разобраться, просто сейчас времени не хватает, как всё своё свободное время трачу на другие проекты на другом языке програмирования соединил код в один, компилируется , но когда задаю параметры то ничего не происходит
0
|
|
|
Модератор
|
|
| 03.11.2019, 17:49 | |
|
Значит программа требует отладки.
Выводите на экран количество параметров, чтобы понять место ошибки - неправильное определение количества параметров или ваши фрагменты кода глючат. Также добавьте вывод на экран отладочных строк в каждой ветке условия - "One Arg", "Two Arg", а "Error" и так должен быть. Делайте отладочную печать.
0
|
|
|
1 / 1 / 0
Регистрация: 05.04.2019
Сообщений: 110
|
|
| 03.11.2019, 18:06 [ТС] | |
|
ФедосеевПавел, знать бы ещё как в ассемблере делать отладку, на C++ и C# прекрасно знаю как
Добавлено через 2 минуты тут простую программу написать неделю уже не могу, а ещё отладку учить как пользоваться Добавлено через 2 минуты ФедосеевПавел, можете пожалуйста помочь соединить коды в один мне сдать это задание нужно уже завтра, пожалуйста
0
|
|
|
Модератор
|
|
| 03.11.2019, 18:25 | |
|
Я соединю, но править сами коды не буду - что они делают, то и будут делать - это на вашей совести, т.к. именно вы утверждаете их правильность.
Ваш код оформлю в виде двух процедур - это и нагляднее и претензий ко мне меньше.
1
|
|
|
1 / 1 / 0
Регистрация: 05.04.2019
Сообщений: 110
|
|
| 03.11.2019, 18:27 [ТС] | |
|
ФедосеевПавел, хорошо спасибо большое
0
|
|
|
3410 / 1829 / 489
Регистрация: 28.02.2015
Сообщений: 3,696
|
|||||
| 03.11.2019, 19:01 | |||||
|
П - проэктирование алгоритма на основе Анализа; К - написание кода по алгоритму. Это "жизнь" прогаммы:Задача,Анализ,Проэктирование.Кодирование,Тестирование(тут можно даже анализ пересмотреть и начать снова), Сопровождение(тут можно даже анализ пересмотреть и начать снова). И это не важно какой ЯП(язык программирования) Вы используете эти буквы - будут Вашим кошмаром:ЗАПКТС Вы думаете, что: Сшники или Шарпонутые, Паскльщики+, Перловцы, Питоновцы или ПХиПи, не знают что это. Для них С, хорошо, если новая версия супортит старую, А если как 64-х послали одномоментно 16-х. И всё, пиши по новой. 01.11.2019, 13:39 MASM Обработка параметров командной строки Говорил:
0
|
|||||
|
Модератор
|
|||||||||||
| 03.11.2019, 20:17 | |||||||||||
|
Как странно - не могу вывести в консоль параметры командной строки.
Запускаю из пакетного файла с двумя параметрами
полный текст исходника с ошибкой
Вызываю GetCommandLineW, получаю указатель на командную строку в Unicode. Вызываю CommandLineToArgvW, получаю количество параметров и указатель на массив указателей на Unicode-строки. Далее - делаю отладочную печать в консоль: - командной строки - количества аргументов - нулевого аргумента argv[0] Всё кроме argv[0] выводится, а argv[0] - кракозябры. Пробую другой параметр argv[1] - тот же результат. Заменяю вывод параметра на MsgBox - о чудо! - правильно выводит. Ведь и командная строка тоже Unicode, а она выводится в консоль теми же средствами (wsprintfW+WriteConsoleW). Не пойму, что я делаю не так?
0
|
|||||||||||
|
1 / 1 / 0
Регистрация: 05.04.2019
Сообщений: 110
|
|
| 03.11.2019, 20:44 [ТС] | |
|
ФедосеевПавел, то есть у вас тоже не получилось соединить ?
0
|
|
|
Модератор
|
|
| 03.11.2019, 21:00 | |
|
Я никогда не делаю мегакод. Добавляю функционал и тут же проверяю.
Объединять даже и не начинал. После получения списка параметров попробовал вывести их на экран - сделать тестовую печать (то, что вам недоступно), но получил странные результаты. Остановился и задал вопрос. Сейчас немного разобрался - результат работы wsprintfW не совсем тот, который я ожидал, а WriteConsoleW работает ожидаемо. Поэтому читаю в интернете, как добиться правильных результатов. Вы поймите, ваши проблемы безразличны всем кроме вас лично. Если бы не возможность попробовать работать с Unicode, я бы и не начинал. Лично мой интерес - Unicode. Когда разберусь со своим вопросом - и вашим займусь. Что вы думаете - я только и мечтаю целый вечер для чужого человека набирать и отлаживать программу на 1000+ строк? Ха-ха!
0
|
|
|
1 / 1 / 0
Регистрация: 05.04.2019
Сообщений: 110
|
|
| 03.11.2019, 21:02 [ТС] | |
|
ФедосеевПавел, по отдельности первый код(а) и второй код(б) работают идеально если можно так сказать
Добавлено через 1 минуту извинете
0
|
|
|
Модератор
|
||||||
| 03.11.2019, 21:30 | ||||||
|
Разобрался в причинах кракозябр - я неправильно интерпретировал значение argv. А это указатель на массив указателей. Поэтому вывод параметра 2
0
|
||||||
| 03.11.2019, 21:30 | |
|
Удобная обработка параметров командной строки функция main обработка параметров командной строки Обработка параметров командной строки. Можно ли ещё проще? Передача параметров из командной строки Ввод параметров из командной строки Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Сукцессия 20. Война автоботов. Делаем ставки. Лёд против "пш-пш!".
anaschu 11.07.2026
Битва ИИ в ризосфере: Как мы скрестили жесткие ОДУ, закон Фика и «подземный шантаж»
Уважаемые коллеги!
Хочу поделиться уникальным опытом ведения междисциплинарной компьютерной разработки. Прямо. . .
|
Сукцессия 19. Какие выводы я сделал из модели? Часть 2.Внутримикоризный стехиометрический буфер и хроно-дискретные зоны экспансии
anaschu 11.07.2026
Био-Инженерный Ликбез: Архитектура Модели Ризосферы
Математический аппарат моделирования
|
Сукцессия 18. Какие выводы я сделал из войны грибов с деревьями? Часть 1- рассказ и немного про термины
anaschu 11.07.2026
Био-Инженерный Ликбез: Архитектура Модели Ризосферы
Математический аппарат моделирования
Система ОДУ описывает динамику изменения массы различных компонентов системы во времени. Ключевой. . .
|
Просветление в 5 секунд
kumehtar 10.07.2026
Андрей Веретенников выдал фразу недавно: "Вам не обязательно кем-то себя считать"
|
|
Эксперимент с картинкой-обложкой на CodinGame
Adler 10.07.2026
Решил на днях провести эксперимент. У меня есть аккаунт на CodinGame, ТОП-3 по РФ среди 2200 участников (в разделе соревнования по программированию ИИ-ботов). Там есть обложка, куда можно влепить. . .
|
GitDOS: Когда я решил скрестить MS-DOS, GitHub и Claude
MaGz GoLd 08.07.2026
Привет, Киберфорум! Хочу поделиться своим проектом, который, надеюсь, вас заинтересует. GitDOS — это веб-приложение, которое позволяет запускать DOS в браузере с тремя крутыми фичами: диски живут в. . .
|
Учебный мини "цифровой двойник" = (Сервер = Java + Flask_питон )+(3D = Гугловскаая 4T nvideo + google colab) +( WMS = Odoo на Docker)
anaschu 07.07.2026
Увидел в требованиях к вакансии создателя имитационных моделей связку (REst + Api + WMS + Anylogic + питон + 3D Nvideo), и решил посмотреть, что это такое. Из этого всего я работал более менее. . .
|
Море в объективе
kumehtar 06.07.2026
Хотел написать много проникновенных слов, но передумал.
Оно само - говорит.
Кто слышит тот слышит.
|