;掃瞄陣列 (arrayscan.
asm)
;掃瞄陣列尋找第乙個非零數值
include irvine32.inc
.data
;intarray sword 0,0
,0,0
,1,20
,35,-
12,66,
4,0;intarray sword 1,0
,0,0
;候補測試資料
intarray sword 0,0
,0,0
;候補測試資料
;intarray sword 0,0
,0,1
;候補測試資料
nonemsg byte "a non-zero value was not found!",0
.code
main proc
mov ebx,offset intarray ;指向陣列
mov ecx,lengthof intarray ;迴圈計數器
l1:cmp word ptr [ebx],0
;將ebx暫存器內所儲存的數值取出將低16位於0比較,這樣會使得比較的兩個數字記憶體對齊
jnz found
add ebx,
2;指向下乙個元素,eax暫存器增加兩個位元組
loop l1 ;重複進行上述操作
jmp notfound ;如果經過上述迴圈並沒有找到非零數值那麼直接退出
found:
;如果找到需要找到的元素那麼執行這段**
movsx eax,word ptr [ebx]
;將ebx也就是元素序號送入eax並進行符號擴充套件,ptr指定可以和資料型別連用,確定間接定址定址暫存器指向的資料的大小
call writeint ;呼叫writeint進行資料顯示,注意最後的輸出是以有符號整數的形式出現的
jmp quit ;跳轉到結束為止
notfound:
mov edx,offset nonemsg ;呼叫顯示資訊函式的準備
call writestring
quit:
call crlf ;回車並且換行
call waitmsg ;等待使用者輸入乙個字元
exit ;退出程式
main endp
end main
線性搜尋中的「哨兵」技巧
線性搜尋的基本過程是將若干個資料從頭到尾,依次逐個比對,直到找到目標資料。假設有50個箱子,裡面分別裝有乙個寫有任意數字的紙條,箱子上面標有1 50的序號。現在要從這50個箱子當中查詢是否有箱子裝有寫著要查詢數字的紙條。假設我們的資料如下,我們要查詢的數字為8254 1 1952,2 4028,3 ...
輸出陣列中不重複,或者輸出特定次數的陣列
隨機生成1000個1 100之內的整數,統計出不重複的數值和其重複的次數 random rand newrandom int arr newint 1000 int unique newint 100 int count newint 100 int k 0 unique k rand.nextin...
瘋狂輸出 陣列中的折半查詢
上次我們說了 氣泡排序,還有選擇排序。今天我們講折半查詢。注意 折半查詢只能在有序的陣列裡用。原因是什麼?我們來寫一段 相信你會秒懂。public class lianxi1 int min 0 定義乙個最小值 int max array.length 1 定義乙個最大值 int mid min m...