Задание: Надо найти файл и вывести инфу о нем
SECTION .text
org 0x100
mov ah, 4Eh
xor cx,cx
mov dx,filespec
int 0x21
jnc vyvod
not_found:
mov ah, 0x09
mov dx, screen_error
int 0x21
jc prog_end
vyvod:
mov ah, 40h
mov bx, 2
mov cx,12
mov dx, 80h+1Eh
int 21h
prog_end:
mov ah, 0x4c
mov al, 0
int 0x21
.data
screen_test DB "file mask: *.txt", 0xd, 0xa,'$'
mes DB "mes", 0xd, 0xa,'$'
screen_error DB "file not found", 0xd, 0xa,'$'
filespec DB "*.txt",0
При использовании функции 0х09 выводится абракадабрица.
При использовании 40h имя файла выводится нормально, а все остальное опять абракадабрицей.
Подскажите как вывести инфу. Мне нужно имя файла, время и дата создания, размер файла.
Спасибо.
Вывод информации о файле из DTA
Модератор: Andy
В DX - два байта по адресу Screen Error - т.е. 'fi', надоmov dx, screen_error
Код: Выделить всё
lea dx, screen_error
- нужен безусловный переход. Это здесь не к чему.jc prog_end
Не забудь на всякий случай сравнять сегменты кода и данных
Код: Выделить всё
push cs
pop ds
It's a long way to the top if you wanna rock'n'roll
- тогда уж mov dx, offset FileSpecmov dx,filespec
После выполнения 4Е (Find First) DTA заполняеться, чтобы взять адрес этого места, делаем:
Код: Выделить всё
mov ah, 2Fh
int 21h
00H-14H Зарезервированы
15H Атрибут файла
16H-17H Время
биты 0-4 = секунды / 2 (0 - 29)
5-10 = минуты
11-15H = часы
18H-19H Дата
биты 0-4 = день (1-31)
5-8 = месяц
9-15= год (относительно 1980)
1AH-1DH Размер файла
1EH-2AH ASCIIZ Имя файла
впредь старайся не путать загрузку адреса и загрузку значения. В принципе во всех языках такая же проблема
Код: Выделить всё
mov eax, offset MyData
lea eax, MyData - два эквивалента для загрузки адреса MyData в EAX
mov eax, MyData - загрузка значения в EAX по адресу MyData
It's a long way to the top if you wanna rock'n'roll