编制一个程序,实现如下功能:将内存中连续存放的10个八位二进制无符号数按照从大到小的顺序排列。
编制一个程序,实现如下功能:将内存中连续存放的10个八位二进制无符号数按照从大到小的顺序排列。
例如:
内存中有:3EH,0FEH,5DH……(假设后面的7个数都小于3EH)
结果为: 0FEH,5DH,3EH……(后面跟7个字,按照从大到小的顺序排列)。
部分程序已经给出,其中原始数据由过程LOAD从文件INPUT.DAT中读入以SOURCE开始的内存单元中。运算结果要求从RESULT开始的内存单元存放,由过程SAVE保存到文件OUTPUT.DAT中。
请填空BEGIN和END之间已给出的源程序使其完整,空白已经用横线标出,每行空白一般只需要一条指令,但采用功能相当的多条指令也行,考生也可以删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。
对程序必须进行汇编,并与IO.OBJ链接产生可执行文件,最终运行程序产生结果。调试中若发现整个程序中存在错误之处,请加以修改。
【试题程序】
EXTRN LOAD:FAR,SAVE:FAR
N EQU 10
SSEG SEGMENT STACK
DB 256 DUP (?)
SSEG ENDS
DSEG SEGMENT
SOURCE DB N DUP (?)
RESULT DB N DUP (0)
NAME0 DB 'INPUT.DAT',0
NAME1 DB 'OUTPUT.DAT',0
DSEG 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 ********
MOV SI,OFFSET SOURCE
MOV DI,OFFSET RESULT
MOV CX,N
AGAIN0: MOV AX, [SI]
MOV [DI],AX
ADD SI, (1)
(2)
LOOP AGAIN0
CLD
MOV BX,N-1
AGAIN1: MOV SI,OFFSET RESULT
MOV CX,BX
AGAIN2: LODSB
CMP [SI],AX
(3)
XCHG [SI],AX
(4)
NEXT: LOOP AGAIN2
(5)
JNZ AGAIN1
;******** END ********
LEA DX,RESULT
LEA SI,NAME1
MOV CX,N
CALL SAVE
RET
START ENDP
CSEG ENDS
END START
(1)1 (2)ADD DI,1 (3)JBE NEXT (4)MOV[SI-1],AX (5)DEC BX 解析:本题是一道降序排列题,程序首先是将以SOURCE开始的内存单元中的数据传送到RESULT中,利用循环AGAIN0实现。在循环中,需要不断地改变指针,但由于题中的变量为字节型,因此指针的改变为1,即第一个空白处应填1。指向SOURCE的指针增加1的时候,指向RESULT的指针也应该增加1,所以第二个空白处应填ADD DI,1。
接下来的程序便是对数据进行从大到小排列,CLD使指针向着增加的方向移动。在对两个数据进行比较后,因为要求从大到小排列,所以小的数据要往后移,若后面的数据较小,则不需要交换,直接进行下一次比较,所以第三个空白处应填JBE NEXT。若后面的数据大,则在进行数据交换以后需要将大的数据装入前面的存储单元,因此第四个空白处应填MOV[SI-1],AX。每一轮比较后,参加比较的数据的较小者都被放到了最后,这样只需要N-1轮比较就可以得到正确的排序。排序轮次的控制由BX寄存器来实现,因此最后一个空白处应填DEC BX。
内聚是从功能角度来度量模块内的联系。按特定次序执行元素的模块属于()。A.顺序内聚B.过程内聚C.逻 计算机类考试 2020-05-24 …
以下不属于一级分行测试模板内部监督中内控合规管理控制评价环节评价点的是( )。A.按计划、按程序 职业技能鉴定 2020-05-27 …
帮我做一题财务会计的题目某企业甲产品单位工时定额40小时,经过三道工序制成.第一道工序定额为8小时 数学 2020-06-14 …
计算机在计算时总是按一定的程序进行,下图是一个计算程序:+2→×(+5)→+(-7)→>150→停 其他 2020-06-20 …
用labview编写程序编写程序,设计一个简单的按钮测试系统。在前面板上添加一个按钮,要求完成以下 其他 2020-06-29 …
按动作先后顺序排列句子,把序号写在括号内按动作先后顺序排列句子,把序号写在括号内。()这时,老人动作 语文 2020-11-22 …
设在内存中有P1、P2、P3三道程序,并按照P1、P2、P3的优先次序运行,其内部计算和I/O操作时 数学 2020-12-05 …
设在内存中有P1、P2两道程序,并按照P1、P2的次序运行,其内部计算和I/O操作时间如下:P1:计 政治 2020-12-05 …
我正在编制程序,用两种方法实现二叉树的建立,并用递归算法实现二叉树的先序、中序、后序三种遍历。具体要 其他 2020-12-05 …
操作系统选择题,解释一下43.设在内存中有P1、P2两道程序,并按照P1、P2的次序运行,其内部计算 数学 2020-12-19 …