循环程序设计

来源:互联网 发布:济南搜索引擎优化外包 编辑:程序博客网 时间:2024/05/18 18:14

题目直接给出:)

一、实验目的: 掌握汇编语言中循环程序的设计与实现,并熟悉数组的使用。熟悉汇编语言 中相应排序算法的实现。  
二、实验内容: 设有两个数组 A 和 B,其数据均为 20 个。编程实现将两个数组中的数据各 自按由小到大的顺序存放。之后,再将既在 A 数组中出现又在 B 数组中出现的 整数按照由大到小的顺序存放于数组 C 中。  
三、实验步骤:  

(1)、分析所要解决的问题,选择合适的循环结构与排序算法。  

(2)、自己画出清晰详细的程序流程图。  

(3)、编写程序,上机调试运行。  
四、实验时间: 共 3 学时。  
五、实验要求: 

(1)、完成实验报告,画出程序流程图。 

(2)、上交程序源代码,要有详细的程序注释。 

(3)、要求在屏幕上输出数组A和B排序前及排序后的内容,以及数组C 的内容。 

(4)、进一步熟悉汇编程序的撰写、汇编、连接、运行和调试的全过程。 

***********************************************************************************************************************

先进行题目分析,步骤共有两个:首先是排序,这里我们选用冒泡排序的算法,由于博客不支持贴图,我们就理解一下就行了,冒泡嘛…………,自古以来流程图都一个样的;其次就是再依次扫描一下A和B两个数组了循环一遍就可以了。

下面我们来具体的代码实现:

首先,定义需要用到的变量:

DATAS SEGMENT    A DW 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19     COUNTA EQU ($-A)/2    B DW 19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0    COUNTB EQU ($-B)/2    D DW 20 DUP(?)DATAS ENDS

然后对A和B用冒泡算法排序有(这里给出对A的排序):

    ;A排序************************************************    MOV CX,COUNTA-1I10:XOR SI,SIXOR DI,DII20:MOV AX,A[SI]MOV BX,A[SI+2]CMP AX,BXJL  I30MOV A[SI],BXMOV A[SI+2],AXI30:ADD SI,2INC DICMP DI,CXJB  I20Loop I10

按照之前的流程,下面扫描一遍A,B,得出C数组:

    MOV AX,COUNTA    ADD AX,AX    SUB AX,2    MOV SI,AX    MOV AX,COUNTB    ADD AX,AX    SUB AX,2    MOV DI,AX    XOR BP,BPI12:CMP SI,0JNE I22CMP DI,0JNE I22JMP I25I22:JNE I23MOV BX,A[SI]MOV D[BP],BXADD BP,2SUB SI,2SUB DI,2JMP I12I23:MOV BX,B[DI]CMP A[SI],BXJG I24SUB DI,2JMP I12I24:SUB SI,2JMP I12I25:        MOV AH,4CH    INT 21H



这样,我们就得到最终的结果了,现在为止还没有看到排好序的A和B以及新生成的C数组,不用担心,我们可以用前一章的21H中断来输出每一个元素,也可以用debug来看一下内存中的结果。

0 0
原创粉丝点击