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

Функция чтения файла

08.11.2013, 10:24. Показов 1953. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здраствуйте форумчане.Я только начинаю изучать ассемблер.Для начала взял книгу Калашникова. Проблема в том что я начал использовать фазм вместо мазма или тазма.Конкретно не могу разобраться с функцией чтения файла - не могу определить размер файла чтобы загрузить его в регистр cx. У меня в примере используеться. Finish
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.11.2013, 10:24
Ответы с готовыми решениями:

Функция чтения из файла
Здравствуйте, пытаюсь написать функцию, которая бы выводила информацию из файла, без функции код выглядит так: ifstream infileout; ...

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

Функция чтения из файла на WinAPI
Пытаюсь создать функцию на WinAPI для чтения данных с файла. Ниже приведен мой пример, но он не работает. И к тому же у моей функции есть...

11
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16373 / 7685 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
08.11.2013, 10:32
VitaminDB,
показывай свой пример
0
2 / 2 / 0
Регистрация: 08.11.2013
Сообщений: 11
08.11.2013, 10:46  [ТС]
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
org 100h
 
Begin:
        mov ax,3    ;Это мы рассмотрим...
        int 10h     ;...позже
 
    mov dx,offset File_name
    call Open_file          ;Открываем файл
    jc Error_file           ;Ошибка? 
; ------------- Открыли файл ----------------
 
    mov bx,ax
    mov ah,3Fh              ;Функция чтения файла
    mov cx,offset Finish-100h                                                         [B] Вот на этой строчке [/B]
    mov dx,offset Begin     ;! Адрес, куда будут читаться данные
    int 21h
; ------------- Прочитали файл ----------------
 
    call Close_file
 
; ------------ Выводим сообщение --------------
    mov ah,9
    mov dx,offset Mess_ok
    int 21h
    ret
 
; ---------- Не смогли найти / открыть файл -----------------
Error_file:
    mov ah,2
    mov dl,7
    int 21h
    ret
 
 
 
; === Процедуры (подпрограммы) ===
 
; --- Открытие файла ---
Open_file proc
    cmp Handle,0FFFFh
    jne Quit_open
    mov ax,3D00h
    int 21h
    mov Handle,ax
    ret
Quit_open:
    stc
    ret
Handle dw 0FFFFh
Open_file endp
 
; --- Закрытие файла ---
Close_file proc
    mov ah,3Eh
    mov bx,Handle
    int 21h
    ret
Close_file endp
 
 
 
; === Данные ===
 
File_name db 'prog09.com',0
Mess_ok db 'All OK!', 0Ah, 0Dh, '$'
 
Finish equ $       ;Метка конца программы
Добавлено через 6 минут
Только сейчас до меня до шло что Finish equ $. Это и есть метка. Вот только почему фазм ее не видит
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16373 / 7685 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
08.11.2013, 10:56
VitaminDB,
Assembler
1
2
        mov ax,3    ;Это мы рассмотрим...
        int 10h     ;...позже
это очистка экрана и установка текстового режима ширина экрана = строка в 80 символов, высота экрана = 25 строк и называй пожалуйста FASM, MASM, TASM и т.д.

Добавлено через 4 минуты
ты пытаешься в случае ошибки установить флаг переноса командой stc - не нужно этого делать, DOS в случае ошибки файловой операции сам установит флаг переноса
0
2 / 2 / 0
Регистрация: 08.11.2013
Сообщений: 11
08.11.2013, 11:00  [ТС]
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
org 100h
 
Begin:
        mov ax,3        ;Ýòî ìû ðàññìîòðèì...
        int 10h         ;...ïîçæå
 
        mov dx,File_name
        call Open_file          ;Îòêðûâàåì ôàéë
        jc Error_file           ;Îøèáêà? 
; ------------- Îòêðûëè ôàéë ----------------
 
        mov bx,ax
        mov ah,3Fh              ;Ôóíêöèÿ ÷òåíèÿ ôàéëà
        mov cx,Finish-100h
        mov dx,Begin     ;! Àäðåñ, êóäà áóäóò ÷èòàòüñÿ äàííûå
        int 21h
; ------------- Ïðî÷èòàëè ôàéë ----------------
 
        call Close_file
 
; ------------ Âûâîäèì ñîîáùåíèå --------------
        mov ah,9
        mov dx,Mess_ok
        int 21h
        ret
 
; ---------- Íå ñìîãëè íàéòè / îòêðûòü ôàéë -----------------
Error_file:
        mov ah,2
        mov dl,7
        int 21h
                ret
 
 
 
; === Ïðîöåäóðû (ïîäïðîãðàììû) ===
 
; --- Îòêðûòèå ôàéëà ---
Open_file:
        cmp [Handle],0FFFFh
        jne Quit_open
        mov ax,3D00h
        int 21h
        mov [Handle],ax
        ret
Quit_open:
        stc
        ret
Handle dw 0FFFFh
 
; --- Çàêðûòèå ôàéëà ---
Close_file:
        mov ah,3Eh
        mov bx,[Handle]
        int 21h
        ret
 
 
 
; === Äàííûå ===
 
File_name db 'prog09.com',0
Mess_ok db 'All OK!', 0Ah, 0Dh, '$'
Finish equ $       ;Ìåòêà êîíöà ïðîãðàììû
Написал вот так. FASM ругается на 'Undefined symbol Finish'
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16373 / 7685 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
08.11.2013, 11:06
Цитата Сообщение от VitaminDB Посмотреть сообщение
Конкретно не могу разобраться с функцией чтения файла - не могу определить размер файла чтобы загрузить его в регистр cx
Для получения длины файла помести в АХ 4202h, в BX должен находится файловый номер, который выдала функция создания или открытия файла и вызови int 21h. При выходе, если ошибки не было, то в регистре DX находится старшее слово длины файла, в регистре AX младшее слово длины файла.

Добавлено через 2 минуты
15 строка mov dx,Finish
64 строка Finish:
0
2 / 2 / 0
Регистрация: 08.11.2013
Сообщений: 11
08.11.2013, 11:14  [ТС]
Спасибо скомпилировалась. Правда в 15 строке я оставил Begin так как код должен загружать сам себя с этого адреса поэтому Finish - 100h что бы код начал с метки Begin
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16373 / 7685 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
08.11.2013, 11:20
VitaminDB,
обычно буфер для чтения оставляют в конце программы, а у тебя с "mov dx,Finish" содержимое файла запишется поверх твоей программы, хз для чего, поэтому закрыть файл ты не сможешь, программа повиснет в памяти, понятно что Windows ее прибьет, а в DOS система бы повисла намертво
0
2 / 2 / 0
Регистрация: 08.11.2013
Сообщений: 11
08.11.2013, 11:25  [ТС]
нет я проверил в Dos работает и выдается сообщение All Ok. А сделано этот пример в учебном плане так как показывет возможности ассемблера.Я начал учить его 3 дня назад.
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16373 / 7685 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
08.11.2013, 11:31
VitaminDB,
тебе просто повезло, что файл prog09.com программа считала не до конца, при большей длине файла произойдет именно то, о чем я предупредил. Привыкай сразу писать программы нормально...
0
2 / 2 / 0
Регистрация: 08.11.2013
Сообщений: 11
08.11.2013, 11:42  [ТС]
Спасибо за советы и помощь. Пример написан не мной а автором книги.Тему можно удалять в мусор да бы не засорять форум
0
11 / 11 / 0
Регистрация: 31.03.2009
Сообщений: 69
09.11.2013, 09:52
Цитата Сообщение от Mikl___ Посмотреть сообщение
VitaminDB,
обычно буфер для чтения оставляют в конце программы, а у тебя с "mov dx,Finish" содержимое файла запишется поверх твоей программы, хз для чего, поэтому закрыть файл ты не сможешь, программа повиснет в памяти, понятно что Windows ее прибьет, а в DOS система бы повисла намертво
Не, прога пишет в стек и конечным адресом буфера является Begin, а не начальным Finish. Это так по-паскакалевски.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.11.2013, 09:52
Помогаю со студенческими работами здесь

Отдельная функция чтения из файла C++
Здравствуйте! Помогите пожалуйста! Хочу функцию чтения из файла сделать отдельно от main. int read_g_from_file(int **Graph, bool...

Функция чтения массива из файла
Честно пыталась искать что-то подобное, не нашла. В общем, задача такова: прочитать из файла массив, сделать что-нибудь с ним и записать...

Функция для чтения из файла в матрицу
#include <iostream> #include <vector> #include <fstream> using namespace std; void setvector(vector<vector<int> > matrix,...

Функция чтения xml файла с внешнего сайта
Написал скрипт который вытаскивает счётчик фоловеров в твиттере: $twitter='user_name'; $file =...

Функция чтения из файла двумерного динамического массива
Добрый день! Необходимо написать функция чтения двумерного массива из файла. Компилятор выдает ошибку: "переопределение...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru