a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 49|回复: 0

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

[复制链接]
发表于 2012-7-31 20:55:16 | 显示全部楼层 |阅读模式
 请编制程序,其功能是:对一个由可打印ASCII字符(ASCII码20H~7FH)组成的字符串可采用下列方法进行压缩:从串首开始向后扫描,如某字符单独出现该字符不变,如某字符连续出现n次,则该字符用ESC(1BH),n,三个字节来代替(假定n不超过255)。  例如:1 p" m  S* ]$ o7 p) ]
  设内存中从SOURCE开始有一用上述方法压缩的字符串,其以00H结束,长度不超过100。试编程对其进行解压缩,结果存入RESULT开始的内存单元。+ A( c7 \1 u4 w9 E
  原串: 41H,1BH,06H,43H,61H,00H( t; u2 U" Q1 u+ P3 N: f8 l
  解压后: 41H,43H,43H,43H,43H,43H,43H,61H,00H("ACCCCCCa")
( q+ g. w9 D. f# N: `8 T" g+ P; V  部分程序已给出, 其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中。运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。
0 V5 i) d/ j# J  填空BEGIN和END之间已给出的一段源程序使其完整(空白已用横线标出,每行空白一般只需一条指令, 但采用功能相当的多条指令亦可),或删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。# ?* }. `) H/ A8 z3 J/ g
  对程序必须进行汇编,并与IO.OBJ链接产生PROG1.EXE执行文件,最终运行程序产生结果(无结果或结果不正确者均不得分)。调试中若发现整个程序中存在错误之处, 请加以修改。+ k) ~, E5 u0 |- i4 G: M
  试题程序:& z7 w$ o6 `# Z; D3 Q% p7 F
  EXTRN LOAD:FAR,SAVE:FAR
0 C+ b6 T6 }2 ^# ]0 N" ?  N EQU 100: a2 O' @3 I; f5 [7 Q
  ESC_CODE EQU 271 w3 B* O7 u( @. h, O$ m: J
  STAC SEGMENT STACK
* B9 }& \) F, W( Q( |  DB 128 DUP(?)
) J0 C1 o2 C3 [! g6 V6 A) [  STAC ENDS
$ v# ~' i8 P4 P! p: E4 r; t4 y4 S  DATA SEGMENT: u7 |* C2 e' o
  SOURCE DB N DUP(?)* v; l$ Z* o5 W& G  ~
  RESULT DB N DUP(0)
: K! P$ W0 u$ d- g+ [  NAME0 DB 'INPUT1.DAT',04 i) }7 R& z, B' d9 U$ C; C9 `
  NAME1 DB 'OUTPUT1.DAT',0
- t: z2 z9 T" e7 L  DATA ENDS& X7 n: C9 f' U3 I, f
  CODE SEGMENT
1 W! m  r& s/ Z. O. P7 l  ASSUME CS:CODE,DS:DATA,SS:STAC
8 p/ a# {; Z$ F0 H; R3 J  START PROC FAR+ I0 \' O" E; Y& D: |$ [
  PUSH DS
% J* _5 F: a& X  XOR AX,AX
( o6 i% P( V* b/ m( e2 e& P$ U, A  PUSH AX( X) i* l$ C, r2 N+ g
  MOV AX,DATA6 ]7 N4 c& `, \5 l+ x* K5 d
  MOV DS,AX; w- W8 h, y! |' [! U) \
  MOV ES,AX ;置附加段寄存器, G  s, f1 V$ t; R/ K2 t- i
  LEA DX,SOURCE ;数据区起始地址" J2 g# A) O7 N1 o' ?
  LEA SI,NAME0 ;原始数据文件名
! x7 I$ U; n5 M: ~0 n) Q  MOV CX,N ;字节数
4 @4 `4 S" D- i( {- |  CALL LOAD ;从'INPUT1.DAT'中读取数据
3 t0 X6 S3 p# ?: k! h/ d( F  ;****BEGIN****
9 @* z. E  H7 {: v$ ~+ g' j/ ]: d  LEA SI,SOURCE
' N+ K& L8 m" P- u: P5 a! B  LEA DI,RESULT
+ h0 Q' z5 i; H& U! p. |  CLD
8 ^$ [, a7 o7 e7 j+ }  L0: LODSB+ K: v2 p% q) m  H$ x' |" H
  CMP AL,09 J/ a( d3 a$ F7 ?3 A$ n' h: o
  JE QUIT9 K2 b6 u2 H! s
  CMP AL,ESC_CODE4 o3 l% p9 Q0 x
  J_______ EXPAND
" e) w# @+ r. e) K  ___________________________3 E' O4 {8 u* H5 }+ e& c
  JMP L0
9 F2 c- x/ I/ b  g2 v6 b2 n! G& Y. P  EXPAND: ___________________________ ;解压
$ ^3 i: D, C2 h1 N  XOR CX,CX2 @2 V9 s) o: H6 m6 G3 B0 y
  ___________________________- ?+ {  G$ E0 z1 z" @7 c
  ___________________________
& K& S  G0 H! `& x  ___________________________
1 W: r7 t$ @: c0 h' w  ___________________________% t/ k$ X# G' _6 P8 F$ F! ]
  JMP L0
7 q+ c* Z% O; D+ v  QUIT: STOSB ;STORE THE '00H'
3 z. ]' q8 i; I* w( w. U( x  ;****END****
8 \3 J: j# y& }/ N  LEA DX,RESULT ;结果数据区首址
" u# D# Y3 t% E8 d  w5 Y  LEA SI,NAME1 ;结果文件名
7 Y# s, Q9 k8 F7 Q' C" Y/ c% f  MOV CX,N ;字节数( i8 O- n& g4 |1 V% u9 n
  CALL SAVE ;保存结果到文件: \: e  z' D( ?8 q! G+ }
  RET2 q9 b" F3 \+ X' F
  START ENDP. x& e1 H" {/ h  n# |
  CODE ENDS. X7 S7 [' y8 e( C
  END START
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-8 11:54 , Processed in 0.214256 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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