介面技術實驗五、查詢實驗
阿新 • • 發佈:2018-11-13
一、 實驗目的
掌握用匯編語言編寫查詢和排序程式的思路和方法。
二、 實驗原理
查詢與排序是非數值程式設計中兩個重要的技術問題。所謂查詢,就是在大量的資訊量中尋找一個特定的資訊元素。具體地說,就是根據給定的某個值,在表中確定一個關鍵字等於給定值的記錄或資料元素。關鍵字是資料元素或記錄中某個資料項的值,用它可以標識一個數據元素或記錄。排序是計算機程式設計中的另一種重要運算,它的功能是將一個數據元素的無序序列調整成為一個有序序列,以提高查詢的效率。
三、 實驗內容
若要在有序列中,搜尋是否有關鍵字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