全国计算机等级三级PC技术上机试练习习题(21)
来源:优易学  2010-1-14 15:32:22   【优易学:中国教育考试门户网】   资料下载   IT书店

  第21套上机试题及答案详解
  编制一个程序,其实现的功能为:将内存中从SOURCE开始的区域里存放的20个字节的压缩BCD码转换为ASCII码,每个压缩的BCD码转换为两个ASCII码,并在最高位加上奇校验位,结果存放到RESULT开始的内存区域。
  例如:
  内存中有:73H,45H……
  则结果为:37H,B3H,34H,B5H……
  部分程序已经给出,其中原始数据由过程LOAD从文件INPUT.DAT中读入以SOURCE开始的内存单元中。运算结果要求从RESULT开始的内存单元存放,由过程SAVE保存到文件OUTPUT.DAT中。
  请填空BEGIN和END之问已给出的源程序使其完整,空白已经用横线标出,每行空白一般只需要一条指令,但采用功能相当的多条指令也行,考生也可以删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。
  对程序必须进行汇编,并与IO.OBJ链接产生可执行文件,最终运行程序产生结果。调试中若发现整个程序中存在错误之处,请加以修改。
  【试题程序】
  
  
  

  【参考答案】
  (1)ANDAL,0FH
  (2)PUSHCX
  (3)SHRAH,CL
  (4)JNP
  (5)JNP
  【解析】
  题目要求将压缩的BCD码转换为两个ASCII码,则首先要将BCD码分离出来,转换为非压缩的BCD码,然后转换为ASCII码。最高位要求加奇校验位,所以要对转换以后的数据进行判断,如果数据中1的个数为奇数的话,则直接将其存储到结果存储区,否则要将数据的最高位变为1。
  程序中,已经将数据的高4位分离到AH寄存器中,所以还需要将低4位的数据分离到一个寄存器中,有后面的程序可以看出应该分离到AL寄存器中,所以第一个空白处应填写AND AL,OFH。高4位数据分离到AH寄存器以后,需要将数据从高4位移到低4位来,变成非组合的BCD码。由于移动的位数为4。所以需要使用CL寄存器,而CX寄存器被用来作为程序循环次数的控制器,所以需要在使用CL寄存器之前对CX进行入栈和出栈操作,即第二个空白处应填PUSH CX。第三个空白处执行的是右移操作,所以应填为SHR AH,CL。执行完数据分离以后,将非组合的BCD码转换为ASCII码,转换的时候只需要将非组合的BCD码与30H执行与操作即可。转换完成后,要在最高位加奇校验位,即要对转换后数据中1的个数进行判断,所以最后两个空应填JNP,表示当数据中1的个数为奇数时跳转到数据存储的程序段执行,否则将数据的最高位变为1,然后再进行存储。

责任编辑:小草

文章搜索:
 相关文章
热点资讯
热门课程培训