a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 38|回复: 0

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

[复制链接]
发表于 2012-7-31 20:55:16 | 显示全部楼层 |阅读模式
 请编制程序,其功能是:将一个字符串中连续相同的字符仅用一个字符代替,生成一个新的字符串。字符串以00H结束,长度不超过20个字节。  例如: 原字符串为 41H,41H,41H,42H,31H,31H,00H('AAAB11')) l7 I# _: X$ h9 Z# L, l2 D5 F; s
  新字符串为 41H,42H,31H,00H('AB1')5 J( p3 Y6 O! S* m( ]7 _6 i
  部分程序已给出, 其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中。运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中(请自行在CX中设定输出长度)。
( X* ~; t% d5 q* p7 v8 R( s* V  请在BEGIN和END之间补充一段源程序,完成要求的功能。
  X" J0 z: C; e2 z5 H  对程序必须进行汇编,并与IO.OBJ链接产生PROG1.EXE执行文件,最终运行程序产生结果(无结果或结果不正确者均不得分)。调试中若发现整个程序中存在错误之处, 请加以修改。
+ ]* a! R2 y3 `1 f% p( O  试题程序:& u! R0 b8 E4 u
  EXTRN LOAD:FAR,SAVE:FAR
3 a$ l  l" a# a. W  LE EQU 20) Q$ B' m* R- P  x: z6 v+ h" s  \& b
  DSEG SEGMENT
" o1 z% \  U9 I  SOURCE DB LEN DUP(?)- J% H/ @/ ]  ^- m+ ~6 p
  RESULT DB LEN DUP(0)- j4 K0 U; C6 p: G, j0 |- r
  NAME0 DB 'INPUT1.DAT',0
! U5 \+ ?# `, p3 M  NAME1 DB 'OUTPUT1.DAT',0; I* }- {5 |# a' |" y5 e
  DSEG ENDS5 }7 @/ V+ q4 I
  SSEG SEGMENT STACK8 g* j) x2 `' x8 B7 V& u* u
  DW 256 DUP(?)5 f! \' o/ h# h
  SSEG ENDS5 M. f3 T1 X+ x1 M
  CSEG SEGMENT
0 |: m  y$ d& m: S" A* {  ASSUME CS:CSEG,DS:DSEG,SS:SSEG
* g7 V5 |$ ~5 Q! b" Z  START PROC FAR+ g' U- \+ v. u# r7 G0 l
  PUSH DS
3 \& X; x! t& q  XOR AX,AX
) S( B3 o: o- [* V  PUSH AX
9 R' j$ r$ f' u+ M/ G  MOV AX,DSEG
4 ^8 g$ K( F2 v  N  MOV DS,AX
3 G' l2 R) M( H( ]/ V' Q% c  LEA DX,SOURCE ;数据区起始地址. T) F4 D( i. S1 t
  LEA SI,NAME0 ;原始数据文件名) A5 k5 a- B4 H$ Q) D7 i
  MOV CX,LEN ;字节数
# K5 \2 @' e0 R' C8 h  CALL LOAD ;从'INPUT1.DAT'中读取数据! G' G+ N$ \! u/ d; `* k% y
  ;****BEGIN****
. \2 I4 S& e$ i* B$ e9 ~3 u2 }  LEA SI,SOURCE
1 N; `$ P$ _7 J+ H" r9 \! b  LEA DI,RESULT
# @! ~' r3 t" ]: p( ^  V  MOV CX,20
0 n1 q- K; ~: u7 b% ~2 f1 b  LOOP1: MOV AL,[SI]
3 f$ _4 @9 E8 N3 v6 V$ O  CMP AL,00H* ?) n' ^% @2 a, v3 {  f1 M* c
  JE EXIT8 l5 B+ \; C4 o2 L* A- k4 r
  NEXT: INC SI' a, U1 H0 d# \2 M% E& X8 K1 N
  MOV AH,[SI]  O1 V6 ?6 B: @; N- ]4 l5 C
  CMP AL,AH
$ _% X- d) A$ J9 ^  JE NEXT5 d8 [( x0 b1 p# k7 }) ?$ e
  MOV [DI],AL( O0 s& t0 l: q7 I# `7 ?9 a
  INC DI
& i1 s" {7 ?- v" S  JMP LOOP1$ H  R+ D7 z/ H; r
  EXIT: MOV [DI],AL
# c/ ~4 Q3 V' J- B  ;****END****9 [3 l* m2 u9 i( Q. P
  LEA DX,RESULT ;结果数据区首址
4 U- K4 y+ f( f' r0 m/ I  LEA SI,NAME1 ;结果文件名$ N4 k7 u: p' @# J, W. v
  CALL SAVE ;保存结果到文件+ q: C, Y1 g2 @, p; O$ \
  RET
) a. `1 k, Y  L- N: ]- |! q- Y  u3 e4 g  START ENDP' \, a7 ~4 U& Y/ |4 p- _
  CSEG ENDS
0 i- f0 l# M8 M5 c  END START
回复

使用道具 举报

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

本版积分规则

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

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

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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