欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

请编制程序,其功能是:内存中连续存放着两个无符号字节数序列Ak和Bk(k=0,1,…,9),求序列Ck,Ck=Ak÷B

时间:2018-05-25

请编制程序,其功能是:内存中连续存放着两个无符号字节数序列Ak和Bk (k=0,1,…,9),求序列Ck,Ck=Ak÷Bk (运算结果按序以字的形式连续存放,其中低字节为商,高字节为余数)。


例如:


序列Ak为:01H,7FH, 80H,FFH…


序列Bk为:PFH,80H,7FH,01H…


结果Ck为:0100H(00H为商、01H为余数),7F00H,0101H,00FFH…


部分程序已给出,其中原始数据由过程LOAD从文件INPUT.DAT中读入SOURCE开始的内存单元中,运算结果要求从 RESULT开始存放,由过程SAVE保存到文件OUTPUT.DAT中。


请填空BEGIN和END之间已给出的源程序使其完整,空白已用横线标出,每个空白一般只需一条指令,但采用功能相当的多条指令亦可,或删除BEGm和END之间原有的代码并自行编程来完成所要求的功能。


对程序必须进行汇编,并与IO.OBJ链接产生可执行文件,最终运行程序产生结果。调试中若发现整个程序中存在错误之处,请加以修改。


[试题程序]


EXTRN LOAD:FAR,SAVE:FAR


N EQU 10


STAC SEGMENT STACK


DB 128 DUP(?)


STAC ENDS


DATA SEGMENT


SOURCE DB N*2 DUP(?)


RESULT DW N DUP(0)


NAME0 DB 'INPUT.DAT',0


NAME1 DB 'OUTPUT.DAT',0


DATA ENDS


CODE SEGMENT


ASSUME CS:CODE, DS:DATA, SS:STAC


START PROC FAR


PUSH DS


XOR AX,AX


PUSH AX


MOV AX,DATA


MOV DS,AX


LEA DX,SOURCE ;数据区起始地址


LEA SI,NAME0 ;原始数据文件名


MOV CX,N*2 ;字节数


CALL LOAD ;从 'INPUT.DAT' 中读取数据


; ******** BEGIN ********


MOV DI,OFFSET RESULT


MOV BX,0


(1)


PRO: MOV (2)


(3) ,SOURCE[BX]


CBW


DIV (4)


MOV [DI], (5)


ADD DI,2


(6)


DEC CX


(7) PRO


; ******** END ********


LEA DX,RESULT ;结果数据区首址


LEA SI,NAME1 ;结果文件名


MOV CX,2*N ;结果字节数


CALL SAVE ;保存结果到文件


RET


START ENDP


CODE ENDS


END START



答案说明:本题目答案来自网络整理或转载,最终答案请以官网为准。


答 案:(1)MOV CXN (2)DLSOURCE[BX+N] (3)MOV AL(4)DL (5)AX (6)INC BX (7)JNZ
(1)MOV CX,N (2)DL,SOURCE[BX+N] (3)MOV AL(4)DL (5)AX (6)INC BX (7)JNZ 解析:本题是一道序列计算题,其中关键问题在于找出序列的范围,确定序列中的数据类型,最后选择计算方法。其中序列范围在题目中已明确给出,每个序列的长度是10个字节数,两个序列连续存放,总共20个字节数,占20个存储单元。题目中明确指出序列A和序列B均为无符号字节数,运算结果按序以字的形式连续存放,所以在计算运算结果的偏移位置时要特别注意。题目要求的是两个序列相除,然后将运算结果存为字数据,低字节为商,高字节为余数。
相关推荐

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。