1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!
| Rocket |
15.02.2009 23:50
Сообщение
#1
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 306 Пол: Мужской Реальное имя: Евгений Репутация: 0 |
Доброго времени суток! У меня тут заданьеце : вывести атрибуты файла, в диалоговой форме произвести переустановку атрибутов. Реализовал первую часть - вывод атрибутов, использую функцию 43h прерывания 21h. Но возникает какая-то ошибка при вызове прерывания. В чём проблема?
|
![]() ![]() |
| volvo |
20.02.2009 20:36
Сообщение
#2
|
|
Гость |
Цитата Я сделал без вот этого момента : А что ж ты сделал тогда? Что за привычка - ВЫБРОСИТЬ все, что не понял, а потом сказать, что программа не работает?Как ты хочешь менять значение определенного атрибута на противоположное? Чтобы это сделать, надо дождаться от пользователя решения, какой атрибут менять, потом перейти к соответствующему биту (для атрибута RO - это нулевой, самый младший бит, LSB как говорится; для атрибута Hidden - первый, для System - второй, и т.д.), проверить его текущее состояние, если он сейчас установлен, то сбросить, если НЕ установлен - установить. Так? Продолжаем.. Как проверить бит, соответствующий данному атрибуту? Для начала, надо получить номер бита, начиная с 0. Получили, что дальше? Создаем маску для нужного бита: значение 0001h надо сдвинуть влево на столько, какой бит мы проверяем. Вот это и делается в нижеследующих строках: mov cl, al ; Не забыл, в AL у тебя номер бита, который надо поменять ... Теперь у нас в AX - маска, с единицей ТОЧНО в том же месте, где находится изменяемый бит атрибута... Кстати, твою программу можно сократить значительно, ты бы макросы что-ли задействовал? У тебя ж одно и то же делается 6 раз подряд... И вот этого я не говорил, ты сам это придумал: Цитата mov ah,al |
Rocket Атрибуты файла 15.02.2009 23:50
volvo Ну, наверное все-таки
path db "E:/data.txt... 16.02.2009 0:20
Rocket
Ну, наверное все-таки
[code=asm]path db "E:/... 16.02.2009 20:31
volvo Ctrl+A...
Программу сейчас гляну... 16.02.2009 20:43
volvo Так... А в программе-то у тебя ошибка в том, что т... 16.02.2009 21:25
Rocket Так, исправил следующем образом:
data segment
pa... 17.02.2009 22:09
volvo Где ты выкопал этот 00h, не расскажешь? Документац... 17.02.2009 22:12
Rocket
Где ты выкопал этот 00h, не расскажешь? Документа... 17.02.2009 22:15
volvo P.S.
and ax,0000h
jz m1
:blink: ты на са... 17.02.2009 22:16
Rocket
P.S.
and ax,0000h
jz m1
:blink: ты на с... 17.02.2009 22:27
Rocket Вот пытаюсь произвести установку атрибута "re... 17.02.2009 23:53
volvo Естественно, ты устанавливаешь комбинацию атрибуто... 18.02.2009 1:10
Rocket
Естественно, ты устанавливаешь комбинацию атрибут... 19.02.2009 21:34
volvo Ага, and-ом, только не просто and-ом, а:
mov ah, ... 19.02.2009 22:10
Rocket Теперь мне нужно сделать, чтоб всё это работало в ... 19.02.2009 23:55
volvo На самом деле все просто:
; вывел меню
; получ... 20.02.2009 0:45
Rocket Вот, что у меня получилось:
data segment
path db... 20.02.2009 19:24
Rocket
А что ж ты сделал тогда? Что за привычка - ВЫБРОС... 20.02.2009 23:17![]() ![]() |
|
Текстовая версия | 8.12.2025 10:37 |