Объясните строчку кода - Assembler

Узнай цену своей работы

Формулировка задачи:

Доброго всем дня. Недавно писал программу для вывода списка файлов директории, но вместо ожидаемого результата всегда получалась абракадабра, наткнулся в интернете на код, в принципе почти также было и у меня. Но было одно отличие, из-за которого, как выяснилось позже у меня и была абракадабра, эта последняя строчка
db '$'
, добавив ее все сразу нормализовалось, так вот и хочу задать вопрос, что эта строчка, по сути, делает? Заранее спасибо. P.S. чужой код
Конечно неправильно.
Вот примерная программка.

; Немного описалова.    
; Вход:
; 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
P.P.S в чужом коде это предпоследняя строчка

Решение задачи: «Объясните строчку кода»

textual
Листинг программы
dta db 2ch dup (?),'$'

Объяснение кода листинга программы

В данной строке кода происходит описание переменной dta, которая является строкой (db - это указание на то, что переменная является строкой), содержащей два символа '?' и '$'. Вот список элементов в данном коде:

  1. dta - название переменной
  2. db - указание на тип переменной (в данном случае - строка)
  3. 2ch - количество символов в строке (в данном случае - 2 символа)
  4. dup - указание на повторение символов (в данном случае - повторяются символы '?' и '$')
  5. ('?', '$') - значения символов, которые повторяются в строке Таким образом, данная строка кода описывает переменную dta, которая содержит строку из двух символов '?' и '$'.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.25 из 5