a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 57|回复: 0

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

[复制链接]
发表于 2012-7-31 20:55:16 | 显示全部楼层 |阅读模式
 请编制程序,其功能是:内存中连续存放着两个有符号字节数序列AK和BK(k=0,…,9),求序列CK,CK=AK+BK(CK以有符号字的形式按C0,…,C9的顺序连续存放)。  例如:
! d. R9 j6 E" _+ o/ C3 l" c/ U; Y  序列AK为 80H(-128D),31H(+49D),61H(+97D),7FH(+127D)…
- _9 k- l/ T- w3 S/ }  序列BK为 80H(-128D),01H(+1D),F1H(-15D),7FH(+127D)…
* G1 ?/ O7 R$ f, E, O  则结果CK为 FF00H(-256D),0032H(+50D),0052H(+82D),00FEH(+254D)…5 P5 L  Q/ c7 f0 z9 E/ z
  部分程序已给出, 其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中。运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。2 S6 X* G0 b8 {
  填空BEGIN和END之间已给出的一段源程序使其完整(空白已用横线标出,每行空白一般只需一条指令, 但采用功能相当的多条指令亦可),或删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。& W4 K) f8 M' J8 y7 ~0 ]: W
  对程序必须进行汇编,并与IO.OBJ链接产生PROG1.EXE执行文件,最终运行程序产生结果(无结果或结果不正确者均不得分)。调试中若发现整个程序中存在错误之处, 请加以修改。
9 Z$ C' E* M& \% M  {" |2 ~  试题程序:
* y( v( i+ {& M+ M& \  EXTRN LOAD:FAR,SAVE:FAR* C/ z3 h, [! B1 C9 ]
  N EQU 10 ;每个序列的长度
( K$ H5 n! T. _. _* x: y0 x  STAC SEGMENT STACK
( \6 r# a: S9 P( r7 T3 V6 P  DB 128 DUP(?)
8 E# Z6 I' a4 h* d, _  STAC ENDS
' J* c# k9 A1 S' ?" |7 d  DATA SEGMENT
. s0 f) e; |9 A7 q* m; }  SOURCE DB N*2 DUP(?) ;顺序存放A0,…,A9,B0,…,B9
: g; t$ h% h! [" ^5 Q2 U  RESULT DB N DUP(0) ;顺序存放C0,…,C92 q1 Y  b9 b1 y' j
  NAME0 DB 'INPUT1.DAT',0: V# i6 _* n3 c+ U( k. l
  NAME1 DB 'OUTPUT1.DAT',0" y/ n+ k( n' C  ^
  DATA ENDS
, m9 w( O5 X' N$ e  M  CODE SEGMENT- }1 ]* b# I* B( d8 ~! d+ |
  ASSUME CS:CODE,DS:DATA,SS:STAC
) u4 G6 Z/ ^" M2 {" y9 e% j3 W  START PROC FAR5 h3 \, }8 l/ b
  PUSH DS
3 K  h- M6 T5 f5 ~1 d2 {  XOR AX,AX
5 o- G* v7 z: v- |! p  PUSH AX' U) J# z% F7 d- @
  MOV AX,DATA; c/ n% `+ U6 W8 N
  MOV DS,AX
/ r# i: V* j" j1 q' Y5 Z8 c  LEA DX,SOURCE ;数据区起始地址! p8 P4 W. i2 W" Y! W: U9 |" u6 u
  LEA SI,NAME0 ;原始数据文件名
4 m, p; ]0 x- f2 ~$ q* n# L. g- k. H  MOV CX,N*2 ;字节数
0 E1 q' ^6 t, X0 D  CALL LOAD ;从'INPUT1.DAT'中读取数据. g/ x7 a4 p& q
  ;****BEGIN****
' p, r: o& k7 M9 G9 b+ C6 |  MOV DI,OFFSET RESULT ;结果从RESULT开始存放1 V2 {1 Z. d3 i5 ~. j. L
  MOV BX,0
) `, H& ?- j( |  MOV CX,N- T. L/ G# c7 _; j  r! D
  PRO: MOV AH,0
- G, M" F. e5 d8 j  MOV AL,_______________ ;序列Bk中的一个字节8 U9 W- B$ ?$ }( c, q# E
  MOV DL,AL ;暂存Bk# S7 w0 w! {) q$ a3 ~" ^( F: ]* U
  ________ AL,SOURCE[BX] ;Ck=Bk+Ak
% w1 ~: u; U9 C* u; p  JNO STAY ;无溢出转STAY
2 f% i7 S' ~1 E7 z3 T+ k* b- _  JUMP1: MOV AH,00 ;有溢出
+ D7 t& h7 p0 Q. I  ADD DL,0* Z3 I1 N$ z6 A9 O. b
  JNS JUMP ;Bk为正数(为一个正数加上一个正数,结果为
6 c) L; I, z$ m8 W  ;负数的溢出情况)转JUMP(AH已为00H)% K  i( a+ X# Z
  MOV AH,_______________ ; Bk为负数(为一个负数加上一个负数,结果为) k# p( Y8 p: T9 x; y  i9 `
  ;正数的溢出情况)将结果变为有符号字的形式
- @" x* f# e7 W# I) k  ;(为负)" `, ^: P0 j$ x  t7 T
  JMP __________________' t  C2 h5 ~" u+ L4 [
  STAY: _________ ;AL中数的符号扩展到AH,无符号字节变成无符
% _( m* B) ~) s  [  ;号字,有符号字节变成有符号字5 Q( G; V7 ]* {4 I- [/ [
  JUMP1: MOV [DI],AX
2 o9 \9 l0 x! t/ m$ G  ADD DI,26 [# [, Q- h" K+ P4 c) y: E2 D
  INC BX
" \6 O+ _4 j' n8 q8 o6 G  DEC CX( o& k2 p" c, Q( {1 w
  JNZ PRO% R, G  h+ w, y$ [% ^
  ;****END****
8 K' D+ w( N4 ?  LEA DX,RESULT ;结果数据区首址
+ h$ ^" S% p% D: Q3 a4 ~( n8 F  LEA SI,NAME1 ;结果文件名
3 o  [) S$ d: |* Z  P. Q# R  MOV CX,N*2 ;字节数( t0 |. A# s# b! r
  CALL SAVE ;保存结果到文件
& O) }5 [( p6 F0 Z9 ^  RET" M; P0 n& @& I3 ?& h% u& j; }
  START ENDP
- w2 i5 b( N/ Z3 w  CODE ENDS
" r+ G1 O' ~6 B* q  END START
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-18 08:04 , Processed in 0.898792 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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