请编制程序,其功能是:内存中连续存放着10个用ASCII码表示的十进制个位数,将它们转换成相应的二进制字节数N0,N1,…,N9,然后按序将N0~N9,存入内存中,最后存放它们的和M(M=N0+N1+N9)。M用压缩型(组合型)BCD码表示。 例如:

admin2012-03-05  24

问题 请编制程序,其功能是:内存中连续存放着10个用ASCII码表示的十进制个位数,将它们转换成相应的二进制字节数N0,N1,…,N9,然后按序将N0~N9,存入内存中,最后存放它们的和M(M=N0+N1+N9)。M用压缩型(组合型)BCD码表示。
   例如:
   内存中有:30H(’0’),39H(’9’),31H(’1’)…
   结果为:00H,09H,01H…(最后为M)
   部分程序已给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中。运算结果要求从RESULT开始存放,由过程SAVE保存到文件 OUTPUT1.DAT中。
   填空BEGIN和END之间已给出的一段源程序使其完整(空白已用横线标出,每行空白一般只需一条指令,但采用功能相当的多条指令亦可),或删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。
   对程序必须进行汇编,并与IO.OBJ链接产生PROG1.EXE执行文件,最终运行程序产生结果(无结果或结果不正确者均不得分)。调试中若发现整个程序中存在错误之处,请加以修改。
   试题程序:
              EXTRN     LOAD:FAR, SAVE:FAR
   N          EQU       10
   STAC       SEGMENT   STACK
              DB        128 DUP(?)
   STAC       ENDS
   DATA       SEGMENT
   SOURCE     DB        N DUP(?)
   RESULT     DB        N+1 DUP(0)
   NAME0      DB        ’INPUT1.DAT’,0
   NAME1      DB        ’OUTPUT1.DAT’,0
   DATA       ENDS
   CODE       SEGMENT
              ASSUME    CS:CODE,DS:DATA,S S: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          ; 字节数
              CALL      LOAD          ; 从INPUT1.DAT中读取数据
   ; ****BEGIN****
              MOV       DI,OFFSET RESULT
              MOV       BX,0
              MOV       CX,N
              MOV       DL,  (1)  
   PRO:       MOV       AL,SOURCE[BX]
               (2)       AL,3 OH
              MOV       [DI],AL
               (3)  
              ADD        AL,DL
               (4)  
              MOV        DL.AL
              INC        BX
               (5)  
              JNZ        PRO
               (6)  
     ;****END****
              LEA          DX,RESULT     ; 结果数据区首址
              LEA          SI,NAME1      ; 结果文件名
              MOV          CX,N+1        ; 字节数
              CALL         SAVE          ; 保存结果到文件
   RET
   START      ENDP
   CODE       ENDS
              END          START

选项

答案(1)0 (2) SUB (3) INC DI(4) DAA (5) DEC CX (6) MOV [DI], DL

解析 采用DL统计和,从源数据区取出数据后,减30H就转换为二进制字节数,然后再累加和以后,通过十进制调整指令将和调整为BCD码。每做一次循环就对CX减1,通过判断CX是否为0来结束循环。最后还要把DL中的累加和存入结果单元。
转载请注明原文地址:https://kaotiyun.com/show/cKgZ777K
0

相关试题推荐
最新回复(0)