Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

PSP чтение из командной строки 81h и запись в переменную

26K
05 мая 2008 года
metal_anton
27 / / 20.04.2008
Помогите вот написал(с помощью инета) код который принимает из командной строки параметры(.exe файл) и надо эти параметры потом проверять, а вот никак не могу выйти где хоть хранится начало этих параметров, только конец в регистре bx, а где начало незнаю
вот код
Код:
.MODEL  tiny
 DOSSEG
.STACK  100h
.DATA
i          dw 0
parm_msg  DB "УгЄ ¦ЁвҐ Ї а ¬Ґвал","$"
vxod_str db ""
.CODE


                  mov    cl,ds:80h     ; количество символов
                                       ;   в командной строке
                  mov    si,81h        ; со смещением 81h
                                       ;   начинается область
                                       ;   параметров
                  cld
                  mov bp,cx
                  mov bx,cx            
get_parаmetr:

                  lods   BYTE PTR es:[si]  ; загружаем в al
                                           ;   очередной
                                           ;   символ строки
                                           ;   параметров
                 
                  mov vxod_str[bp],al  ; запись в переменную символа с командной строки                
                  loop get_parametr                                                                                  
                 jmp print_parametr

print_parametr :
                ; для начала хотел бы вывести то что есть  в строке но  выводит с конца строки а надо  с начала что  здесь изменить??
         
                  mov al,vxod_str[bp]      
                  mov    ah,2              ; выводим его на экран
                  mov    dl,al
                  int    21h
                  dec  vxod_str[bp] ; переход на следующий элемент                              
                  jmp  end_progr

end_progr:
                  .EXIT   0
                  END

print_parametr - выводит только последний элемент и если его декрементировать зная количество символов то можно дойти до начала в принципе можно сделать цикл который это сделает но я думаю что начало сохранения этих параметров где то лежит только вот где не пойму
349
05 мая 2008 года
Phantom-84
656 / / 27.10.2005
Начало строки параметров находится в PSP по адресу 80h. Участок для хранения строки параметров имеет размер 128 байт. Сегментный адрес PSP передается программе при старте в регистрах ds и es.
26K
05 мая 2008 года
metal_anton
27 / / 20.04.2008
Цитата: Phantom-84
Начало строки параметров находится в PSP по адресу 80h. Участок для хранения строки параметров имеет размер 128 байт. Сегментный адрес PSP передается программе при старте в регистрах ds и es.


так в ds у меня хранится количество символов в строке?? а в es тогда начало строки и можно написать так

 
Код:
mov al,vxod_str[es] ;нельзя,  а как можно??
как написать цикл для прохода строки от начала до конца?? если можно кодом подскажите
349
05 мая 2008 года
Phantom-84
656 / / 27.10.2005
Цитата: metal_anton
так в ds у меня хранится количество символов в строке?? а в es тогда начало строки и можно написать так
 
Код:
mov al,vxod_str[es] ;нельзя,  а как можно??
как написать цикл для прохода строки от начала до конца?? если можно кодом подскажите



Количество символов в строке у тебя (а точнее у DOS) хранится в начале самой строки. Ты нигде регистр ds не меняешь.

 
Код:
cld
mov si,81h
mov cl,[si-1] ; получаешь длину строки
mov ch,0
next:
lodsb
...
; здесь обрабатываешь очередной символ строки
...
loop next
26K
05 мая 2008 года
metal_anton
27 / / 20.04.2008
Цитата: Phantom-84

 
Код:
next:
lodsb
...
; здесь обрабатываешь очередной символ строки
...
loop next


а как обрабатывать у меня получается тока с конца строки и то не верно прошу если не сложно напишите именно вывод строки с начала до конца спасибо большое

349
06 мая 2008 года
Phantom-84
656 / / 27.10.2005
Сейчас под DOS почти никто не программирует... По идее вывод строки параметров можно выполнить так.
 
Код:
mov ah,40h
mov bx,STDOUT
mov cl,[80h]
mov ch,0
mov dx,81h
int 21h
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог