Ошибка генерации ReadFromFile: «Ошибка 5: доступ запрещен». - PullRequest
0 голосов
/ 19 апреля 2020

После записи в файл и последующего чтения в buffer, ReadFromFile генерирует ошибку «Ошибка 5: доступ запрещен».

ie. WriteString просто печатает последнее, что было в буфере, вместо содержимого файла

Это похоже на проблему с ОС, поскольку функции ReadFromFile были даны соответствующие аргументы. Я что-то пропустил?

; AddTwo.asm - adds two 32-bit integers.
; Chapter 3 example

include Irvine32.inc
Include macros.inc

.386
.model flat,stdcall
.stack 4096
ExitProcess proto,dwExitCode:dword

BUFFER_SIZE = 50

.data

filename BYTE 80 DUP(?)
fileHandle HANDLE ?
buffer BYTE BUFFER_SIZE DUP(?)

.code
main proc



; create file to write to

mWrite "Enter filename: "
mov edx, OFFSET filename
mov ecx, SIZEOF filename
call ReadString

mov edx, OFFSET filename
call CreateOutputFile
mov fileHandle, eax



; write to output file

mov edx, OFFSET buffer
mov ecx, SIZEOF buffer
mWrite "Enter student identification number: "
call ReadString
mov ebx, eax
add ebx, 2

mov eax, fileHandle
mov edx, OFFSET buffer
mov ecx, ebx
call WriteToFile



mov edx, OFFSET buffer
mov ecx, SIZEOF buffer
mWrite "Enter student first name and lastname: "
call ReadString
mov ebx, eax
add ebx, 2

mov eax, fileHandle
mov edx, OFFSET buffer
mov ecx, ebx
call WriteToFile



mov edx, OFFSET buffer
mov ecx, SIZEOF buffer
mWrite "Enter student date of birth: "
call ReadString
mov ebx, eax
add ebx, 2

mov eax, fileHandle
mov edx, OFFSET buffer
mov ecx, ebx
call WriteToFile



; read form file to buffer

mov eax, fileHandle
mov edx, OFFSET buffer
mov ecx, SIZEOF buffer
call ReadFromFile
call WriteWindowsMsg


; write buffer to console

mov edx, OFFSET buffer
call WriteString

    invoke ExitProcess,0
main endp
end main

Вот пример консоли после запуска ...

Введите имя файла: имя (введите ключ)

Введите идентификационный номер студента: 1234 (введите ключ)

Введите имя и фамилию студента: Уильям (введите ключ)

Введите дату рождения учащегося: день рождения (введите ключ)

Ошибка 5: Доступ запрещен.

день рождения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...