Форум программистов, компьютерный форум, киберфорум
Assembler: DOS/Real Mode/16-bits
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/21: Рейтинг темы: голосов - 21, средняя оценка - 4.76
 Аватар для Лунный пёс
0 / 0 / 0
Регистрация: 23.12.2009
Сообщений: 12

Получить атрибуты файла, заданного в командной строке

09.11.2011, 16:32. Показов 4051. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Не создается com-файл. Пишет что то там с CS:IP не получилось) помогите найти ошибку
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
.286
PROGRAM segment
        assume CS:PROGRAM
        org 80h
len     db ?
        db ?
FName   db ? 
    org 100h
jmp start
    msg1    db 10,13,'File is read only$'
    msg2    db 10,13,'File is hidden$'
    msg3    db 10,13,'System file$'
    msg4    db 10,13,'This file have attributes$'
    msg5    db 10,13,'Archive file$'
    msg6    db 10,13,'File is normal$'
    msg7    db 10,13,'File is compressed$' 
start:
    mov si,offset FName
    mov bx,0
    mov bl,len
    mov byte ptr[bx+si],0
 
    mov dx, offset FName
    mov al,0
    mov ah,43h
    int 21h
    mov bx,0
.386
    bt ax,bx
    jnc next1
    lea dx,msg1
next1:
    inc bx
    bt ax,bx
    jnc next2
    lea dx,msg2
next2:
    inc bx
    bt ax,bx
    jnc next3
    lea dx,msg3
next3:
    inc bx
    bt ax,bx
    jnc next4
    lea dx,msg4
next4:
    inc bx
    bt ax,bx
    jnc next5
    lea dx,msg5
next5:
    inc bx
    bt ax,bx
    jnc next6
    lea dx,msg6
next6:
    inc bx
    bt ax,bx
    jnc next7
    lea dx,msg7
next7:
 
program    ends
        end     start
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.11.2011, 16:32
Ответы с готовыми решениями:

Получить размер файла, заданного в командной строке
Помогите найти ошибку! дано задание получить размер файла заданного в командной строке функциями DOS. при попытке компиляции говорит что не...

Поиск заданного файла в заданной папке (путь и имя файла задаются в командной строке)
Добрый вечер! Как сделать поиск заданного файла в заданной папке(путь и имя файла задаются в командной строке) это надо сделать с...

Разработать программу, производящую копирование заданного в командной строке файла
Здравствуйте, не могли бы помочь? Не могу разработать программу, производящую копирование заданного в командной строке файла, в десять...

7
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33399 / 21509 / 8236
Регистрация: 22.10.2011
Сообщений: 36,907
Записей в блоге: 12
09.11.2011, 17:52
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
.286
PROGRAM segment
    assume CS:PROGRAM
    org 80h
len db ?
    db ?
FName   db ? 
    org 100h
start: ; <--- точка входа
    jmp init
    
        msg1    db 10,13,'File is read only$'
        msg2    db 10,13,'File is hidden$'
        msg3    db 10,13,'System file$'
        msg4    db 10,13,'This file have attributes$'
        msg5    db 10,13,'Archive file$'
        msg6    db 10,13,'File is normal$'
        msg7    db 10,13,'File is compressed$'
init:
        mov si, offset FName
        mov bx, 0
        mov bl, len
        mov byte ptr[bx+si], 0
; ...
1
 Аватар для Лунный пёс
0 / 0 / 0
Регистрация: 23.12.2009
Сообщений: 12
09.11.2011, 20:07  [ТС]
ух как глупо) а я извелась) теперь com файл создается и даже программа работает но неправильно( почему то в любом случае выдает 2 первых сообщения, даже если атрибуты не такие
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
.286
PROGRAM segment
        assume CS:PROGRAM
        org 80h
 
FName   db ? 
    org 100h
 
start:
        jmp       InitProc
    msg1    db 10,13,'File is read only$'
    msg2    db 10,13,'File is hidden$'
    msg3    db 10,13,'System file$'
    msg4    db 10,13,'This file have attributes$'
    msg5    db 10,13,'Archive file$'
    msg6    db 10,13,'File is normal$'
    msg7    db 10,13,'File is compressed$' 
 
WriteCons  proc 
           push    ax
           mov     ah,09h
           int     21h
           pop     ax
           ret
WriteCons  endp
 
RCLine    proc
          xor bx, bx
          mov si, 80h     ; SI = смещение начала командной строки
          lodsb           ; Получим кол-во символов
          cmp al, 0
          je epic_Fail    ; Пустая ком. строка
          inc si          ; SI указывает на 1ый символ строки
Next_char:
        lodsb           ; Получаем очередной символ
        cmp al, 0Dh     ; Конец строки?
        je GetL         ; Да - на выход... 
        stosb           ; Нет - сохраним символ в переменной FName
        jmp  short Next_char    ; Следующий символ...
GetL:
        xor al,al       ;ASCII 0 в конец
        mov al, 0
    stosb
        mov al, '$'
        stosb
        clc                     ; Сбросим флаг переноса...
        jmp     GoNext
epic_Fail:
        mov bl, 1
GoNext:
        ret                     ; Выходим из процедуры
RCLine endp
 
 
 
InitProc:
    
 
     mov di, offset FName    ; ES:DI = адрес FName
       
        call RCLine     ; Вызываем процедуру чтения параметров командной строки
    mov al,0
    mov ah,43h
    int 21h
    mov bx,0
.386
    bt ax,bx
    jnc next1
    lea dx,msg1
        call WriteCons
next1:
    inc bx
    bt ax,bx
    jnc next2
    lea dx,msg2
        call WriteCons
next2:
    inc bx
    bt ax,bx
    jnc next3
    lea dx,msg3
        call WriteCons
next3:
    inc bx
    bt ax,bx
    jnc next4
    lea dx,msg4
        call WriteCons
next4:
    inc bx
    bt ax,bx
    jnc next5
    lea dx,msg5
        call WriteCons
next5:
    inc bx
    bt ax,bx
    jnc next6
    lea dx,msg6
        call WriteCons
next6:
    inc bx
    bt ax,bx
    jnc next7
    lea dx,msg7
        call WriteCons
next7:
        ret
program    ends
        end     start
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33399 / 21509 / 8236
Регистрация: 22.10.2011
Сообщений: 36,907
Записей в блоге: 12
09.11.2011, 21:01
Я что-то не пойму, ты где передаешь указатель на имя файла? Он должен лежать не в ES:[DI], а в DS:[DX]. То есть, тебе надо DS настроить на тот же сегмент (там же, в ASSUME), и потом смещение имени занести в DX. Это было первое. Второе: результат (набор флагов) эта функция возвращает не в AX, а в CX (Информация к размышлению ), так что поправь это тоже...
1
 Аватар для Лунный пёс
0 / 0 / 0
Регистрация: 23.12.2009
Сообщений: 12
09.11.2011, 22:35  [ТС]
эх все равно зараза не выходит((( выдает теперь все сообщения подрят.
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
.286
PROGRAM segment
        assume CS:PROGRAM, DS:PROGRAM
        org 80h
 
FName   db ? 
    org 100h
 
start:
        jmp       InitProc
    msg1    db 10,13,'File is read only$'
    msg2    db 10,13,'File is hidden$'
    msg3    db 10,13,'System file$'
    msg4    db 10,13,'This file have attributes$'
    msg5    db 10,13,'Archive file$'
    msg6    db 10,13,'File is normal$'
    msg7    db 10,13,'File is compressed$' 
 
WriteCons  proc 
           push    ax
           mov     ah,09h
           int     21h
           pop     ax
           ret
WriteCons  endp
 
RCLine    proc
          xor bx, bx
          mov si, 80h     ; SI = смещение начала командной строки
          lodsb           ; Получим кол-во символов
          cmp al, 0
          je epic_Fail    ; Пустая ком. строка
          inc si          ; SI указывает на 1ый символ строки
Next_char:
        lodsb           ; Получаем очередной символ
        cmp al, 0Dh     ; Конец строки?
        je GetL         ; Да - на выход... 
        stosb           ; Нет - сохраним символ в переменной FName
        jmp  short Next_char    ; Следующий символ...
GetL:
        xor al,al       ;ASCII 0 в конец
        mov al, 0
    stosb
        mov al, '$'
        stosb
        clc                     ; Сбросим флаг переноса...
        jmp     GoNext
epic_Fail:
        mov bl, 1
GoNext:
        ret                     ; Выходим из процедуры
RCLine endp
 
 
 
InitProc:
    
     mov di, offset FName    ; ES:DI = адрес FName
       
        call RCLine     ; Вызываем процедуру чтения параметров командной строки
    mov al,0
    mov ah,43h
    int 21h      
    mov bx,0
.386
    bt cx,bx
    jnc next1
    lea dx,msg1
        call WriteCons
next1:
    inc bx
    bt cx,bx
    jnc next2
    lea dx,msg2
        call WriteCons
next2:
    inc bx
    bt cx,bx
    jnc next3
    lea dx,msg3
        call WriteCons
next3:
    inc bx
    bt cx,bx
    jnc next4
    lea dx,msg4
        call WriteCons
next4:
    inc bx
    bt cx,bx
    jnc next5
    lea dx,msg5
        call WriteCons
next5:
    inc bx
    bt cx,bx
    jnc next6
    lea dx,msg6
        call WriteCons
next6:
    inc bx
    bt cx,bx
    jnc next7
    lea dx,msg7
        call WriteCons
next7:
        ret
program    ends
        end     start
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33399 / 21509 / 8236
Регистрация: 22.10.2011
Сообщений: 36,907
Записей в блоге: 12
09.11.2011, 23:03
Ты опять не делаешь того, что я написала выше...

Assembler
1
2
3
4
5
        call RCLine     ; Вызываем процедуру чтения параметров командной строки
        mov al,0
        mov ah,43h
    mov dx, offset FName ; вот этой строки у тебя не было...
        int 21h
, соответственно, атрибуты брались не у того файла, имя которого ты передала в ком. строке, а у какого-то левого...

Добавила вышеуказанную строку. Запустила. Работает:
Миниатюры
Получить атрибуты файла, заданного в командной строке  
1
 Аватар для Лунный пёс
0 / 0 / 0
Регистрация: 23.12.2009
Сообщений: 12
09.11.2011, 23:42  [ТС]
ооооо! спасибо, спасибо, алилуяалилуя)))
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16373 / 7685 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
10.11.2011, 06:41
Лунный пёс, а теперь удали все наработки UI и напиши программу полностью самостоятельно, никуда не заглядывая, и тогда будет действительно "алилуяалилуя)))"
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.11.2011, 06:41
Помогаю со студенческими работами здесь

Написать программу, создающую файл - копию заданного файла. Имена файлов задаются в командной строке
1. Написать программу, создающую файл - копию заданного файла. Имена файлов задаются в командной строке. a) копирование по одной литере;...

Не удается в Командной строке задать атрибуты папке с пробелами в имени
Не удается задать атрибуты к папке через командную строку,если папка имеет название с пробелом пример на скриншоте С папками без...

Как в Командной строке получить дату последнего изменения файла или последнего доступа к нему?
суть такова, у меня есть список фаилов с полным адресом типо C:\sad\asds\dich.obj. требуется команда в cmd которая выводит чисто дату. ...

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

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


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это дополнительная запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru