У моей программы есть цель: прочитать символы из командной строки и использовать их в качестве полного имени пути в другой каталог. Эта программа работает, если вместо ввода символов из командной строки я определяю буфер как «P: \ test \», поэтому проблема заключается в символах чтения. Тем не менее, я попытался распечатать свой буфер, используя: ah 02h int 21h (одиночный символ), и он вывел его правильно.Чтение символов из командной строки и использование их для имени пути в сборке 8086
.model small
.stack 100h
.data
dir db 255 dup (0)
.code
start:
mov dx, @data
mov ds, dx
xor cx, cx
mov cl, es:[80h]
mov si, 0082h ;reading from command prompt 0082h because first one is space
xor bx, bx
l1:
mov al, es:[si+bx] ;filling buffer
mov ds:[dir+bx], al
inc bx
loop l1
mov dx, offset dir ;going to directory
mov ah, 3Bh
int 21h
mov ah, 4ch
mov al, 0
int 21h
end start
Таким образом, проблема заключалась в том, что мое имя пути состояло из «возврата каретки» на конце? Во-вторых, «mov byte ptr [dir + bx], 0« Я думал, что весь мой буфер «dir» заполнен 0, кроме ввода командной строки? Значит, эта линия не является сущностной? Да, я знаю, что я не могу изменить букву диска с этим прерыванием. – Pijus
@Pijus: Объявление 1: Да. Объявление 2: Да. Быть в безопасности. – rkhb
Кстати, нужно использовать fill (0) или можно использовать ('$')? Не только в этом случае, для ex в получении текущего каталога. – Pijus