a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 40|回复: 0

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

[复制链接]
发表于 2012-7-31 20:55:16 | 显示全部楼层 |阅读模式
请编制程序,其功能是:将内存中由SOURCE指示的40个字节有符号数组成的数组分成正数和负数两个数组,并求这两个数组的数据个数,结果存放在RESULT指示的内存区域,存放形式为正数个数在前,其后跟正数数组元素,然后是负数个数及负数数组元素。  例如:
3 p( y# l/ ~6 [$ p) l! f% T8 D  内存中有 1EH,91H,74H,91H,42H,30H,81H,F3H,18H,25H
5 w0 Y/ I( b/ y" k8 N8 Z  结果为 06H,1EH,74H,42H,30H,18H,25H,04H,91H,91H,81H,F3H% L' p8 d: u( q& X  }3 o
  部分程序已给出, 其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中。运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。
% F: o& k! ^- z+ P7 C& y  填空BEGIN和END之间已给出的一段源程序使其完整(空白已用横线标出,每行空白一般只需一条指令, 但采用功能相当的多条指令亦可),或删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。
( B+ w& \1 ]4 Q5 U* o" v( y  对程序必须进行汇编,并与IO.OBJ链接产生PROG1.EXE执行文件,最终运行程序产生结果(无结果或结果不正确者均不得分)。调试中若发现整个程序中存在错误之处, 请加以修改。
: I% ~4 v& U- @$ Q- t0 K  试题程序:+ }. i" O4 @9 \5 D" w
  EXTRN LOAD:FAR,SAVE:FAR
& S7 z& M2 ^3 [" P( {6 {% o  N EQU 40; ]0 m5 G2 n# j) }9 K7 V$ }
  STAC SEGMENT STACK
) n2 I, X$ X: [3 I  DB 128 DUP(?)
( `7 j8 i% U- x' O& u5 m4 j  STAC ENDS
  Z4 [9 c! @1 F0 o  DATA SEGMENT& q3 X' L( M4 e+ {! u" {
  SOURCE DB N DUP(0)
* _0 z$ d- c8 y  RESULT DB N+2 DUP(0)% Q$ s$ I/ d8 v: W
  NAME0 DB 'INPUT1.DAT',0
0 R8 H6 Q+ K- d# c( A& }  NAME1 DB 'OUTPUT1.DAT',0) b8 i0 u. d2 ]2 A5 k5 J; W
  NDATA DB N DUP(0)
6 o: e- `0 y- E" y7 S  PDATA DB N DUP(0)
) Z: u/ p* s) ^3 ]. y7 E  DATA ENDS& }4 P, L2 e3 v: d' i6 v4 v& O
  CODE SEGMENT
) W" ~2 S7 ~( ]0 \# S6 `  ASSUME CS:CODE,DS:DATA,SS:STAC
2 N5 f5 v) M8 `- d! G: t6 X  START PROC FAR, H7 B6 Q8 B$ l6 D( ~: w
  PUSH DS4 `- L  m* N0 y9 a0 s: D# s; p8 U
  XOR AX,AX
5 }: D0 {8 j1 }+ M  PUSH AX2 g. G$ c% {9 ^+ h! l
  MOV AX,DATA* x/ Y2 R. n3 Y* C0 t; `
  MOV DS,AX
* F7 F* i. \) h, U  MOV ES,AX ;置附加段寄存器
. e+ c9 f7 v) i0 a" ?2 e5 A6 I  LEA DX,SOURCE ;数据区起始地址5 b. N9 M0 H" W/ ?6 a, q; _; L
  LEA SI,NAME0 ;原始数据文件名
4 P+ a, @+ ^; D# m7 f: R1 j9 r' H# V  MOV CX,N ;字节数
$ Y/ ^& h$ ]! F  l4 q6 l" F' c  CALL LOAD ;从'INPUT1.DAT'中读取数据. [# A: N  b, j3 `
  ;****BEGIN****: ~$ W  k4 `4 e' z0 a3 s8 @
  LEA SI,SOURCE  j3 s) h6 x! K- _
  MOV DI,OFFSET PDATA ;PDATA为正数数组存放缓冲区首址
% G) O- N& {/ i' i( t# V  MOV BX,OFFSET NDATA ;NDATA为负数数组存放缓冲区首址
$ l, G. ]' ~$ V9 F" j4 }: Q/ ~  XOR DX,DX4 j! @; ?& C# _& R+ u7 t
  MOV CX,N5 h! e( D& f  v
  CLD) c4 J9 o1 h% L0 r5 M
  MAIN1: LODSB: q' g) C6 B9 R( d
  TEST AL,_______________
* c( N2 f# G, H# D( A! I0 v+ v  JZ MAIN2# b) x4 A1 G9 K1 d! f
  INC DH ;-) N" e# L7 E3 H2 Y6 ?2 _
  MOV [BX],AL+ G4 j% p0 b1 e2 q, F
  INC BX
  E0 @( h( L$ @! R8 H8 y* N/ x  _______________! [5 `' k! W% |
  MAIN2: INC DL8 e6 R* g- k% [8 c+ B& i
  MOV [DI],AL ;+
- d4 M2 c; p' U$ ?  INC DI4 `3 z6 _, c( R1 U( \4 D
  MAIN3: _______ MAIN1
/ x; t1 f# }, e- w# S  LEA SI,PDATA
" k5 M, @7 G7 Z, @; }  LEA DI,RESULT
; b4 m( i* e3 Z8 |+ H& P; N) ]  MOV [DI],DL+ `& P) g0 B+ x& ?& _" ?, ~9 h: X
  INC DI$ T+ o$ t2 J5 J; l# ]
  XOR CX,CX
5 h" l' o4 f  ]6 g/ }( F  MOV CL,DL) P6 T0 ?; T, |7 q2 {' L
  MAIN4: MOV AL,_______________6 |1 g1 I, N  w2 ~+ u% K
  MOV [DI],AL( T0 o4 ]8 U$ F2 m
  INC DI. t5 h% ^. {) U
  INC SI8 @; F9 V3 Y3 p* U& r6 D
  LOOP _______________1 Y) {) U% [6 Z6 U
  MOV [DI],DH9 M4 s9 l' Q, l9 j9 q' g. n
  INC DI  ?% {6 m# l/ w* X& ^& _
  XOR CX,CX
  s! {; c- I2 W5 S) G( c  MOV CL,DH
% d# x6 A. y) B$ ?  MOV BX,OFFSET NDATA+ i& D  h' Q1 z# p. x# p4 r1 I
  MAIN5: MOV AL,[BX]0 @! h& ^4 n( j, e
  MOV [DI],AL. g' K2 `+ r6 P, p- f
  INC DI
  Z/ T/ R1 o! h" T0 L6 y3 S' j( W  _______________
) U/ f* K( h' }9 Z4 n  LOOP MAIN5- |+ D, x$ u) x; j7 H
  ;****END****, V- C- I' `- T; `9 z
  LEA DX,RESULT ;结果数据区首址6 B8 E; ?$ J. _: R
  LEA SI,NAME1 ;结果文件名" q& V4 o' X, ~( s0 C2 w
  MOV CX,N+2 ;字节数
* f2 n2 X6 ^$ B$ {  j$ a6 F  CALL SAVE ;保存结果到文件
/ B2 j7 J$ ?% U3 _3 G  RET' N0 }4 o/ E3 y. O( O7 ^
  START ENDP
7 h- {" Y: P; i* @4 v, P' _  CODE ENDS. W8 T7 t# Z& W: H$ \. P# O, q2 U
  END START
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-21 22:22 , Processed in 0.425449 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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