彙編實驗(迴圈程式設計)(排序以及找非負數)

2021-09-29 11:17:30 字數 1565 閱讀 3567

這裡的排序,用的是氣泡排序。

首先,先是說一下找非負數的想法,負數「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...