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

Чтение данных из файла fasm

17.09.2014, 12:45. Показов 2665. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.Я пытаюсь вывести на экран содержимое ранее созданного мною файла,а в ответ от компьютера получаю крякозябры.Вот код:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
org 100h
mov ax,3d00h
mov dx,path
int 21h
mov ah,3fh
mov bx,ax
mov cx,2
lea dx,[buffer]
int 21h
mov ah,9h
mov dx,buffer
int 21h
mov ah,8h
int 21h
path db 'D:\file.dat$'
buffer db ?
Прошу помощи,нормальной помощи,а не ответов "Поищи в гугле",ибо при поиске в гугле,я нахожу ответы "Поищи в гугле".
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.09.2014, 12:45
Ответы с готовыми решениями:

Чтение файла, чтение названия папки где находится файл, запись данных на PHP
Допустим у нас есть структура с папками типа Large -> Vehicles -> Firetruck_0 В этой папке лежит файл формата .dat Что нужно сделать? ...

Чтение заголовка PCX файла и чтение растровых данных PCX файла
Привет форумчане! Столкнулся с такой проблемой. Нужно считать заголовок PCX файла и растровые данные PCX файла. Код написал. Часть...

Чтение инфы с DVD диска на FASM
Как использовать функцию 42h в bios прерывании 13h на fasm. Мне надо читать DVD диск, нужна адресация CHS. Кроме fasm, ассемблеров других...

7
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16373 / 7685 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
17.09.2014, 16:08
coder228,
а что содержится в файле D:\file.dat ? Это текстовый файл или бинарный?
0
0 / 0 / 0
Регистрация: 29.07.2014
Сообщений: 19
17.09.2014, 18:56  [ТС]
Это текстовый файл.

Добавлено через 6 минут
Кстати,крякозябры всегда одинаковые,вне зависимости от текста в файле.
0
193 / 188 / 18
Регистрация: 06.10.2013
Сообщений: 357
17.09.2014, 20:25
Assembler
1
2
mov ah,3fh
mov bx,ax
Строки местами поменяйте.
0
0 / 0 / 0
Регистрация: 29.07.2014
Сообщений: 19
18.09.2014, 00:37  [ТС]
Перемещение строк не помогает.Интересно то,что в dx всегда крякозябры,независимо от содержимого файла.

Добавлено через 21 секунду
Одинаковые крякозябры*

Добавлено через 11 минут
Ошибочка.Крякозябры в буфере,в который читает 3fh,а не в dx регистре.
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16373 / 7685 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
18.09.2014, 04:47
coder228,
в корне диска С:\ у меня есть файл file.dat, содержащий "abcdef" длиной 6 байт
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
format binary
org 100h
start:  push cs
        pop ds
        mov ax,3
        int 10h
        mov ax,3D00h
        mov dx,path
        int 21h
        mov bx,ax
        mov ah,3Fh
        mov cx,6
        mov dx,buffer
        int 21h
        mov ah,9
        int 21h
        mov ah,0
        int 16h
        ret
path db 'c:\file.dat',0
buffer db 10 dup ('$')
1
0 / 0 / 0
Регистрация: 29.07.2014
Сообщений: 19
18.09.2014, 07:48  [ТС]
Огромное спасибо,проблема оказалась в буфере.Если создать его так
Assembler
1
buffer db 10 dup ('$')
то всё отлично работает.Всем спасибо за внимание,тема закрыта.
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16373 / 7685 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
18.09.2014, 09:36
coder228,
у тебе были следующие проблемы
  1. название пути и имени файла должно заканчиваться нулем
    path db 'c:\file.dat',0 у тебя path db 'D:\file.dat$' название файла заканчивалось символом доллара
  2. после открытия или создания файла в АХ система помещает файловый номер (под отладчиком он равен 0005)
    Assembler
    1
    2
    3
    4
    5
    
            mov ax,3D00h
            mov dx,path
            int 21h
            mov bx,ax <-- bx=0005h
            mov ah,3Fh
    и Not at all! подсказал что у тебя ошибка
    Assembler
    1
    2
    3
    4
    5
    
    mov ax,3d00h
    mov dx,path
    int 21h
    mov ah,3fh
    mov bx,ax <-- bx=3F05h то есть файловый номер совсем другого файла, не file.dat
  3. при выводе на экран функцией 9 прерывания 21h строка должна оканчиваться знаком "доллара" а так как в буфере знак доллара не найден, то программа и вывалила на экран всё, пока случайно этот знак не встретила
а ты говоришь
проблема оказалась в буфере
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.09.2014, 09:36
Помогаю со студенческими работами здесь

Преобразование текстового файла в двоичный и чтение исходных данных из двоичного файла.
#include&lt;iostream&gt; #include&lt;fstream&gt; #include&lt;locale.h&gt; #include&lt;iomanip&gt; #include &lt;cstdlib&gt; using namespace std; struct...

Чтение из файла определённого места и сортировка данных исходя из этих данных
Есть некий текстовый документ, содержащий информацию о посещении сайта в формате: Например 12.5.76.200 04:23 Mon Цель:...

Создание текстового файла и чтение данных из файла
Здравствуйте. Дана задача : Создать файл, содержащий сведения о сдаче студентами первого курса сессии. Структура записи – Индекс группы,...

Int 21h ah=0Ah: установить ограничение на чтение строки из консоли
Здравствуйте. Компилятор fasm, формат mz. Проблема такая, считывание строки, 21 прерывание, в ah 0Ah. Считывается строка. В отладчике вижу...

Чтение текстового файла. Парсинг его данных. Создание исключений для данных. Запись свойств объектов в файл
Проблема такая. Есть файл data.txt. В нем например какие-то данные. Landon Donovan, 150, A Hulk Hogan , 100, M Duke Nukem, 50,...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
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