這裡的排序,用的是氣泡排序。
首先,先是說一下找非負數的想法,負數「test 80h」之後不為0,我們可以用這個性質來做。
;(1)find positive number
lea si, first
lea di, second
mov cx, n
llp: mov al, [si]
test al, 80h
jnz go
mov [di], al
inc di
inc bl ;bx用來記錄有多少正數
go: inc si
loop llp
我們可以這樣子去實現。
接下去就是排序的做法了,我們可以利用氣泡排序來完成這個,就是n-1次簡單的比較就可以完成任務了,每次比較會讓從1到n-1的每個元素和後面的比較大小,然後轉移即可。
stack segment para 'stack'
db 100 dup(?)
stack ends
data segment
data ends
assume ds: seg1, cs: seg2
seg1 segment
first db 5, -8, 3, 9, -2, -5, 7, -9, 0, 5, 4, 9, -6, 1, -1, 8, -3, 6, 2, -7, 0, -4
n equ $-first
second db 30 dup(?)
seg1 ends
seg2 segment
start:
mov ax, seg1
mov ds, ax
mov es, ax
xor bl, bl
;(1)find positive number
lea si, first
lea di, second
mov cx, n
llp: mov al, [si]
test al, 80h
jnz go
mov [di], al
inc di
inc bl ;bx用來記錄有多少正數
go: inc si
loop llp
;(2)sort slove
dec bl
;38 row
mov dx, 13
xor ax, ax ;init()
lop1:
dec dx
mov cx, dx
lea si, second
lop2:
mov al, [si]
inc si
mov ah, [si]
cmp al, ah
ja exc
loop lop2
exc: mov [si], al
mov [si - 1], ah
loop lop2
cmp dx, 0
jnz lop1
last:
seg2 ends
end start
迴圈程式設計實驗
迴圈程式設計實驗 實驗目的 掌握迴圈程式的設計方法。實驗裝置 pc 微機一台。實驗內容及說明 本實驗要求通過求某資料區內負數的個數來表現迴圈程式的結構形式。要求 實驗程式在資料區中存放一組資料,為統計負數的個數,逐個判斷區內的資料,然後將所有資料中凡是符號位為1 的資料的個數累加起來,即得到區內所包...
組合語言 實驗3 迴圈和子程式設計
實驗三 迴圈和子程式設計 1 掌握子程式 巨集和中斷程式的設計方法 2 熟悉在pc機上建立 彙編 連線 除錯和執行8086 8088組合語言程式的過程。1.編寫乙個子程式計算z f x,y x y x y x,y,z有符號數記憶體字數 要求通過堆疊傳送輸入引數,輸出引數通過ax傳遞。要求輸入輸出實現...
彙編 實驗8 子程式設計
1 程式設計求下列和值 s 1 2 3 1 2 3 4 1 2 3 4 5 將和值存放在資料段偏移位址為 1000h起始的單元中。data segment org 1000h x db 100 dup data ends code segment assume cs code,ds data sta...