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

admin2010-09-01  23

问题 请编制程序,其功能是:内存中连续存放着两个无符号字节数序列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 CX,N (2)DL,SOURCE[BX+N] (3)MOV AL(4)DL (5)AX (6)INC BX (7)JNZ

解析 本题是一道序列计算题,其中关键问题在于找出序列的范围,确定序列中的数据类型,最后选择计算方法。其中序列范围在题目中已明确给出,每个序列的长度是10个字节数,两个序列连续存放,总共20个字节数,占20个存储单元。题目中明确指出序列A和序列B均为无符号字节数,运算结果按序以字的形式连续存放,所以在计算运算结果的偏移位置时要特别注意。题目要求的是两个序列相除,然后将运算结果存为字数据,低字节为商,高字节为余数。
转载请注明原文地址:https://kaotiyun.com/show/iTgZ777K
0

最新回复(0)