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

Создание программы для перемещения и просмотра содержимого каталогов на диске

27.05.2018, 18:49. Показов 1663. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, ребята, не могли бы вы помочь в выполнении задания?
Задание такое: создать программу для просмотра и перемещения каталогов на диске.
Так так ассемблер, не моя сильная сторона, нашел два готовых кода. Ну как готоых, первый - для просмотра каталогов, он запускается, но выводит то, что на скрине. а второй вообще не запускается в emu8086
Может кто-нибудь помочь исправить (второй запустить) один из этих кодов?
Код №1:
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
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
model tiny
.code
.startup
; ---------------------------------------------
        lea dx, DTA     ;установление адрес смещения для
                            ; локального буфера
 
  mov ah, 1ah
        int 21h
 
        call Find_First ;поиск первого файла
        jc exit1          ; если нет файла перейти к exit1
        call Out_Info   ; вывода информации о файле
 
cukl: call Find_Next  ; поиск следующего файла
  jc exit2                 ; если нет файла перейти к exit2
        call Out_Info    ; вывода информации о файле
        loop cukl         ; перейти к cukl
 
exit1: lea dx, info     ; вывода данных info
        mov ah, 09h
        int 21h
 
exit2: mov ah, 4ch    ; завершение программы
        int 21h
; ------------------------------------------------- ---------------
Find_First proc          ; поиск первого файла
        lea dx, Path      ; загрузка в dx адрес строки Path
        mov cx, 00       ; установление атрибутов
        mov ah, 4eh     ; вызов функции для поиска
        int 21h
        ret
Find_First endp
 
Find_Next proc          ; поиск следующего файла
        lea dx, Path      ; загрузка в dx адрес строки Path
        mov cx, 00       ; установление атрибутов
        mov ah, 4fh      ; вызов функции для поиска
        int 21h
        ret
Find_Next endp
 
Out_Info proc            ; вывода информации о файле
; ------------------------------------------------- -----------------
                                ; Вывод имени файла
  lea dx, strk              ; загрузка в dx адрес сроки strk
        mov ah, 9h         ; для перевода курсора на
        int 21h               ; следующую строку
 
        mov cx, 0dh       ; запись в cx 0dh - килкисть байтов,
                                ; Какие будет выводить ф-я 40h
  mov bx, 1eh             ; имени
                                ; Имени файла относительно DTA
  lea dx, DTA + bx       ; загрузка в dx адрес смещение
                                ; Имени файла
  mov bx, 1                ; запись в bx = 1 см. использования
                                ; Функции 40h
  mov ah, 40h             ; вызов функции 40h
        int 21h
; ------------------------------------------------- ----------------
        lea dx, sozdan    ; вывод на экран слова sozdan
        mov ah, 09h
        int 21h
 
        mov cx, 2          ; запись в cx 0dh - килкисть байтов,
        mov bx, 18h       ; загрузка в bx адрес смещение
                                ; Для определения даты
        lea bx, DTA + bx ; загрузка в bx адрес смещения даты
        mov ax, [bx]      ; запись в ax значения, находится, во адресу в bx
        mov di, ax         ; запись в di значение ax (в di будем
                               ; Хранить два байта, хранящие
                               ; данные о дате
                                ; Vuvid chusla
        mov si, 10; запись в si значение 10
        and ax, 001fh; лог. операция сложения числа в ax
                            , С маской 001fh результат в ax
        mov dx, 0; запись в dx значение 0
        div si; AX / 10 результат в AX, остаток в DX
        add dx, '0'; добавления к остатку 30h
        lea bx, chuslo; загрузка в bx адрес смещение
                        ; Сроки chuslo
        mov [bx + 1], dl, запись в строку с адресом смещение
                        ; [Bx + 1] значения, регистра dl
 
        add ax, '0'; добавление к ax 30h
        lea bx, chuslo; загрузка в bx адрес смещение
                        ; Сроки chuslo
        mov [bx], al; запись в строку с адресом смещение
                            ; [Bx] значение, регистра al
        lea dx, chuslo; загрузка в dx адрес смещение
                                ; сроки chuslo
  mov ah, 09h; вызов ф-й вывода на экран сроки
                        ; Сроки chuslo
        int 21h; вывод на экран сроки chuslo
 
  ; Определение года происходит аналогично определению числа, только
  ; Нужно добавить 1980, так как указано в теоретических сведениях
  ; И кроме того нужно делить год на 10 3 раза, потому что он состоит
  ; С четырех цифр (для числа делить 1 раз, оно состав. Из двух цифр),
  ; А все остальное по тому же принципу, что и для определения числа
 
  mov ax, di
        and ax, 0fe00h
        shr ax, 9; Vuvod roky
        add ax, 1980
 
        mov bp 0
        mov di, ax
        lea bx, rik + 4
 
cukl2: mov ax, di
        mov dx, 0
        div si
        add dx, '0'
        mov di, ax
 
        mov [bx], dl
        sub bx, 1
 
        mov cx, 4
        add bp, 1
        sub cx, bp
        loop cukl2
 
        mov dx, di
        add dx, '0'
        mov [bx], dl
 
        lea dx, rik
        mov ah, 9h
        int 21h
 
        lea dx, OB
        mov ah, 09h
        int 21h
        ret
Out_Info endp
; ------------------------------------------------- ------------------------
ret
 
DTA db 50 dup (?), '$'; Локальный буфер информации о файле
Path db "Z:\*.*", 0; путь и маска поиска файлов
strk db 0ah, 0dh, '$'; перев. курсора в нач. следующей строки
rik db 5 dup (?), "roky $ '; строка, в которую записывается год
 
chuslo db '$'; строка, в которую записывается число
 
Sozdan db 'sozdan: $'; строка в памяти со словом sozdan:
OB db 'y $'; строка в памяти со словом y
chas db ':: $'; строка, в которую записывается время
 
end
Код №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
CODESG SEGMENT PARA 'CODE'
  ASSUME CS:CODESG,DS:CODESG,SS:CODESG,ES:CODESG
  ORG 100H
BEGIN:  JMP MAIN
  A     DB '1 - Создать каталог',10,13,'2 - Удалить каталог',10,13,'3 - Изменить каталог',10,13,'$'
 NUMB  DB,?
 
  dname db "d:\my_diг",0
  PATH     DB   "d:\new",0
 
MAIN  PROC  NEAR
 
  MOV AH,03H
  MOV BH,AL
  INT 10H
 
  MOV AH,09
  LEA DX,A
 ; MOV AX, OFFSET A
  INT 21H
  MOV AH,01
  INT 21H
  MOV BH,AL
  
    cmp ax,1;сравниваем ах с 1
    je inc_a;если =
    cmp ax,2;сравниваем ах с 2
    je dec_a;если =     
    cmp ax,3;сравниваем ах с 3
    je three_a;если =   
          ;во всех остальных случаях        
    jmp done  ;уходим из проверок
 
 
    inc_a:
        mov ah,39h
        mov dx,offset dname
        int 21h
        jmp done ; теперь прыгаем на завершение
        
     dec_a:             ; сюда попадаем если ax=2
            mov ah,3ah
        mov dx,offset dname
        int 21h
        jmp done ; теперь прыгаем на завершение
 
    three_a:
        MOV  AH,3BH        ;номер функции
            LEA  DX,PATH       ;DS:DX должны указывать на путь
        INT  21H           ;устанавливаем текущий каталог
        
 
done:              ; все сделали. в ax лежит результат 
 
  MOV AH,02H
  INT 10H
 
    mov ah,01      ; ждем
    int 21h    ; нажатия клавиши
  
 
  RET
MAIN  ENDP
CODESG  ENDS
  END BEGIN
Спасибо всем заранее!
Миниатюры
Создание программы для перемещения и просмотра содержимого каталогов на диске  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.05.2018, 18:49
Ответы с готовыми решениями:

Программа для перемещения и просмотра содержимого каталогов на диске
Добрый день. Задание следующее: создать программу для перемещения и просмотра содержимого каталогов на диске. Как просматривать файлы я...

Перемещение и просмотр содержимого каталогов на диске
Написать на языке ассемблера программу для перемещения и просмотра содержимого каталогов на диске

Исходник программы для просмотра содержимого таблицы Oracle 11g
Поделитесь если не жалко =)

3
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8655 / 4490 / 1669
Регистрация: 01.02.2015
Сообщений: 13,898
Записей в блоге: 12
27.05.2018, 19:29
Если не ошибаюсь, на emu8086 полностью отсутствуют функции int 21h, работающие с диском (удаление, перемещение, список файлов).
Проверьте по справке перечень поддерживаемых прерываний и убедитесь самостоятельно.
0
0 / 0 / 0
Регистрация: 27.05.2018
Сообщений: 2
27.05.2018, 20:43  [ТС]
Цитата Сообщение от ФедосеевПавел Посмотреть сообщение
Если не ошибаюсь, на emu8086 полностью отсутствуют функции int 21h, работающие с диском (удаление, перемещение, список файлов).
Проверьте по справке перечень поддерживаемых прерываний и убедитесь самостоятельно.
Извините, Вы не могли бы подсказать в какой среде эти коды работать будут? А то знаю только об ему..
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8655 / 4490 / 1669
Регистрация: 01.02.2015
Сообщений: 13,898
Записей в блоге: 12
27.05.2018, 20:50
DOSBox + tasm
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.05.2018, 20:50
Помогаю со студенческими работами здесь

Поиск пустых каталогов на диске
Здравствуйте, получил вот такое задание. Подскажите с чего начать и какую литературу почитать. В ассемблере знаю азы. Писали только на TASM...

Просмотр содержимого каталогов, перемещение каталогов
И снова я,но может кто-нибудь, последний раз выручить меня с ассемблером ?:cry: Осталось сделать последнее задание. На форуме уже видела...

Программа для просмотра содержимого ОЗУ
подскажите пожалуйста прогу для просмотра содержимого оперативы

Утилита для просмотра содержимого полей документа
Доброго всем дня. Для своих нужд набросал утилитку позволяющую посмотреть значения полей в документе. Решил поделиться - может кому...

Компонент для просмотра содержимого папки со всеми ярлыками
Доброго времени суток. У меня такой вопрос, есть ли какойни будь копонент для Делфи, для просмотра содержимого папки, со всеми ярлыками?


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru