Форум программистов, компьютерный форум, киберфорум
Assembler: DOS/Real Mode/16-bits
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.61/74: Рейтинг темы: голосов - 74, средняя оценка - 4.61
4 / 4 / 4
Регистрация: 06.03.2011
Сообщений: 319

Разбор аргументов командной строки

17.02.2013, 21:27. Показов 15634. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, нужно решить задачу но не знаю с его начать
в командной строке вводится A.exeпробел/Uпробел/VEnter
и программа должна выдать опцию U и V
подскажите пожалуйста
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.02.2013, 21:27
Ответы с готовыми решениями:

Получение и изменение аргументов командной строки
MASM Доброго времени суток! Задача: получить аргументы, например, ARG1=Value 1st ARG2=Value 2nd, и привести их к виду: ARG1="Value...

Парсинг командной строки.
Решил подтянуть знания по асму и написать небольшой проектик на нем. Для реализации онного мне нужно парсить командную строку и...

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

10
 Аватар для Troll_Face
608 / 406 / 8
Регистрация: 26.04.2012
Сообщений: 2,065
17.02.2013, 22:01
командная строка при запуске проги находится по адресу ES:[80h]. собственно значения:
Code
1
2
3
4
5
6
7
es:[80h] - длинна
es:[81h] - пробел
es:[82h] - '/'
es:[83h] - 'U'
es:[84h] - пробел
es:[85h] - '/'
es:[86h] - 'V'
дальше дело за малым. Ах да, еще одно: если Вы в начале проги настраиваете es на какой-либо другой сегмент, то надо получать адрес PSP:
Assembler
1
2
3
4
mov ah, 62h
int 21h
push bx
pop es    ;в es PSP
1
4 / 4 / 4
Регистрация: 06.03.2011
Сообщений: 319
17.02.2013, 22:20  [ТС]
Ага, спасибо большое, надо теперь это обдумать...
0
 Аватар для Ethereal
6772 / 2740 / 385
Регистрация: 17.02.2013
Сообщений: 4,048
18.02.2013, 00:48
При запуске EXE-программы регистры DS и ES содержат сегмент PSP. При запуске СOM-программы регистры CS DS ES SS содержат сегмент PSP. В PSP начиная со смещения 80h лежит командная строка, причем первым байтом лежит ее длина, а затем сама командная строка (за исключением директив переназначения ввода-вывода) указанной длины. Командная строка начинается (но никто это не гарантирует) с разделителя(ей), обычно это пробел(ы), но табуляция(ии) тоже туда может(гут) попасть. Разбор командной строки надо начинать с отбрасывания возможных разделителей в ее начале. В хвосте командной строки тоже могут оказаться бесполезные разделители. Сразу за командной строкой лежит байт 0Dh и он не может встретиться в самой командной строке. Его можно использовать как признак конца командной строки при ее разборе, чтобы не заниматься подсчетом символов в ней. Байт 0Dh не включается в длину командной строки.
0
4 / 4 / 4
Регистрация: 06.03.2011
Сообщений: 319
18.02.2013, 01:53  [ТС]
Не могли бы вы сказать что не так и помочь исправить(((

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
.model small
.stack 100h
.code
start:
mov ax,0080h
mov si,ax
mov al,[si]
add ax,81h
mov si,ax
cmp si,20h
inc si
cmp si,'/'
inc si
cmp si,'U'
mov ah,9
int 21h
inc si
cmp si,20h
inc si
cmp si,'/'
inc si
cmp si,'V'
mov ah,9
int 21h
mov ax, 4C00h
int 21h
end start
0
4 / 4 / 4
Регистрация: 06.03.2011
Сообщений: 319
18.02.2013, 01:56  [ТС]
Цитата Сообщение от Fatal Error Посмотреть сообщение
командная строка при запуске проги находится по адресу ES:[80h]. собственно значения:
Code
1
2
3
4
5
6
7
es:[80h] - длинна
es:[81h] - пробел
es:[82h] - '/'
es:[83h] - 'U'
es:[84h] - пробел
es:[85h] - '/'
es:[86h] - 'V'
дальше дело за малым. Ах да, еще одно: если Вы в начале проги настраиваете es на какой-либо другой сегмент, то надо получать адрес PSP:
Assembler
1
2
3
4
mov ah, 62h
int 21h
push bx
pop es    ;в es PSP
Не пойму что не правильно делаю(
Миниатюры
Разбор аргументов командной строки  
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16364 / 7677 / 1078
Регистрация: 11.11.2010
Сообщений: 13,743
18.02.2013, 04:28
Цитата Сообщение от yuliyayuliya28 Посмотреть сообщение
Не могли бы вы сказать что не так
всё не так!
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
; masm dos exe #
.286
.model small
.data
string db 'пользователь ввел комбинацию " /U /V"$'
.code
start:  mov si,80h
        lodsb
    cmp al,6
    jne exit
    mov cx,6
        mov ax,@data
    mov es,ax
    mov di,offset string+30
    repe cmpsb
    jne exit
    mov ax,es
    mov ds,ax
    mov dx,offset string
    mov ah,9
    int 21h
    mov ah,0
    int 16h
exit:   mov ah,4Ch
    int 21h
end start
1
4 / 4 / 4
Регистрация: 06.03.2011
Сообщений: 319
18.02.2013, 15:07  [ТС]
Не могли бы вы помочь разобрать код а то плохо понимаю((((и как тогда убрать при выводе '/' чтобы остались только U и V?
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16364 / 7677 / 1078
Регистрация: 11.11.2010
Сообщений: 13,743
18.02.2013, 15:53
yuliyayuliya28,
не наглей, а возьми учебник и разбери программу самостоятельно
0
4 / 4 / 4
Регистрация: 06.03.2011
Сообщений: 319
18.02.2013, 16:10  [ТС]
я разобрала по строчно но не понимаю для чего мы прибавляем к строке+30?
0
 Аватар для Troll_Face
608 / 406 / 8
Регистрация: 26.04.2012
Сообщений: 2,065
18.02.2013, 16:15
Цитата Сообщение от yuliyayuliya28 Посмотреть сообщение
для чего мы прибавляем к строке+30?
Code
1
'пользователь ввел комбинацию  '
30 байт, тем самым в di будет смещение '/U /V'. тут сравнивается командная строка с тем, что должно быть. если там все верно (присутствует /U /V), то выводится, а если нету - на нет и суда нет
3
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.02.2013, 16:15
Помогаю со студенческими работами здесь

Чтение командной строки
Сложилась необходимость прочитать командную строку. Каким образом это сделать из-под маздая - ума не приложу... Из-под отладчика работает,...

Работа с ResHacker из командной строки
Добрый день Стоит такая задача - есть EXEшник. Нужно из батника поменять его ресурсы (инфу о производителе версии и тп) Я пользуюсь ...

Запись в файл XOR аргумента командной строки
Помогите пожалуйста решить следующую задачу Нужно сформировать файл следующего содержания u1, XOR аргумента командной строки с u2,u3. ...

как задать файл из командной строки Ассемблере?
как задать файл из командной строки Ассемблере?

Программа, выводящая в центр экрана содержимое командной строки
Я учусь ЗНУ на информатике, не могу сдать лабы, помогите , пожалуйста!!!! И если можно то объясните как она работает. Заранее спасибо. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Звёздная пыль
kumehtar 20.06.2025
Я просто это себе представляю: как создавался этот мир. Как энергия слипалась в маленькие частички. Как они собирались в первые звёзды, как во вселенной впервые появился Свет. Как эти звёзды. . .
Создание нейросети с PyTorch
AI_Generated 19.06.2025
Ключевое преимущество PyTorch — его питоновская натура. В отличие от TensorFlow, который изначально был построен как статический вычислительный граф, PyTorch предлагает динамический подход. Это. . .
JWT аутентификация в ASP.NET Core
UnmanagedCoder 18.06.2025
Разрабатывая веб-приложения, я постоянно сталкиваюсь с дилеммой: как обеспечить надежную аутентификацию пользователей без ущерба для производительности и масштабируемости? Классические подходы на. . .
Краткий курс по С#
aaLeXAA 18.06.2025
Здесь вы найдете все необходимые функции чтоб написать програму на C# Задание 1: КЛАСС FORM 1 public partial class Form1 : Form { Spisok listin = new Spisok(); . . .
50 самых полезных примеров кода Python для частых задач
py-thonny 17.06.2025
Эффективность работы разработчика часто измеряется не количеством написаных строк, а скоростью решения задач. Готовые сниппеты значительно ускоряют разработку, помогают избежать типичных ошибок и. . .
C# и продвинутые приемы работы с БД
stackOverflow 17.06.2025
Каждый . NET разработчик рано или поздно сталкивается с ситуацией, когда привычные методы работы с базами данных превращаются в источник бессонных ночей. Я сам неоднократно попадал в такие ситуации,. . .
Angular: Вопросы и ответы на собеседовании
Reangularity 15.06.2025
Готовишься к техническому интервью по Angular? Я собрал самые распространенные вопросы, с которыми сталкиваются разработчики на собеседованиях в этом году. От базовых концепций до продвинутых. . .
Архитектура Onion в ASP.NET Core MVC
stackOverflow 15.06.2025
Что такое эта "луковая" архитектура? Термин предложил Джеффри Палермо (Jeffrey Palermo) в 2008 году, и с тех пор подход только набирал обороты. Суть проста - представьте себе лук с его. . .
Unity 4D
GameUnited 13.06.2025
Четырехмерное пространство. . . Звучит как что-то из научной фантастики, правда? Однако для меня, как разработчика со стажем в игровой индустрии, четвертое измерение давно перестало быть абстракцией из. . .
SSE (Server-Sent Events) в ASP.NET Core и .NET 10
UnmanagedCoder 13.06.2025
Кажется, Microsoft снова подкинула нам интересную фичу в новой версии фреймворка. Работая с превью . NET 10, я наткнулся на нативную поддержку Server-Sent Events (SSE) в ASP. NET Core Minimal APIs. Эта. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
OSZAR »