接口技术实验五、查找实验

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_39071593/article/details/83963636

一、 实验目的
掌握用汇编语言编写查找和排序程序的思路和方法。
二、 实验原理
查找与排序是非数值程序设计中两个重要的技术问题。所谓查找,就是在大量的信息量中寻找一个特定的信息元素。具体地说,就是根据给定的某个值,在表中确定一个关键字等于给定值的记录或数据元素。关键字是数据元素或记录中某个数据项的值,用它可以标识一个数据元素或记录。排序是计算机程序设计中的另一种重要运算,它的功能是将一个数据元素的无序序列调整成为一个有序序列,以提高查找的效率。
三、 实验内容
若要在有序列中,搜索是否有关键字KEY,首先可以与队列中的第一个元素相比较,若KEY小(若有序列是按升序排序,则此列中不会有此关键字;其次可与队列中段最后一个元素相比较,如KEY大,则此列中也不会有此关键字。然后就可以通过逐个比较进行查找。其流程图如图3.1所示。要求在一个有序列-90,-30,00,20,50,600,3000,15000,22000,32000中搜索是否有关键字3000。
程序框图:
在这里插入图片描述
请用REPNZ SCASW指令与不用该指令完成程序。
四、 实验报告
1.简述本次实验的内容。
2.画出编程流程图。
3.编写程序并注释。
4.写出自己在调试过程中遇到的难点及如何解决等心得体会。

改天再补一下详细注释,嘿嘿

;用REPNZ SCASW指令
DATAS SEGMENT
    DATA1 DW -90,-30,00,20,50,600,3000,15000,22000,32000   
DATAS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS
START:
	MOV AX,DATAS
	MOV ES,AX
	LEA DI,DATA1
	MOV AX,3000 ;要找的数据
	MOV CX,20
b:REPNE SCASB
	JNE a
a:SHR DI,1
	ADD DI,30H
	MOV DX,DI
	MOV AH,02
	INT 21H
	MOV AH,4CH
	INT 21H
CODES ENDS
    END START
;不用REPNZ SCASW指令
DATAS SEGMENT
    DATA1 DW -90,-30,00,20,50,600,3000,15000,22000,32000   
DATAS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS
START:
    MOV AX,DATAS
    MOV DS,AX
    LEA BX,DATA1
    MOV BX,OFFSET DATA1
    MOV CX,10
    MOV AX,3000 ;要找的数据
    CMP AX,[BX]
    JL DOS
    CMP AX,[BX+18]
    JG DOS
    MOV SI,0
AAAA:CMP AX,[BX+SI]
  	JE BBB
  	INC SI
  	INC SI
    LOOP AAAA
    JMP NO
BBB:
	SHR SI,1
	MOV AX,SI
	ADD AL,30H
  	MOV DL,AL   
    JMP DONE
 NO:
 	MOV AH,02H
    MOV DL,'-'
    INT 21H
  	MOV DL,'1'
  	JMP DONE
DONE:
	MOV AH,02H
    INT 21H
DOS:MOV AH,4CH
    INT 21H
CODES ENDS
    END START

猜你喜欢

转载自blog.csdn.net/qq_39071593/article/details/83963636