早教吧 育儿知识 作业答案 考试题库 百科 知识分享
早教吧考试题库频道 --> 计算机类考试 -->计算机三级 -->

请编制程序PROG1.ASM,其功能是:内存中连续存放的20个8位有符号数(补码)是由一个8位A/D转换器采集

题目

请编制程序PROG1.ASM,其功能是:内存中连续存放的20个8位有符号数(补码)是由一个8位A/D转换器采集的双极性信号(Xn),现要求对该信号作如下限幅处理(处理后的信号记为Yn):

a) Yn=-100 Xn<-100

b) Yn=Xn ∣Xn∣≤100

c) Yn=100 Xn>100

例如:

Xn:68H,60H,8EH,38H,…

Yn:64H,61H,9CH,38H,…

部分程序已在PROG1.ASM中给出,请填空BEGIN和END之间已给出的源程序使其完整(空白己用横线标出,每行空白一般只需一条指令,但功能相当的多条指令亦可)或删除 BEGIN和END之间原有的代码并自行编写程序片段来完成要求的功能。

原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中,结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。

对程序必须进行汇编,并与IO.OBJ链接产生PROG1.EXE执行文件,最终运行程序产生结果(无结果或结果不正确者均不得分)。

试题程序:

EXTRN LOAD:FAR, SAVE:FAR

N EQU 20

M EQU 100

DSEG SEGMENT

SOURCE DW N DUP(?)

RESULT DW N DUP(0)

NAME0 DB 'INPUTI.DAT',0

NAME1 DB 'OUTPUT1.DAT',0

DSEG ENDS

SSEG SEGMENT STACK

DB 128 DUP(?)

SSEG ENDS

CSEG SEGMENT

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

START PROC FAR

PUSH DS

XOR AX,AX

PUSH AX

MOV AX,DSEG

MOV DS,AX

LEA DX,SOURCE ; 数据区起始地址

LEA SI,NAME0 ; 原始数据文件名起始地址

MOV CX,N ; 字节数

CALL LOAD ; 从INPUT1.DAT中读取数据

; **** BEGIN ****

LEA SI,SOURCE

LEA DI,RESULT

(1)

NEXT: MOV AX,[SI]

CMP AX,-M

(2) L1

CMP AL,M

(3)

MOV AL,M

JMP L2

L1: MOV AL,-M

L2: MOV [DI],AL

(4)

(5)

(6)

; **** END ****

LEA DX,RESULT ; 结果数据区首址

LEA SI,NAME1 ; 结果文件名起始地址

MOV CX,N ; 字节数

CALL SAVE ; 保存结果到OUTPUT1.DAT文件中

RET

START ENDP

CSEG ENDS

&nbs

参考答案
正确答案:(1)MOV CX20 (2) JL (3) JL L2(4) ADD SII (5) ADD DI1 (6) LOOP NEXT
(1)MOV CX,20 (2) JL (3) JL L2(4) ADD SI,I (5) ADD DI,1 (6) LOOP NEXT 解析:本题要求对20个数进行循环转换,但本题中没有设置计数器,所以应该在循环体前面的一个空白处设置计数器。程序中,比较指令后通常是转移指令,需要考虑一个比较操作后应做如何处理。在一个数据处理完毕并存入目的地址后,应准备处理下—个数据,所以应修改源操作数地址和目的操作数地址,并回到循环体开始部分重新进行操作。