编制一个程序,其实现的功能为:将内存中从SOURCE开始的区域里存放的20个字节的压缩BCD码转换为ASC
编制一个程序,其实现的功能为:将内存中从SOURCE开始的区域里存放的20个字节的压缩BCD码转换为ASCⅡ码,每个压缩的BCD码转换为两个ASCⅡ码,并在最高位加上奇校验位,结果存放到RESULT开始的内存区域。
例如:
内存中有:73H,45H……
则结果为:37H,B3H,34H,B5H……
部分程序已经给出,其中原始数据由过程LOAD从文件INPUT.DAT中读入以SOURCE开始的内存单元中。运算结果要求从RESULT开始的内存单元存放,由过程SAVE保存到文件OUTPUT.DAT中。
请填空BEGIN和END之间已给出的源程序使其完整,空白已经用横线标出,每行空白一般只需要一条指令,但采用功能相当的多条指令也行,考生也可以删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。
对程序必须进行汇编,并与IO.OBJ链接产生可执行文件,最终运行程序产生结果。调试中若发现整个程序中存在错误之处,请加以修改。
【试题程序】
EXTRN LOAD:FAR,SAVE:FAR
N EQU 20
DSEG SEGMENT
SOURCE DB N DUP(?)
RESULT DB N*2 DUP(0)
NAME0 DB 'INPUT.DAT',0
NAME1 DB 'OUTPUT.DAT',0
DSEG ENDS
SSEG SEGMENT STACK
DB 256 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
; ******** BEGIN ********
LEA SI,SOURCE
LEA DI,RESULT
MOV CX,N
AGAIN: MOV AL,[SI]
MOV AH,AL
(1)
AND AH,0FOH
(2)
MOV CL,4
(3)
POP CX
ADD AL,30H
(4) NEXT
OR AL,80H
NEXT: MOV [DI],AL
INC DI
ADD AH,30H
(5) NEXT1
OR AH,80H
NEXT1: MOV [DI],AH
INC DI
INC SI
LOOP AGAIN
; ******** END ********
LEA DX,RESULT
LEA SI,NAME1
MOV CX,N*2
CALL SAVE
RET
START ENDP
CSEG ENDS
END START
(1) ANDAL,0FH (2) PUSH CX(3) SHRAH, CL (4) JNP (5) JNP 解析:题目要求将压缩的BCD码转换为两个ASCⅡ码,则首先要将BCD码分离出来,转换为非压缩的BCD码,然后转换为 ASCⅡ码。最高位要求加奇校验位,所以要对转换以后的数据进行判断,如果数据中1的个数为奇数的话,则直接将其存储到结果存储区,否则要将数据的最高位变为1。
程序中,已经将数据的高4位分离到AH寄存器中,所以还需要将低4位的数据分离到一个寄存器中,有后面的程序可以看出应该分离到AL寄存器中,所以第一个空白处应填写AND AL,0FH。高4位数据分离到AH寄存器以后,需要将数据从高 4位移到低4位来,变成非组合的BCD码。由于移动的位数为4,所以需要使用CL寄存器,而CX寄存器被用来作为程序循环次数的控制器,所以需要在使用CL寄存器之前对CX进行入栈和出栈操作,即第二个空白处应填PUSH CX。第三个空白处执行的是右移操作,所以应填为SHR AH,CL。执行完数据分离以后,将非组合的BCD码转换为ASCⅡ码,转换的时候只需要将非组合的BCD码与30H执行与操作即可。转换完成后,要在量高位加奇校验位,即要对转换后数据中1的个数进行判断,所以最后两个空应填JNP,表示当数据中1的个数为奇数时跳转到数据存储的程序段执行,否则将数据的最高位变为1,然后再进行存储。
圆内接正三角形ABC的中心为O,半径为R,将其沿直线L向右翻滚,当正三角形滚一周时,其中心O经过的 数学 2020-04-11 …
已知3个类O、P和Q,其中,类O由类P的1个实例和类Q的1个或多个实例构成。能够正确表示类O、P和Q 计算机类考试 2020-05-26 …
如图,等边三角形ABO放在平面直角坐标系中,其中点O为坐标原点,点B的坐标为(-8,0),点A位于 数学 2020-06-08 …
如图所示为一长为L的均匀导线,现将其中点O悬挂起来得到平衡,如果将它的右半段弯折过来,使右端点与导 物理 2020-06-26 …
水平放置的△ABC的直观图如图,其中B′O′=C′O′=1,A′O′=32,那么原△ABC是一个( 其他 2020-06-27 …
把△ABC按斜二测画法得到△A′B′C′(如图所示),其中B′O′=C′O′=1,A′O′=32, 其他 2020-08-02 …
下列图案是晋商大院窗格的一部分.其中,“o”代表窗纸上所贴的剪纸.探索并回答下列问题:(1)第6个图 数学 2020-12-08 …
下列图案是晋商大院窗格的一部分.其中,“o”代表窗纸上所贴的剪纸.探索并回答下列问题:(1)第6个图 数学 2020-12-08 …
(2010•松江区二模)如图所示,长为L=4m轻杆可绕其中点O自由转动,初始时质量M=4kg的小物体 其他 2020-12-18 …
下列图案是晋商大院窗格的一部分.其中,“o”代表窗纸上所贴的剪纸.探索并回答下列问题:(1)第6个图 数学 2021-01-18 …