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

请编制程序PROG1.ASM,其功能是:将内存中的20个有符号字节数据依次除以5,并按照四舍五入原则(即余

题目

请编制程序PROG1.ASM,其功能是:将内存中的20个有符号字节数据依次除以5,并按照四舍五入原则(即余数绝对值的2倍小于除数,则舍去)将商存入指定的内存区域。

例如:

内存中有:10H,01H,27H,00H,FFH,FSH,……

结果为:03H,00H,08H,00H,00H,FEH,……

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

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

对程序必须进行汇编,并与IO.OBJ链接产生PROG1.EXE执行文件,最终运行程序产生结果(无结果或结果不正确者均不得分)。调试中若发现整个程序中存在错误之处,请加以修改。

试题程序:

EXTRN LOAD:FAR,SAVE:FAR

N EQU 20

X EQU 5

DSEG SEGMENT

SOURCE DB N DUP(?)

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:CSEC, SS:SSEC, 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

; *** BEGIN ***

LEA SI,SOURCE

LEA DI,RESULT

CONT: LODSB

CBW

MOV DL,X

IDIV DL

(1) ; 余数为负数吗

JNS PLUS

(2) ; 求绝对值

ADD AH,AH

CMP AH,DL

JB (3)

SUB AL,1

JMP NEXT

PLUS: ADD (4)

CMP AH,DL

JB NEXT

(5)

NEXT: STOSB

CMP SI,N

JB CONT

; *** END ***

LEA DX,RESULT

LEA SI,NAME 1

MOV CX,N

&nb

参考答案
正确答案:(1)CMP AH0 (2) NEG AH (3) NEXT(4) AHAH (5) ADD AL1
(1)CMP AH,0 (2) NEG AH (3) NEXT(4) AH,AH (5) ADD AL,1 解析:每个数除以5之后首先判断余数是否为负,即比较AH与零;如果为负,要将AH中的值用NEG指令取绝对值后再执行后续操作,即计算余数绝对值的两倍,若小于商直接舍去(四舍),跳至NEXT(第3空)执行存储操作,否则加一(第五空,五入)后存储。
看了请编制程序PROG1.ASM,...的网友还看了以下: