После записи в файл и последующего чтения в 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: Доступ запрещен.
день рождения