试题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
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 press
;****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
+《08年4月全国计算机等级考试三级PC上机试题》相关文章
- 08年4月全国计算机等级考试三级PC上机试题
- › 08年4月计算机等级考试二级JAVA试题(1)
- › 08年4月计算机等级考试二级C++笔试模拟试题(3)(1)
- › 2008年4月计算机等级考试二级VB考试真题(1)
- › 2008年4月全国计算机等级考试三级网络技术笔试试卷及参考答案(1)
- › 08年4月全国计算机等级考试三级PC上机试题
- › 08年4月计算机等级考试一级MS模拟试题二(带答案)(1)
- 在百度中搜索相关文章:08年4月全国计算机等级考试三级PC上机试题
- 在谷歌中搜索相关文章:08年4月全国计算机等级考试三级PC上机试题
- 在soso中搜索相关文章:08年4月全国计算机等级考试三级PC上机试题
- 在搜狗中搜索相关文章:08年4月全国计算机等级考试三级PC上机试题