a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 48|回复: 0

[PC技术] 2011下半年计算机等级三级PC技术上机100题(15)

[复制链接]
发表于 2012-7-31 20:55:16 | 显示全部楼层 |阅读模式
 请编制程序,其功能是:对一个由可打印ASCII字符(ASCII码20H~7FH)组成的字符串可采用下列方法进行压缩:从串首开始向后扫描,如某字符单独出现该字符不变,如某字符连续出现n次,则该字符用ESC(1BH),n,三个字节来代替(假定n不超过255)。  例如:
3 V! |% o# L3 G2 L& r5 T  设内存中从SOURCE开始有一用上述方法压缩的字符串,其以00H结束,长度不超过100。试编程对其进行解压缩,结果存入RESULT开始的内存单元。
; P, k, Q, @, m; Y  原串: 41H,1BH,06H,43H,61H,00H
5 g1 o- o' B# j' Z+ v  解压后: 41H,43H,43H,43H,43H,43H,43H,61H,00H("ACCCCCCa"): c+ j; y2 ^9 @5 P0 L
  部分程序已给出, 其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中。运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。, }5 K; O9 U' L0 |, U
  填空BEGIN和END之间已给出的一段源程序使其完整(空白已用横线标出,每行空白一般只需一条指令, 但采用功能相当的多条指令亦可),或删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。
8 r! {5 x1 Y3 n  对程序必须进行汇编,并与IO.OBJ链接产生PROG1.EXE执行文件,最终运行程序产生结果(无结果或结果不正确者均不得分)。调试中若发现整个程序中存在错误之处, 请加以修改。
/ \$ J& V9 m4 u1 J' w  试题程序:$ Z7 R  G( t+ u* X5 W
  EXTRN LOAD:FAR,SAVE:FAR7 D$ b3 ^% H2 p6 U9 s" X. T
  N EQU 1008 b; _4 n# f' [+ J% S* ^* X
  ESC_CODE EQU 275 y7 B/ l! D/ P, k  D
  STAC SEGMENT STACK' I! r" G5 B. d  b
  DB 128 DUP(?)
" v  n; a5 w" n* }  STAC ENDS8 I. I' Y1 G# h% E& z' \- g5 p
  DATA SEGMENT
2 O. A) x3 m6 w5 M; h8 y$ U  SOURCE DB N DUP(?)
) c, c0 w# p/ H7 A& O0 x  RESULT DB N DUP(0)
0 N) @1 G3 Y$ M% F" u( z  NAME0 DB 'INPUT1.DAT',0
1 Z' h. N! C7 t  NAME1 DB 'OUTPUT1.DAT',0+ I6 ]4 e) Z: P! v9 a. A% e
  DATA ENDS0 }/ Z6 W2 o$ r
  CODE SEGMENT
5 f9 \* }4 v* U2 u3 }8 t) c  ASSUME CS:CODE,DS:DATA,SS:STAC
( {! T6 f/ W- w0 t/ M  START PROC FAR
/ x% X! p, h# x: h* K  PUSH DS' `* O: n- q5 X6 j3 l* `. g
  XOR AX,AX1 i6 G" t( M; \6 t6 I
  PUSH AX. C; V. v2 E6 f2 a
  MOV AX,DATA3 r. z/ m: Q+ B/ j
  MOV DS,AX4 G8 Q% X7 s- M8 j% ~, G. ~
  MOV ES,AX ;置附加段寄存器+ t( f3 T  d3 w5 m# X) E8 h
  LEA DX,SOURCE ;数据区起始地址" k+ f3 M  t& F/ n2 l4 q6 ]1 a
  LEA SI,NAME0 ;原始数据文件名
2 a( u1 N8 i7 q% x" x- j  K4 x  MOV CX,N ;字节数' d- ^; z3 |" n0 ~" ?$ n
  CALL LOAD ;从'INPUT1.DAT'中读取数据- B* x# O3 s% E5 B; _4 i9 ~
  ;****BEGIN****, X2 _+ z" Y8 ~
  LEA SI,SOURCE- ]/ W+ n4 J; F- U( D2 ^3 y0 Y# F3 G
  LEA DI,RESULT
  U2 g- J' v8 x$ Q  CLD
) `9 T* R9 U" J- D# z  L0: LODSB! Y/ Z; E8 ^( Y9 h; o# @, t2 y
  CMP AL,03 Z! t* R1 \9 j! x# n9 y
  JE QUIT
$ x0 G5 B1 q+ _1 F. A  CMP AL,ESC_CODE6 H- _7 C' M$ T! E/ b" b2 `
  J_______ EXPAND
) y: [" n% ~% [4 F, _4 J3 g( O  ___________________________
7 K$ C: u% y7 H7 {+ x  JMP L08 o5 M, v* @4 r$ ?, `) ~$ s
  EXPAND: ___________________________ ;解压
% }: _" N7 n: O0 b! H: M; L6 h  XOR CX,CX
8 g0 G% ~) P  P5 X- r  ___________________________# F. C) ^& ]' \2 [' D- R
  ___________________________) e" }8 |6 ?" F7 K$ `0 t
  ___________________________* e$ [: {1 v. j
  ___________________________
2 t( X+ C. R: o6 u; N  JMP L0
- l0 m8 Y$ y6 g  a# m" _  QUIT: STOSB ;STORE THE '00H'5 P- c) w7 }* @+ x& g' p8 t! c
  ;****END****
  d2 C( b5 }5 N0 z9 y. D/ @  LEA DX,RESULT ;结果数据区首址, H' o2 T6 Y9 x5 I+ ]
  LEA SI,NAME1 ;结果文件名
$ X5 \3 J& {- W  MOV CX,N ;字节数; m# N1 S! h. I# e$ J6 T( G& |* m0 Z
  CALL SAVE ;保存结果到文件
. o. R5 [- T: x8 ]& n: P* p  RET
0 b3 T2 x# [# Q8 Z0 Q  START ENDP7 B, a. v- [1 A5 Q5 i
  CODE ENDS
1 I3 M- j5 @2 A* B8 Y4 O  END START
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-18 09:54 , Processed in 0.249208 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表