Вопрос № 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 Комментарий оценки: спасибо за ответ. помогите еще если можете