2007年4月全国计算机等级考试三级PC上机试题

文章作者 100test 发表时间 2007:07:19 12:00:21
来源 100Test.Com百考试题网


  试题1:
  〈三级PC南开100题〉的第五题
  一、请编制程序,其功能是:内存中从SOURCE开始连续存放着21个八位有符号数(补码),其相邻两数之间差值不超过-8至7。对这种变化缓慢的数据可采用差分方法进行压缩。即第一个数据不变,其后的数据取与前一数据的差值并用四位二进制补码表示,两个差值拼成一个字节,前一个差值放在高四位,后一个差值放在低四位。
  例如:
   原数据(X[n]):23H,27H,2AH,29H,22H…
  压缩后(Y[n]):23H, 43H, F9H…
  编程按上述方法进行压缩,结果保存在RESULT开始的内存单元中。
   部分程序已给出, 其中原始数据由过程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 2*N 1 DUP(?)
  RESULT DB N 1 DUP(0)
  NAME0 DB INPUT1.DAT,0
  NAME1 DB OUTPUT1.DAT,0
  NDATA DB N DUP(0)
  PDATA DB N DUP(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
   MOV ES,AX .置附加段寄存器
   LEA DX,SOURCE .数据区起始地址
   LEA SI,NAME0 .原始数据文件名
   MOV CX,2*N 1 .字节数
   CALL LOAD .从INPUT1.DAT中读取数据
  .****BEGIN****
   LEA SI,SOURCE
   LEA DI,RESULT
   CLD
   MOVSB .Y[0]=X[0]
   XOR BX,BX .FLAG=0
   MOV DX,N*2 .COUNTER
  COMPRESS:
   LODSB .X[n]-X[n-1]
   SUB _______________ .FLAG=NOT FLAG
   ________________________
  J_______ LOW_HEX
   MOV CL,4
   ________ AL,CL
   MOV AH,AL
   JMP NEXT
  LOW_HEX:
  _________________________
   OR AL,AH
   STOSB
  NEXT: _________________________
   JNE COMPRESS
  .****END****
   LEA DX,RESULT .结果数据区首址
   LEA SI,NAME1 .结果文件名
   MOV CX,N 1 .字节数
   CALL SAVE .保存结果到文件
   RET
  START ENDP
  CODE ENDS
   END START
  答案:
5.(1)AL,[SI-2]
(2)XOR BX,0FFH
(3)Z
(4)SHL
(5)AND AL,0FH
(6)DEC DX


src="/ncre/js/wxgg.js">

相关文章


2007年4月全国计算机等级考试三级PC上机试题
计算机等级考试三级网络笔试练习题汇总2(8套)
计算机等级考试三级网络笔试练习题汇总(7套)
三级信息管理技术分章节考试要点:第三章
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛