0

所以我目前正在做课堂作业。我不需要为我完成的工作,但如果有解释,这总是有帮助的。我真的只是想朝着正确的方向前进。我的任务是:

编写一个解决下列问题的汇编语言程序。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
4

1 回答 1

0

从编写和测试 a2i2a 程序开始。当你有这个和文件 I/O 时,剩下的就很简单了。

于 2013-11-05T10:14:22.887 回答