a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 67|回复: 0

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

[复制链接]
发表于 2012-7-31 20:55:16 | 显示全部楼层 |阅读模式
 请编制程序,其功能是:内存中连续存放着两个由8位有符号整数组成的序列Ai和Bi(i=0…9),Ai在前,Bi在后。求Ci,Ci=|Ai+Bi|。结果Ci用字单元按C0,…,C9的顺序存放。  例如:0 [+ Y* R  m# L: a4 f3 t
  序列Ai为: 98H,53H,39H…4 L. `8 f+ K! p
  序列Bi为: 80H,67H,94H…
/ }/ n$ n0 M% r4 |. O  序列Ci为: 00E8H,00BAH,0033H…
0 ?  n* V' A2 J- L4 w( Q  部分程序已给出, 其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中。运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。3 t1 O( r* p+ L: n0 x$ ~8 @
  填空BEGIN和END之间已给出的一段源程序使其完整(空白已用横线标出,每行空白一般只需一条指令, 但采用功能相当的多条指令亦可),或删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。
5 N* E6 Y$ T+ `8 L  对程序必须进行汇编,并与IO.OBJ链接产生PROG1.EXE执行文件,最终运行程序产生结果(无结果或结果不正确者均不得分)。调试中若发现整个程序中存在错误之处, 请加以修改。
* A( M- E4 q- k  P. W2 l- D7 i  w  试题程序:9 o- D( @% G9 ]& b- t
  EXTRN LOAD:FAR,SAVE:FAR( ]( t' W+ h: K
  N EQU 10 ;每个序列的长度  S1 i8 z( N' |0 }
  STAC SEGMENT STACK+ x. A- [: |$ D& ~0 q3 }3 S1 w
  DB 128 DUP(?)
( V/ [0 Y5 g2 O1 c9 b7 `  STAC ENDS
" q1 q7 e( F6 N% w- X  DATA SEGMENT6 [" `8 \  m/ _
  SOURCE DB N*2 DUP(?) ;顺序存放A0,L,A9,B0,L,B9' P4 n; D% V3 Q" }  I
  RESULT DW N DUP(0) ;顺序存放C0,L,C9) `0 b5 E. @+ q* N$ K
  NAME0 DB 'INPUT1.DAT',0
/ j  S/ y4 s6 P- J( r9 s6 y$ x7 D  NAME1 DB 'OUTPUT1.DAT',0
, K  D9 ^+ B5 Y2 G- A  DATA ENDS
5 W8 L; T( ^$ `, X7 H, w7 j: a% K  CODE SEGMENT0 I" D& s9 Q- \% `
  ASSUME CS:CODE,DS:DATA,SS:STAC7 \; |9 Z3 g6 w: R* [1 f, O" w
  START PROC FAR
! ^' u2 J. ^4 P  PUSH DS
' c: c6 T  p4 z2 w6 M" x/ ~( X. O; W  XOR AX,AX1 _! w" O' {8 t+ d
  PUSH AX( V" [6 E( m$ P9 d. D% D
  MOV AX,DATA- r( E& V" Z. x8 b* B* h
  MOV DS,AX
5 B7 A/ h$ c- f: o. Z  LEA DX,SOURCE ;数据区起始地址
3 U: s3 p5 f2 `+ ]3 t- X  LEA SI,NAME0 ;原始数据文件名* n' k% ]$ @6 `- E
  MOV CX,N*2 ;字节数
. `% \8 r0 q  m3 E) k' o+ H  CALL LOAD ;从'INPUT1.DAT'中读取数据
7 Q% c6 J7 H+ t. y& ?: Z5 d  ;****BEGIN****
* X2 m' t/ i8 c% v$ N' e  MOV DI,OFFSET RESULT ;结果从RESULT开始存放
; D+ X5 R$ Y/ E9 [1 ^- R  MOV BX,0
, e6 s: a0 o! m+ S3 i9 i; d# B, H. p  MOV CX,_______________
- {  B" \! Q8 h1 r  PRO: MOV AH,08 D% \1 x6 _# M2 l
  MOV AL,_______________ ;序列Bi中的一个整数
9 q+ a; h1 z4 p/ |  MOV DL,AL ;暂存Bi  ^% X2 c% s& F, Y0 J% @
  ADD AL,_______________ ;Ci=Bi+Ai6 y2 B0 V( p+ Y, v# U3 o( {) W
  JNO STAY ;无溢出转STAY
3 S# K: U' S) ?5 v8 W  JUMP1: MOV AH,00 ;有溢出
) x8 {5 i4 Q5 z  o# {  Y) W  ADD DL,0
, ?" L# r+ d, l% R, B% e  JNS JUMP ;Bi是正数(为一个正数加上一个正数,结果为
' ^! L+ g# \) W  ;负数的溢出情况)转JUMP(AH已为00H)! @( D' ]2 b1 ^  x$ v( X2 b; \9 f! O
  MOV AH,_______________ ;Bi是负数(为一个负数加上一个负数,结果为6 k# n$ B# T& \
  ;正数的溢出情况)将结果变为负数. O, \! r5 s+ o& R+ g
  JMP __________________
5 d8 k4 Y# }0 @  v  STAY: ___________________________ ;AL中数的符号扩展到AH
8 Y5 Q1 I0 D# \6 g9 p0 o: a: z" [  JUMP: AND AX,AX( T" e5 ?) o, v0 D2 c
  ________ PLP2 |. O; j2 ]) N! w
  NEG AX7 Q! j( E" v# M. o2 `
  PLP: MOV [DI],AX+ C  t0 S6 n" Z# C+ J& R) e$ _
  ADD DI,2! ~2 h+ V) @( ?* e
  INC BX+ m) l: V" B  U6 N% A
  DEC CX7 n) R0 m, w5 b# C; M# d
  JNZ PRO7 o4 P' W! @4 K. ]7 f/ S
  ;****END****- H; R5 o, c3 G0 l
  LEA DX,RESULT ;结果数据区首址' \( n0 P8 F) M7 I! ~4 E
  LEA SI,NAME1 ;结果文件名
/ m) i$ ^" [  g8 l* Q  MOV CX,N*2 ;字节数8 J4 e  M/ q9 v7 |
  CALL SAVE ;保存结果到文件
, U+ I# p+ @$ U" }) ]  RET+ j. g+ T2 W/ y  @
  START ENDP& r, y1 b' p. y# S$ w# Y
  CODE ENDS
& f% U7 a% K6 z% N  END START
回复

使用道具 举报

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

本版积分规则

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

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

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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