Форум программистов, компьютерный форум, киберфорум
Assembler: DOS/Real Mode/16-bits
Войти
Регистрация
Восстановить пароль
Другие темы раздела
Assembler Скопировать уцелевшие сектора диска https://www.cyberforum.ru/ assembler-dos/ thread1864294.html
хочу скопировать уцелевшие сектора. примерный план действий org 100h loopa: mov dl, mov si, mov ah, 42h; Расширенное чтение
Assembler Поиск слова на экране
Нужно написать программу, которая найдет на экране "запретное" слово и заменит его выбранными знаками. Есть такая программка, которая отображает текст в ASCIZ, возможно на её основе можно сделать...
Вывести начальные кластеры всех файлов указанного каталога Assembler
Помогите, не могу, понять сути задания, и, собственно, как его делать. Задание: Вывести начальные кластеры всех файлов указанного каталога.
Assembler Заменить расширения всех файлов в текущей директории на расширение “.cul” Задание: Заменить расширения все файлов в текущей директории на расширение “.cul”. Если переименовываемый файл уже существует, то оставить его без изменения. Директории игнорировать! Помогите... https://www.cyberforum.ru/ assembler-dos/ thread1862679.html
Assembler Вывод на экран. Перехват прерывания int 05h https://www.cyberforum.ru/ assembler-dos/ thread1859730.html
Очистить экран. Вывести несколько строк произвольного текста. Пе- рехватить прерывание экрана (Int 5h). Первый вызов этого прерывания располагает строки вертикально, следующий «нормально» и т.д.
Assembler Переключение монитора компьютера в "спящий режим"
Здравствуйте. Помогите написать, или хотя бы начать писать программу. Задание: переключить монитор компьютера в спящий режим через заданное время от 0 до 9 секунд и до нажатия какой-либо клавиши на...
Assembler Организация обмена данными через LPT-порт
разработайте программу определения адреса LPT - порта и вывода информации через LPT - порт, При этом светодиоды стенда должны отображать: г) автоувеличение кода от 80h до FFh c задержкой 0,5 сек;...
Assembler Графический режим в ассемблере. Создание эллипсоидной спирали Доброго времени суток:victory:! Прошу помощи:help:, мне необходимо изменить спираль как на скрине (спираль на синем фоне), на эллипсоидную спираль что на фотографии. Как это сделать я слабо... https://www.cyberforum.ru/ assembler-dos/ thread1857659.html
Assembler Формула треугольной спирали https://www.cyberforum.ru/ assembler-dos/ thread1857146.html
Есть формула спирали Архимедова (на картинке) ;------Вычисляем формулу x=round(fi*K*cos(fi))---------------------- finit ;Инициализация сопроцессора. l1: fld fi ;Загрузить угол fi в стек...
Assembler Добавить стрелочки x,y Всем привет. Добавьте пожалуйста стрелочки x,y ;Программа вычисления и построения графика функции вида ;Y=-3X^4+9X^3-5X^2+1X+2 TITLE POLINOM .Model SMALL .stack 256 ;сегмент стека 256 байт... https://www.cyberforum.ru/ assembler-dos/ thread1856296.html
Эксперт Hardware
5160 / 1822 / 341
Регистрация: 29.07.2014
Сообщений: 2,781
Записей в блоге: 5
06.12.2016, 18:18 0

Вывести размер каждого файла в каталоге

06.12.2016, 18:18. Просмотров 1445. Ответов 3
Метки (Все метки)

Лучший ответ Сообщение было отмечено ФедосеевПавел как решение

Решение

Цитата Сообщение от ФедосеевПавел Посмотреть сообщение
Действительно, если есть в DTA - зачем лишние манипуляции.
..да и с DTA тут волокиты хватает.
Например ниже, чтоб выстроить все данные в табличку, пришлось копировать имя/размер каждого файла в отдельное поле, и уже от туда выводить досовской строкой:
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
; fasm-code
; выводит имя/размер файла, из текущей папки
;---------------------------------------------
org 100h
jmp start
 
mes0     db   13,10,'File name       Size'
         db   13,10,'--------------------------$'
fName    db   13,10            ;
         db   16 dup(' ')      ; поле под имя,
fSize    db   08 dup('$')      ;    ..и под размер
fMask    db   '*.*',0          ; маска для поиска файлов
newDTA   db   45 dup(0)        ; поле под DTA
 
start:  mov   ah,9             ; выводим шапку
        mov   dx,mes0
        int   21h
 
        mov   ah,1Ah           ; создать DTA
        mov   dx,newDTA
        int   21h
 
        mov   ah,4Eh           ; искать,
        mov   cx,20h           ;   ..только файлы
        mov   dx,fMask
        int   21h
 
@find:  call  printName        ; выводим данные на экран!
        mov   ah,4Fh           ; искать сл.файл
        mov   dx,newDTA
        int   21h
        jnc   @find            ; до флага(CF)
 
@exit:  xor   ax,ax            ; выход в DOS!
        int   16h
        int   20h
 
;нннннннннннн ПРОЦЕДУРЫ нннннннннннннннннннннннннннннннннннннннннн
printName:         ; процедура вывода данных на экран!!!
        pusha                  ;
        mov   si,newDTA+30     ; источник с именем
        mov   di,fName+2       ; приёмник
        push  di               ;
@01:    lodsb                  ;
        or    al,al            ;
        jz    @02              ;
        stosb                  ; скопировать имя в поле!
        jmp   @01              ;
 
@02:    mov   si,newDTA+26     ; источник с размером файла
        mov   di,fSize         ;
        push  di               ;
        lodsd                  ; берём размер в ЕАХ (4 байта)
        call  hex2asc          ; скопировать размер в поле!
 
        mov   ah,9             ; вывести поле с данными на экран!
        mov   dx,fName         ;
        int   21h              ;
 
        mov   al,'$'           ; очистить поле размера
        mov   cx,8             ;
        pop   di               ;
        rep   stosb            ;
        mov   al,' '           ; очистить поле имени
        mov   cx,16            ;
        pop   di               ;
        rep   stosb            ;
        xor   al,al            ; очистить поле с именем в DTA
        mov   cx,15            ;
        mov   di,newDTA+30     ;
        rep   stosb            ;
        popa                   ;
ret                            ;
;--------------------------------------------------------------
hex2asc:           ; fn.перевода числа из EAX в символы!!!
        mov   ebx,10           ; система счисления
        xor   ecx,ecx          ;
isDiv:  xor   edx,edx          ;
        div   ebx              ;
        push  edx              ;
        inc   cx               ;
        or    eax,eax          ;
        jnz   isDiv            ;
isOut:  pop   eax              ;
        add   al,30h           ; перевести в символы
        stosb                  ; запомнить в поле вывода(ES:DI)!
        loop  isOut            ;
        xor   ecx,ecx          ;
ret                            ;


Вернуться к обсуждению:
Вывести размер каждого файла в каталоге
1
Изображения
 
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.12.2016, 18:18
Готовые ответы и решения:

Как в начало каждой строки каждого текстового файла в текущем каталоге вставить имя этого же файла?
Здравствуйте, подскажите пожалуйста как в текущем каталоге, в начало каждой строки каждого...

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

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

Вывести имя самого большого файла в каталоге
нужно переделать программу так, чтобы вместо самого старого файла в папке My documents выводилось...

3
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.