Объясните строчку кода - Assembler
Формулировка задачи:
Доброго всем дня. Недавно писал программу для вывода списка файлов директории, но вместо ожидаемого результата всегда получалась абракадабра, наткнулся в интернете на код, в принципе почти также было и у меня. Но было одно отличие, из-за которого, как выяснилось позже у меня и была абракадабра, эта последняя строчка , добавив ее все сразу нормализовалось, так вот и хочу задать вопрос, что эта строчка, по сути, делает? Заранее спасибо.
P.S. чужой код
P.P.S в чужом коде это предпоследняя строчка
db '$'
Конечно неправильно. Вот примерная программка. ; Немного описалова. ; Вход: ; AH - 4Eh ; DS:DX - адрес строки поиска ; CX - атрибуты ; Выход: ; AX - код ошибки (в случае если встал CF) ; DTA - результаты ; простой примерчик - выводим список всех файлов в каталоге .model tiny .code org 100h start: ; по умолчанию DTA находится в PSP, но мы можем задать ей другое расположение ; (а можем и работать со старым адресом). вобщем переместим mov ah,1ah mov dx,offset dta int 21h ; FindFirstFile mov ah,4eh xor cx,cx mov dx,offset searchPath int 21h jc quit print_filename: ; имя файла находится по смещению 1Eh в DTA и завершается нулем ; теперь выводим имя найденного файла. сразу отмечу, чтобы не тратить время на ; красивый вывод делаю так: имя файла - последнее поле в DTA, поэтому ставлю ; после DTA символ конца строки DOS "$" и вывожу как строку. mov ah,9 mov dx,offset dta + 1eh int 21h ; FindNextFile mov ah,4fh mov dx,offset dta int 21h jnc print_filename quit: ; эникей xor ax,ax int 16h mov ah,4ch int 21h ; data searchPath db "*.*",0 dta db 2ch dup (?) db "$" end start
Решение задачи: «Объясните строчку кода»
textual
Листинг программы
dta db 2ch dup (?),'$'
Объяснение кода листинга программы
В данной строке кода происходит описание переменной dta, которая является строкой (db - это указание на то, что переменная является строкой), содержащей два символа '?' и '$'. Вот список элементов в данном коде:
- dta - название переменной
- db - указание на тип переменной (в данном случае - строка)
- 2ch - количество символов в строке (в данном случае - 2 символа)
- dup - указание на повторение символов (в данном случае - повторяются символы '?' и '$')
- ('?', '$') - значения символов, которые повторяются в строке Таким образом, данная строка кода описывает переменную dta, которая содержит строку из двух символов '?' и '$'.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д