Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: программирование на языке Assembler


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Assembler

Выпуск № 456
от 25.05.2006, 22:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 335, Экспертов: 23
В номере:Вопросов: 1, Ответов: 1


Вопрос № 43704: каким образом можно передавать через командную строку параметры в прогмму в 16-битной ассемблере??? мне нужно передать 2 параметра...

Вопрос № 43.704
каким образом можно передавать через командную строку параметры в прогмму в 16-битной ассемблере??? мне нужно передать 2 параметра

Приложение:

Отправлен: 20.05.2006, 21:51
Вопрос задала: Triada (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: Пан Павел Константинович
Здравствуйте, Triada!

Вот выдержка из Рассылки Уважаемого мною Олега Калашникова.

Как вы помните, все *.com-программы начинаются с адреса 100h (org 100h). Что же находится в памяти от 0 до 100h? Там расположен PSP (Program Segment Prefix - префикс программного сегмента). По адресу 80h находится по умолчанию DTA (Data Transfer Area - область переноса данных). В DTA записывается информация, когда функция поиска файла (4Eh и 4Fh) находит очередной файл. Все вроде бы и ничего, но проблема в том, что по этому адресу (80h) располагается изначально командная строка. Например:

format.com c:/s/u

По адресу CS:0080h будет находится: L_c:/s/u, где L - длина командной строки, а _ -символ пробела. Для того, чтобы удостовериться, запустите отладчик AFD так:

afd.exe format c:/s/u

Затем посмотрите, что будет находиться по адресу CS:0080h.

Далее идёт текст от меня.
Давайте напишем программу, которая строется на коде который приведён ниже.

CSEG segment
assume cs:CSEG,ds:CSEG,ss:CSEG,es:CSEG
org 100h
Begin:
;===========================
xor bx,bx
mov cx,bx
;===========================
mov si,0082h
mov cl,[si-2h]
;===========================
jcxz @@2
@1:
;===========================
mov al,[si+bx]
mov [BUFF+bx],al
inc bx
loop @@1
;===========================
mov ah,09h
lea dx,BUFF
int 21h
;===========================
@2:
ret ;exit
;===========================
BUFF db 7 dup('$')
CSEG ends
end Begin

И так мы написали программу что теперь? давайте назавём программу aj.com и запустим её вот так:

C:w32dAK47worksin>aj.com /t /c

После запуска У вас будет на экране СЛЕДУЮЩЕЕ:
/t /c
С, Уважением MnEm0n!C.


---------
Hello Worlds
Ответ отправил: Пан Павел Константинович (статус: 9-ый класс)
Ответ отправлен: 21.05.2006, 00:28
Оценка за ответ: 5
Комментарий оценки:
спасибо за ответ. помогите еще если можете


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.33 от 25.05.2006
Яндекс Rambler's Top100

В избранное