a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 78|回复: 0

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

[复制链接]
发表于 2012-7-31 20:55:16 | 显示全部楼层 |阅读模式
  请编制程序,其功能是:分别统计内存中字符串SEGMENT、EQU、DB、MOV、ADD、ENDS、
* s* A! L& V; f2 |0 d/ b0 _4 u* t  PROC、ENDP、AL、END的个数,然后将统计的个数以字节类型依次存入指定的内存中。
2 ^( v$ E  B0 d+ X. q* T  例如:
0 i- Q. {- R* L2 P( X+ D& q  内存中有 SEGMENT,EQU,DB,DB,MOV,ADD,ENDS,PROC,ENDP,AL,AL,AL,END,SUB,MUL
4 n8 v! B4 Y- A# V  结果为 01H,01H,02H,01H,01H,01H,01H,01H,03H,03H
+ p! }) Z8 g) I5 Z2 ?5 ~5 ^. b  部分程序已给出, 其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中。运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。8 b, |8 y# \5 K" v* z' k
  填空BEGIN和END之间已给出的源程序使其完整(空白已用横线标出,每行空白一般只需一条指令, 但采用功能相当的多条指令亦可),或删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。5 ~0 z. r$ K% f& Y+ U5 b5 [
  对程序必须进行汇编,并与IO.OBJ链接产生PROG1.EXE执行文件,最终运行程序产生结果(无结果或结果不正确者均不得分)。调试中若发现整个程序中存在错误之处, 请加以修改。
0 w) X5 K2 f: t: R6 }1 b: y  试题程序:
. ^$ d, T0 `( b: l" |% A  MSTR MACRO STRX,NX1,NX2
' F. K. z3 T: T: x4 C4 }0 q5 G  LOCAL NEXT,AGAIN,FOUND, t1 C8 j. ]1 d, T+ Q2 t. B. K
  CLD2 {9 o  W8 C. j8 V. J/ t# ^" r
  LEA SI,SOURCE' t9 O& ]: ^; D- J; @& B( t; x
  NEXT: CMP [SI],'$$'
0 v3 h5 u! m  |* [8 F  JE AGAIN; \! l& i9 i: _$ |* g
  MOV CX,NX1
) \& e( o% A: Q3 m. l9 [' f1 {1 D  LEA DI,STRX) Z+ B$ [- E1 Y  M: l5 m% O
  REPE CMPSB
8 c: S, K2 m3 Y: r0 {/ M  JNE NEXT, E: e% D3 O6 s( L5 E2 J& p6 \
  FOUND: INC BYTE PTR NX2
/ s3 M: E9 f0 L) |* q3 `9 U$ t  JMP NEXT
% y% g7 I0 q7 t1 B  AGAIN: ENDM4 {, _, ^6 T$ w6 T/ s% \, H/ Y0 |1 Q
  EXTRN LOAD:FAR,SAVE:FAR
9 U* G  d  A8 y7 s' Z  N1 EQU 277
9 T# @+ m7 k5 `6 M% W0 c; t4 o+ e; E  N2 EQU 10; F  q9 W9 O6 m; C% Z
  DSEG SEGMENT1 o- s# ]- F9 I! Q
  SOURCE DB N1 DUP(?)7 K3 O$ p: s; m; a9 ~. G) Z7 \
  RESULT DB N2 DUP(0)
( @, }& e* ~! ?5 Q0 v3 l! b9 W  STR0 DB 'SEGMENT'* K( R0 A+ V& q3 }( o$ t
  STR1 DB 'EQU'! l9 M( j/ t' s$ G0 U: O
  STR2 DB 'DB'' A) I7 [  N3 H2 T5 S, B6 n
  STR3 DB 'MOV'
0 l1 b1 P; w% M$ s/ x8 v, x  STR4 DB 'ADD'
* L1 J4 m3 i" L# v( N1 L, i  STR5 DB 'ENDS'
  I' m) I& N3 u, M  STR6 DB 'PROC'
2 }& n6 Z2 N7 [  C- F7 [4 K  STR7 DB 'ENDP'
. J% ]- |. q4 z) ^9 b1 l  STR8 DB 'AL'9 M/ l+ U( J" F# x0 N! S" q: a
  STR9 DB 'END'
2 s5 K0 H/ `; N# i" S! H) m  NAME0 DB 'INPUT1.DAT',0# U9 d1 O( M6 ^& @7 D1 p- n
  NAME1 DB 'OUTPUT1.DAT',0
  }9 N# r. W2 k( o3 Q+ U  DSEG ENDS. Q; K/ C( ?5 D: N- l
  SSEG SEGMENT STACK
; x3 t6 h! S2 Z1 m2 r/ a; t  DB 256 DUP(?)  v! `, Z/ _3 u
  SSEG ENDS
0 ?2 R" D2 Q) u$ c# k6 y7 M4 v& i  CSEG SEGMENT7 R' ^1 X8 y4 ?
  ASSUME CS:CSEG,SS:SSEG,DS:DSEG,ES:DSEG
' ?7 S! O/ ]6 [( F* R* d, q& V  START PROC FAR
  p! l, U# d5 h0 P& ^9 e3 h  PUSH DS
% \. A# e3 S; ]+ h. K  XOR AX,AX1 b" r, B9 J" Y$ G! I
  PUSH AX3 Q4 l2 x6 S/ ^1 o0 I4 c
  MOV AX,DSEG
# e( R, L& P& X4 F, P. Q) E  MOV DS,AX4 i, p% j5 U. h: R! k; v  F
  LEA DX,SOURCE ;数据区起始地址
5 `: X: i6 S  N! o  LEA SI,NAME0 ;原始数据文件名8 e# C( V* W! N) z' I, L
  MOV CX,N1 ;字节数
/ F$ V# t$ R& F" o  CALL LOAD ;从'INPUT1.DAT'中读取数据' q" B, G, ?5 W
  ;****BEGIN****! r+ p" I' V5 d% U* J0 W9 R0 ?
  MSTR ________________  A7 [+ t) E9 s- n1 c$ z/ [! I. I& U
  MSTR ________________
* g; r* S9 v/ \8 q7 t  MSTR ________________, S+ J/ X6 d! D. s$ V; e; M
  MSTR ________________: T! U' |% W9 |; P! _* t- y
  MSTR ________________; W/ i; K# b* w+ o% Z
  MSTR ________________* J& `% ~; h/ r
  MSTR ________________9 w  s$ i) T+ S0 A" f; ^4 G) X
  MSTR ________________. Z9 J/ m: j+ w* q
  MSTR ________________
5 Z3 b8 M! W) M7 I( k8 Q+ Y  MSTR ________________' l8 q: f, `0 x2 v; C- \, a% X
  ;****END****( V2 M' f1 k  O
  LEA DX,RESULT ;结果数据区首址
+ B, t* X, _. K+ F  LEA SI,NAME1 ;结果文件名. d/ X' _7 }+ C( Y0 y! ~. C# w
  MOV CX,N2 ;结果字节数+ g  m0 a8 T1 J, C
  CALL SAVE ;保存结果到文件
1 T% V8 R* }& Q  RET# A! y  Y% _9 b  s% Z/ ~# @
  START ENDP
5 m; {2 F2 r4 N  CSEG ENDS( o$ D. g( Q3 S( q$ ]$ |. @
  END START
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-18 13:51 , Processed in 0.758400 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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