计算机等级考试三级PC上级题精选31-40(5)

学人智库 时间:2018-02-09 我要投稿
【www.unjs.com - 学人智库】
上机题之35

以下内容为程序代码:

;* 请编制程序PROG1.ASM, 其功能是: 在递增的有序字节数组中

;* 删去一个指定的数组元素,该元素在程序的数据段中用符号常量X

;* 表示(在数组元素中只有一个这样的元素)。 为了保持原数组个

;* 数不变, 将数组的最后一个元素填0。假设数组元素均为正数。

;* 例如, 在下面的数组中删去数组元素03H

;* 01H,02H,03H,04H,05H....

;* 结果为 01H,02H,04H,05H,.........,00H

;* 部分程序已经给出,其中原始数据由过程LOAD从文件INPUT1.DAT

;* 中读入SOURCE开始的内存单元中, 转换结果要求从RESULT开始存放,

;* 由过程SAVE保存到文件OUTPUT1.DAT中。

;* 填空BEGIN和END之间已经给出的一段源程序使其完整,填空处已

;* 经用横线标出, 每个空白一般只需要填一条指令或指令的一部分(指

;* 令助记符或操作数), 考生也可以填入功能相当的多条指令, 或删去

;* BEGIN和END之间原有的代码并自行编程来完成要求的功能。

;* 对程序必须进行汇编,并与IO.OBJ链接产生PROG1.EXE执行文件,

;* 最终运行程序产生结果(无结果或结果不正确者均不得分)。

EXTRN LOAD:FAR,SAVE:FAR

N EQU 10

DSEG SEGMENT

SOURCE DB N DUP(?)

X EQU 3 ; 指定的删除元素

RESULT DB N DUP(0)

NAME0 DB ’INPUT1.DAT’,0

NAME1 DB ’OUTPUT1.DAT’,0

DSEG ENDS

SSEG SEGMENT STACK

DB 256 DUP (?)

SSEG ENDS

CSEG SEGMENT

ASSUME CS:CSEG,SS:SSEG,DS:DSEG

START PROC FAR

PUSH DS

XOR AX,AX

PUSH AX

MOV AX,DSEG

MOV DS,AX

MOV ES,AX

LEA DX,SOURCE

LEA SI,NAME0

MOV CX,N

CALL LOAD https://www.unjs.com/