組合語言 100個數中的最大數

2021-10-05 12:00:32 字數 1016 閱讀 6295

已知,從baffuer開始存放了100個帶符號的字資料,試編寫一完整的組合語言程式,求出這100個數中的最大數,並將結果存放到max單元。

dseg segment

n equ 100h

m dw n dup (?)

data dw ? ;m+2n單元

addr dw ? ;m+2(n+1)單元

dseg ends

cseg segment

main proc far

assume cs: cseg, ds: dseg

start: push ds ;設定返回dos

sub ax, ax

push ax

mov ax, dseg

mov ds, ax ;給ds賦值

begin: mov cx, n ;迴圈計數器

lea di, m

mov ax, [di] ;取第乙個數

mov addr, di ;記下絕對值最大的數的位址

cmp ax, 0 ;此數是正數嗎?

jns zhen ;是正數,即為絕對值,轉去判斷下乙個數

neg ax ;不是正數,變為其絕對值

zhen: mov bx, [di]

cmp bx, 0 ;此數是正數嗎?

jns comp ;是正數,即為絕對值,轉去比較絕對值大小

neg bx ;不是正數,變為其絕對值

comp: cmp ax, bx ;判斷絕對值大小

jae address

mov ax, bx ;(ax)<(bx),使(ax)中為絕對值最大的數

mov addr, di ;記下絕對值最大的數的位址

address: add di, 2

loop zhen

mov data, ax ;記下此數

retmain endp

cseg ends ;以上定義**段

end start

100萬個數中找到最大的100個數

1.演算法如下 根據快速排序劃分的思想 1 遞迴對所有資料分成 a,b b b,d 兩個區間,b,d 區間內的數都是大於 a,b 區間內的數 2 對 b,d 重複 1 操作,直到最右邊的區間個數小於100個。注意 a,b 區間不用劃分 3 返回上乙個區間,並返回此區間的數字數目。接著方法仍然是對上一...

在100w個數中找最大的前100個數

1.演算法如下 根據快速排序劃分的思想 1 遞迴對所有資料分成 a,b b b,d 兩個區間,b,d 區間內的數都是大於 a,b 區間內的數 2 對 b,d 重複 1 操作,直到最右邊的區間個數小於100個。注意 a,b 區間不用劃分 3 返回上乙個區間,並返回此區間的數字數目。接著方法仍然是對上一...

找前n個最大數 生成100個不重複的隨機數

假設有10000個數,需要找到裡面前10個最大數。樸素的解法當然是先排序,然後輸出前10 個數,時間複雜度最低為o logn 思考我們可以維護乙個10個元素大小的容器,用在某種演算法使得這個容器裡面維護的就是我們需要的10個數。先從vector開始思考,用前10和數初始化,然後不斷的遍歷剩餘元素,找...