Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Asm для начинающих > Помогите с командной строчкои


Автор: xseroxas 6.11.2007, 20:42
Возникла проблема нада как щзиат параметры с командной строчки щтобы потом з даныму мозна было оперирыват
например:split file.txt 300
и нада както оперирыват с етими даными, мозет кто пример какой подкинет, спасиба.

Эст такой пример:
Код

.model small
.stack 100h
.data
msg DB "Parametrs:"
param =$-msg
buff DB 82 dup(?)
.code
start:
 push ds
 mov ax,@data
 mov ds,ax
 mov cx,(param)
 mov dx,offset msg
 
 push ax
 push bx
 mov ah,40h 
 mov bx,1
 int 21h
 
 pop ax
 pop bx
 
 pop ds
 mov cl,[ds:80h]
 xor ch,ch
 mov dx,82h
 push ax
 push bx

 mov ah,40h 
 mov bx,1
 int 21h
 
 pop ax
 pop bx
  
mov ax,4c00h
int 21h 
end start

Автор: Akina 6.11.2007, 21:15
функция 51h прерывания 21h вернет в BX сегмент текущего PSP.
В нем в байтах 80h..FFh лежит копия командной строки (без имени запущенного исполняемого файла и перенаправлений стандартных потоков - они вырезаны), причем байт 80h - длина этой строки, а с байта 81h сама строка, завершаемая байтом 0Dh.

т.е. например код
Код

mov ah,51h
int 21h
mov es,bx
mov al,es:[80h]

поместит в AL длину командной строки в байтах. Соответственно если дальше
Код

cbw
add ax,81h

то по адресу es:ax находится завершающий командную строку байт 0Dh.

А уж парсинг - это как-нить сам.

PS. Несколько раз прочитал, что написано в начальном постинге - до сих пор половины не понял... но что понял - на то ответил.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)