IPB
ЛогинПароль:

> ПРАВИЛА РАЗДЕЛА!!!

1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!

> Атрибуты файла, ассемблер
Rocket
сообщение 15.02.2009 23:50
Сообщение #1


Знаток
****

Группа: Пользователи
Сообщений: 306
Пол: Мужской
Реальное имя: Евгений

Репутация: -  0  +


Доброго времени суток! У меня тут заданьеце : вывести атрибуты файла, в диалоговой форме произвести переустановку атрибутов. Реализовал первую часть - вывод атрибутов, использую функцию 43h прерывания 21h. Но возникает какая-то ошибка при вызове прерывания. В чём проблема?

data segment
path db "E:\data.txt",0
mes1 db 13,10,"read\write$"
mes2 db 13,10,"read only$"
mes3 db 13,10,"X-files$"
mes4 db 13,10,"system$"
data ends

code segment
assume cs:code, ds:data
start: mov ax,data
mov ds,ax

mov ax, 43h
mov al,0
mov dx, offset path
int 21h

add ax, '0'
int 29h

m1: cmp cx,00h
jne m2
mov ah, 09h
mov dx,offset mes1
int 21h
jmp mx

m2: cmp cx,01h
jne m3
mov ah, 09h
mov dx,offset mes2
int 21h
jmp mx

m3: cmp cx,02h
jne m4
mov ah, 09h
mov dx,offset mes3
int 21h
jmp mx

m4: cmp cx,04h
mov ah, 09h
mov dx,offset mes4
int 21h
jmp mx

mx: mov ax, 4c00h
int 21h
code ends
end start

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 20.02.2009 0:45
Сообщение #2


Гость






Цитата
Как сделать, чтоб при нажатии соответствующей кнопки, устанавливался/сбрасывался атрибут?
На самом деле все просто:
	; вывел меню

; получил текущие атрибуты файла
mov ah, 43h
mov al, 0
mov dx, offset path
int 21h
jc error

; вывел атрибуты
call showAtr
; запомнил, оно дальше пригодится...
; естественно, в сегменте данных не забудь описать myAttr DW ?
mov myAttr, cx

; ждешь нажатия на кнопку
mov ah, 01h
int 21h
; получаешь НОМЕР кнопки - 1
sub al, '0'
dec al

; это будет сдвиг
mov cl, al
mov ax, 0001h
; получаем маску для выбранного пользователем бита
shl ax, cl
; восстанавливаем атрибуты в CX
mov cx, myAttr
and cx, ax ; нужный бит установлен ?
jz not_set
; Да, был установлен, надо его сбросить
mov cx, myAttr
not ax
and cx, ax
jmp set_attr
not_set:
; Нет, результат AND был 0, значит, бит не был установлен
mov cx, myAttr
or cx, ax

set_attr:
; и устанавливаем то, что вышло...
mov ah, 43h
mov al,1
mov dx, offset path
int 21h
jc error
call showAtr
jmp mx
; ...
, я здесь не делал никаких проверок на то, какие клавиши нажимались... Добавь там проверку, после чтения с клавиатуры, что нажата одна из кнопок '1' .. '6', чтоб не было никаких неожиданностей...
 К началу страницы 
+ Ответить 

Сообщений в этой теме
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
volvo   А что ж ты сделал тогда? Что за привычка - ВЫБРОСИ...   20.02.2009 20:36
Rocket   А что ж ты сделал тогда? Что за привычка - ВЫБРОС...   20.02.2009 23:17


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 14.08.2025 8:47
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"