请编制程序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 AH,0 (2) NEG AH (3) NEXT(4) AH,AH (5) ADD AL,1 解析:每个数除以5之后首先判断余数是否为负,即比较AH与零;如果为负,要将AH中的值用NEG指令取绝对值后再执行后续操作,即计算余数绝对值的两倍,若小于商直接舍去(四舍),跳至NEXT(第3空)执行存储操作,否则加一(第五空,五入)后存储。
以下关于浮点加减运算舍入处理的描述中,正确的是(6)。A.“0舍1入”法最大误差是最低位上的-1/2 计算机类考试 2020-05-26 …
正四面体的四个面上分别写有数字0,1,2,3,把两个这样的四面体抛在桌面上,则露在外面的6个数字恰 数学 2020-06-14 …
如图是一个4×4的表格,每个方格中填入了数字0或1.按下列规则进行“操作”:每次可以同时改变某一行的 数学 2020-11-01 …
如图是一个4×4的表格,每个方格中填入了数字0或1.按下列规则进行“操作”:每次可以同时改变某一行的 其他 2020-11-01 …
解排列组合题,例6.用0,1,2,3,4,5这六个数字组成无重复数字的五位数,分别求出下列各类数的个 数学 2020-11-18 …
观察下面前三幅图,我们把每幅图中从A点到B点的最短路径用含有数字0、1的十位数字串来表示,根据规律第 其他 2020-11-26 …
有甲、乙两个不透明的口袋,甲袋中有3个球,分别标有数字0,2,5;乙袋中有3个球,分别标有数字0,1 数学 2020-11-29 …
5、按要求选数字卡片组成数.0、1、3、8(1)组成的数是3的倍数,而且是两位数.(用上面四个数字组 数学 2020-12-23 …
“2012”含有数字0,1,2,且有两个数字2.则含有数字0,1,2,且有两个相同数字的四位数的个数 其他 2020-12-27 …
正四面体的四个面上分别写有数字0,1,2,3,把两个这样的四面体抛在桌面上,则露在外面的6个数字恰好 数学 2021-01-12 …