Форум программистов, компьютерный форум, киберфорум
Assembler: DOS/Real Mode/16-bits
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 23.10.2020
Сообщений: 17
MASM

Прочитать атрибуты файла

12.11.2020, 14:18. Показов 2096. Ответов 3
Метки masm (Все метки)

Студворк — интернет-сервис помощи студентам
У меня есть код, который узнаёт атрибуты файлов, но когда я хочу вывести (сравнить) атрибуты с кодами, то ничего нет и странный вывод.

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
sseg    segment stack
        db      256 dup(?)
sseg    ends
dseg    segment
    path    db  'melody.asm',0
    error_word db "File is not exists$"
    read_only db "read_only$"
    hidden  db  "hidden$"
    system  db  "system$"
    volume_label db "volume label$"
    directory   db "directory$"
    archive db  "archive$"
    unused  db  "unused$"
    shareable db "shareable$"
dseg    ends
cseg    segment
        assume  ss:sseg, ds:dseg, cs:cseg
start:  
        jmp     main
main:
        push    ds
        xor     ax,ax
        push    ax
        mov     ax,dseg
        mov     ds,ax
        xor     ax,ax
        ;-----------------------------------------------
        mov     ax,4300h
        xor     cx,cx
        mov     dx,offset path
        int     21h
        jc      error
 
        cmp     cl,00000h
        je      read
        cmp     cl,0002h
        je      hide
        cmp     cl,0004h
        je      system0
        cmp     cl,0008h
        je      volume
        cmp     ch,0010h
        je      dir
        cmp     ch,0020h
        je      archive0
        
 
        ;-----------------------------------------------
exit:
        mov     ax, 4c00h
        int     21h
 
read:
        mov     dx,offset read_only
        mov     ah,9
        int     21h
        jmp     exit
hide:
        mov     dx,offset hidden
        mov     ah,9
        int     21h
        jmp     exit
system0:
        mov     dx,offset system
        mov     ah,9
        int     21h
        jmp     exit
volume:
        mov     dx,offset volume_label
        mov     ah,9
        int     21h
        jmp     exit
dir:
        mov     dx,offset directory
        mov     ah,9
        int     21h
        jmp     exit
archive0:
        mov     dx,offset archive
        mov     ah,9
        int     21h
        jmp     exit
unused0:
        mov     dx,offset unused
        mov     ah,9
        int     21h
        jmp     exit
shareable0:
        mov     dx,offset shareable
        mov     ah,9
        int     21h
        jmp     exit
 
error:
        mov     dx,offset error_word
        mov     ah,9
        int     21h
        jmp     exit
 
cseg    ends
        end     start
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.11.2020, 14:18
Ответы с готовыми решениями:

Вывести атрибуты файла
С использованием функций DOS написать программу на ассемблере, которая выводит атрибуты файла. Функция DOS: 4300h(INT 21h). Путь к...

Как на MessageBox вывести атрибуты файла
С помощью этой конструкции выводится числовое значение функции А как сделать чтобы выводилось буквенное отображение Например А (файл...

Вывести на экран атрибуты заданного файла
Ребят, понимаю что прошу многого, но это единственные 3 задания практических с билета, которые я не могу выполнить перед экзаменом. Если...

3
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8657 / 4491 / 1670
Регистрация: 01.02.2015
Сообщений: 13,899
Записей в блоге: 12
12.11.2020, 19:17
Лучший ответ Сообщение было отмечено Diman_Meni как решение

Решение

Скомпилировал в exe программу - работает, выводит.
Только изменил
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
        cmp     cx,0001h
        je      read
        cmp     cx,0002h
        je      hide
        cmp     cx,0004h
        je      system0
        cmp     cx,0008h
        je      volume
        cmp     cx,0010h
        je      dir
        cmp     cx,0020h
        je      archive0
1
0 / 0 / 0
Регистрация: 23.10.2020
Сообщений: 17
12.11.2020, 19:31  [ТС]
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
sseg    segment stack
        db      256 dup(?)
sseg    ends
dseg    segment
    path            db  "c:\masm611\bin\v_chel.asm"
    point_fname     dd  path
    error_word      db  "File is not exists$"
    read_only       db  "read_only$"
    hidden          db  "hidden$"
    system          db  "system$"
    volume_label    db  "volume label$"
    directory       db  "directory$"
    archive         db  "archive$"
    unused          db  "unused$"
    shareable       db  "shareable$"
dseg    ends
cseg    segment
        assume  ss:sseg, ds:dseg, cs:cseg
start:  
        jmp     main
main:
        push    ds
        xor     ax,ax
        push    ax
        mov     ax,dseg
        mov     ds,ax
        xor     ax,ax
        ;-----------------------------------------------
        mov     ax,4300h
        mov     cx,0
        lds     dx,point_fname
        int     21h
        jc      error
 
        call    check
 
        mov     ax,4301h
        mov     cx,0002h
        lds     dx,point_fname
        int     21h
        jc      error
 
        mov     ax,4300h
        mov     cx,0
        lds     dx,point_fname
        int     21h
        jc      error
 
        call    check
 
        ;-----------------------------------------------
exit:
        mov     ax, 4c00h
        int     21h
 
check:
        cmp     cx,0001h
        je      read
        cmp     cx,0002h
        je      hide
        cmp     cx,0004h
        je      system0
        cmp     cx,0008h
        je      volume
        cmp     cx,0010h
        je      dir
        cmp     cx,0020h
        je      archive0
 
        ret
read:
        mov     dx,offset read_only
        mov     ah,9
        int     21h
        ret
hide:
        mov     dx,offset hidden
        mov     ah,9
        int     21h
        ret
system0:
        mov     dx,offset system
        mov     ah,9
        int     21h
        ret
volume:
        mov     dx,offset volume_label
        mov     ah,9
        int     21h
        ret
dir:
        mov     dx,offset directory
        mov     ah,9
        int     21h
        ret
archive0:
        mov     dx,offset archive
        mov     ah,9
        int     21h
        ret
unused0:
        mov     dx,offset unused
        mov     ah,9
        int     21h
        ret
shareable0:
        mov     dx,offset shareable
        mov     ah,9
        int     21h
        ret
 
error:
        mov     dx,offset error_word
        mov     ah,9
        int     21h
        ret
 
cseg    ends
        end     start
Хорошо. Я вот пробую поменять атрибут файла, но он не меняеться. В чём проблема?
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8657 / 4491 / 1670
Регистрация: 01.02.2015
Сообщений: 13,899
Записей в блоге: 12
12.11.2020, 20:29
Верните прежний путь к файлу. Вряд ли в point_fname заносится ds при загрузке программы на выполнение.

В DOSBox я тоже не смог изменить атрибуты файла. Возможно, что это особенность эмулятора.
Только атрибут 0000h - это обычный файл.

Добавлено через 15 минут
В DOSBox смог вывести только атрибут archive.
Остальные атрибуты файла не возвращаются ax=4300h int 21h
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.11.2020, 20:29
Помогаю со студенческими работами здесь

Вывести на экран атрибуты заданного файла
Разработать программу выводящую на екран атрибуты заданного файла. Если файла с введенным именем не существует, то программа должна...

Получить атрибуты файла, заданного в командной строке
Не создается com-файл. Пишет что то там с CS:IP не получилось) помогите найти ошибку .286 PROGRAM segment assume...

RTTI, не могу прочитать атрибуты
Всем привет, вот элементарнейшую задачу делаю, а уперся в неизвестную ошибку или глюк. Пытаюсь просто прочитать атрибуты. По моему...

Как прочитать атрибуты узла в XML?
Подскажите пожалуйста, как правильно прочитать атрибуты узла? XmlDocument doc = new XmlDocument(); doc.Load(xmlFile); ...

Как прочитать атрибуты тегов в xml
Здравствуйте. Как прочитать значения атрибутов kod, isgroup, ostatok и др. <?xml version="1.0" encoding="utf-8"?> ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru