汇编:不知道从哪里开始

时间:2013-11-05 03:57:10

标签: assembly x86 masm

所以我目前正在上课。我不需要为我完成的工作,但如果有解释,这总是有用的。我真的只想推动正确的方向。我的任务是:

编写汇编语言程序,解决以下问题。信天翁公司有四名销售人员(1至4名),他们销售五种不同的产品(1至5种)。每天一次,每个销售人员报告每个产品的销售情况。这些报告随着时间的推移合并到一个文件中。文件中的每条记录都包含三个值: •销售人员编号从1到4(宽3个字符,右对齐) •产品编号从1到5(宽3个字符,右对齐) •该销售人员当天销售的该产品的美元价值(宽9个字符,右对齐) 您的程序必须提示用户输入文件名,处理文件,并报告每个销售人员和每个产品的总计。提供了一个名为“Albatross.dat”的示例数据文件,以便您测试程序。 您的程序必须能够处理包含任意数量销售记录的数据文件。这意味着输入数据文件可以包含每个销售人员和产品组合的多个记录。不要编写程序,以便它始终(并且只)期望恰好在样本数据文件中的记录数。您的程序将通过执行数据文件来测试和评分,该数据文件包含的记录少于样本数据文件,样本数据文件,最后是包含比样本数据文件更多记录的数据文件。 < / p>

到目前为止,这就是我所拥有的:

.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

1 个答案:

答案 0 :(得分:0)

开始编写和测试a2i2a程序。当你有这个和文件I / O时,其余的都很简单。