Форум программистов, компьютерный форум, киберфорум
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
1 / 1 / 0
Регистрация: 28.01.2018
Сообщений: 58
TASM

Выводятся данные из внешнего файла с кракозябрами

06.05.2021, 04:02. Показов 678. Ответов 1

Студворк — интернет-сервис помощи студентам
Здравствуйте.
Обширный код получился, но главное в нем проблема - это процедура, начинающаяся в строке 74: в конце мы вызываем другую(OnWrite) для вывода данных из внешнего файла(а в заключении после этого будет вынесена надпись об успехе выполнения в самом низу). Но на экране оказывается все содержимое внешнего файла с кракозябрами и выражением (It is Okay), подтверждающим успех задуманной функции. Где могла быть допущена ошибка в выводе и как нужна переписать вывод именно для внешнего файла (ибо мой с заранее заготовленными строками справляется отлично)?

Скриншот ошибки:


Сам код:
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
;??? ????????? ????????? ???????? ?? ???? ? ??????? ??????? ? ??????????? ?????????? ???????????? ??????
;
 
model small     ;Memory for EXE
.DATA   
    FileName db 'Open.txt',0h
    OnStr    db 10,13, "It is Okay $"
    OffStr   db 10,13, "Fail $"
.stack  100h    ;Stack segment 256 bytes
.CODE
 
Start:
    
    mov ax,@data    ; ???????? ????? ???????? ?????? ? ??????? ??,??????? ???????? ???????????????
                    ;(PLACES the address of the data segment in the registry AX, which is the identifier )
    mov ds,ax       ; ???????? ?????? (ax in ds)
    mov dx, offset FileName ; ????????? ???? ? ??? ????? ? DS:DX
                            ;(Place the path and file name in DS:DX.)
    
                        ;?????????? ?????????
    CALL OpenFile       ;????? ??????? ??????? ????????? ?????????,??????? ?? ????????
                        ;I call the real procedure, which is outside the limits 
                        ;of the parameters - the ending of the program
   
    jc Error            ; ??????? ??????? ? ?????? ??????(jump in case of error)
                        ; ?? ???? ???? ??????? ???? ?? ???? ????????? ? ???? ???????? (CF) = 1
                        ;(that is, if the function above has not been performed and carrier flag = 1)
;Read
    mov bx,ax           ;???????? ?????????? ax ? bx, ??? ?????? ???????? ???????????????
                        ;Places the content of ax in bx, which is the Identification
   
    CALL ReadFile                    
    
    jc Error
    
    CALL CloseFile     
    
    mov dx,OFFSET OnStr 
    jmp Write
  
    
    Error:
    mov dx,OFFSET OffStr
    ;????? ??????? ??????? Write ? ?????? ??? ????? ?????? ??????
    ;Next follows the Write function and so it writes the error line
    
    Write:
    CALL OnWrite
    
    
    Exit:
    mov ah,04Ch     ;Well be closing down the program
    int 21h         ;close the program
    
    
    OnWrite    PROC   
        mov ah,09h      ;??????? ?????? ????????? ????? ??????? 
                        ;DOS (output status bar of our DOS function)     
        int 21h
        ret             ;??? ??????? ?????? ???? ? ????? ????????? ? ??? ?????? 
                        ;????????? ?????? ?? ??????, ??? ????????? ???? ???????
                        ;this command must be at the end of the procedure and it will return
                        ;the command indication to the address where the procedure was called
    OnWrite    ENDP
    
    OpenFile    PROC   
         ;Open
          mov ah,3dh      ; ??????? ???????? ????? (file opening function)
          mov al,0            ; ????? ??????? - ?????? (access mode - read)
          int 21h             ; ????????? ??????? ???????? ?????(Perform file opening function)
          ret
    OpenFile    ENDP
    
    ReadFile    PROC   
          
          mov ah,3fh      ; функция чтения файла
          mov cx,0FFFFh   ; сколько читать
          mov dx,OFFSET buffer    ; буфер
          int 21h         ; выполнить  
          CALL OnWrite
          ret
    ReadFile    ENDP
    
    CloseFile    PROC   
          mov ah,3eh
          int 21h            ; ????????? ??????? ???????? ?????(Perform file opening function)
          ret
    CloseFile    ENDP
 
buffer  label   byte 
 
End Start
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.05.2021, 04:02
Ответы с готовыми решениями:

Сообщения об ошибках выводятся кракозябрами
Добрый день, по прежнему сообщения об ошибке выводятся кракозябрами, пробовал как написано на форуме, скачиваю jom.exe кидаю куда нужно,...

При добавлении текста в MS word через PHPword с внешнего файла, выводятся некорректные символы
Здравствуйте, возникла проблема , с помощью библиотеки PHPoffice/PHPword добавляю в word документ текст из блокнота , при открытии...

Не выводятся данные из текстового файла
Беру данные из блокнота, но при компиляции эти данные не выводится. В чём ошибка не могу понять.ПОдсажите пожалуйста. ...

1
780 / 412 / 75
Регистрация: 29.03.2013
Сообщений: 854
06.05.2021, 06:11
Icaab, внимательно ознакомьтесь с описанием Int 21/AH=3Fh и Int 21/AH=09h.
Я уверен, что когда вы воспользуетесь возвращаемым значением первой функции, для того, чтобы правильно завершить строку для второй, то у вас всё получится (если опустить тот факт, что при таком "выделении" места под буфер процесс ввода может закончится катастрофой).
ПМСМ, весьма странно использовать Int 21/AH=09h для вывода строки, если уже известна длина данных в буфере. Удобнее было бы воспользоваться функцией Int 21/AH=40h.

Добавлено через 7 минут
P.S.: Буфер определён в сегменте кода, настройки DS на сегмент кода (при записи в буфер, равно как и считывании из него) в программе нет, как она сразу не крашит систему - не понятно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.05.2021, 06:11
Помогаю со студенческими работами здесь

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

Не считываются и не выводятся данные из файла
Здравствуйте.В программе,выполняя действия 1 - 1 - 1(Каталог - Показать ассортимент товара - Всё),с внешнего файла(Product Display) должны...

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

Определить название устройства (файла) на который выводятся данные.
Доброе время суток уважаемые! Есть следующая задача, которую нужно реализовать на c: Пользователи подключаются к компьютеру используя...

Данные вводятся из файла на диске и выводятся в файл и на экран
Данные вводятся из файла на диске и выводятся в файл и на экран. Имена входного и выход-ного файлов задаются в командной строке. Как это...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru