Итак, я сейчас работаю над заданием для класса. Мне не нужна работа, сделанная за меня, хотя это всегда полезно, если к этому есть объяснение. Я действительно просто хочу толчок в правильном направлении. Мое задание:
Напишите программу на ассемблере, решающую следующую задачу. В компании Albatross работают четыре продавца (от 1 до 4), которые продают пять различных товаров (от 1 до 5). Раз в день каждый продавец отчитывается о продажах каждого товара. Эти отчеты со временем объединяются в файл. Каждая запись в файле содержит три значения: • Номер продавца от 1 до 4 (3 символа в ширину, выравнивание по правому краю) • Номер продукта от 1 до 5 (3 символа в ширину, выравнивание по правому краю) • Стоимость проданного продукта в долларах. день этим продавцом (9 символов по правому краю) Ваша программа должна запрашивать у пользователя имя файла, обрабатывать файл и сообщать итоговые данные для каждого продавца и для каждого продукта. Образец файла данных под названием «Albatross.dat» предоставляется для того, чтобы вы могли протестировать свою программу. Ваша программа должна иметь возможность обрабатывать файл данных, содержащий любое количество записей о продажах. Это означает, что файл входных данных может содержать несколько записей для каждого продавца и комбинации продуктов. Не пишите свою программу так, чтобы она всегда (и только) ожидала количество записей, которые оказались в файле данных образца. Ваша программа будет проверена и оценена путем выполнения ее с файлом данных, который содержит меньше записей, чем в образце файла данных, с образцом файла данных и, наконец, с файлом данных, который содержит больше записей, чем образец файла данных.
Пока это то, что у меня есть:
.data
askfile BYTE "Enter the data file name: ",0
fileMessage BYTE "Error while opening file: ",0dh,0ah,0
fileName BYTE 256 DUP(0)
byteCount DWORD ?
handle DWORD ?
.code
main PROC
mov edx,OFFSET askfile
call WriteString
;File name
mov edx,OFFSET filename
mov ecx,SIZEOF filename
call ReadString
mov byteCount,eax
;Open
mov edx,OFFSET filename
call OpenInputFile
cmp eax,INVALID_HANDLE_VALUE
je file_error
mov handle,eax
jmp Alpha
file_error:
mov edx,OFFSET fileMessage
call WriteString
jmp Omega
Alpha:
.data
BUFFER_SIZE = 17
buffer BYTE BUFFER_SIZE DUP(?)
bytesRead DWORD ?
.code
;Read from file
mov eax,handle
mov edx,OFFSET buffer
mov ecx,BUFFER_SIZE
call ReadFromFile
jc read_error
cmp eax,BUFFER_SIZE
jl Omega
read_error:
mov edx,OFFSET readMessage
call WriteString
jmp Omega
main ENDP
END main