LEA DX,RESULT ; 结果数据区首址
LEA SI,NAME1 ; 结果文件名
MOV CX,N+4 ; 结果字节数
CALL SAVE ; 保存结果到文件
RET
START ENDP
CODE ENDS
END START
就是把首地址传参给dx,题中因为要把结果输出在output1.dat中,而结果被保存在result所指示的内存区域,所以把result的偏移地址传给dx,后面有把cx设成n+4,也就是说程序将把从result标示开始的内存区域的n+4个字节输出到output1.dat中,所以楼主明白了吧?估计题目应该不是单单要把那16个字节的数字写入吧,因为那样的话直接把cx设成n(n=16)才对,如果楼主只是想把那16个数写入,那只要把它存到result指示的内存区域就行了,假设那16个数被保存在data段,为source所指示的内存区域,那么可以这样写:
lea si,source
lea di,result
mov cx,16
s: mov al,[si]
mov [di],al
loop s
我觉得楼主问的有点乱...你给的代码是先从input1.dat中导入源数据到data段的source指示的内存区域,但是我又不知道源数据是不是你给的那16个...我写的代码是假设source指示的内存区域存放的就是你要输出的那16个数。
总之,只要把你想输出到output1.dat的数据区首址传个dx就行了,因为题中输出的内容为result指示的内存区域中的内容,所以LEA DX,RESULT就把数据区首址传给了dx。然后就能实现把从RESULT开始的n+4个数据输出到output1.dat中。
arm 的啊 我也刚学哈
MOV AX,DS
MOV ES,AX ;重要
CLD
MOV SI,OFFSET SOURCE
MOV DI,OFFSET RESULT
MOV CX,N+4 ;连INDATA中的4个字节一起转移
REP MOVSB
就这几句,计算机三级题