——南京理工大學2019秋季學期電子資訊工程專業《微機原理與應用綜合實驗》(1學分)
程式設計軟體emu8086。
;*******************************
;氣泡排序演算法+顯示輸出
;徐延賓
;*******************************
data segment
num db 0d3h,0f7h,3eh,34h,0e5h,20h,36h,3dh,38h,0e9h,3ch,0e2h,0ffh,0d3h,0c1h,0b2h,0a1h;待比較的數字
n equ $-num
data ends
code segment
assume cs:code,ds:data ;分配段
main proc far ;主過程
push ds ;標準程式前奏
xor ax, ax ;ax清零
push ax ;ax入棧
mov ax,data ;段位址分配
mov ds,ax
mov di,offset num ;取偏移位址
mov cx,0 ;cx置0,供迴圈判斷使用
mov ax,n ;ax記錄數字總個數
push ax ;ax入棧保護
dec ax ;ax自減一
camp1:mov bx,cx
call camp2 ;執行排序
cmp ax,0 ;判斷是否結束排序
ja camp1
pop ax ;ax出棧恢復,供顯示子程式使用
and ax,00ffh
call show_screen ;執行顯示子程式
retmov ah,4ch
int 21h
main endp
;*******************************
;子程式名:camp2
;子程式功能:實現氣泡排序演算法
;*******************************
camp2 proc near
cmp cx,ax
jb ca***
dec ax
mov cx,0000h
retca***:push ax
push cx
mov al,[di+bx]
mov cl,[di+bx+1]
and ax,00ffh
and cx,00ffh
cmp ax,cx
jb do1
pop cx
pop ax
inc cx
retdo1:xchg ax,cx ;滿足條件交換已比較的兩個數
mov [di+bx],al
mov [di+bx+1],cl
pop cx
pop ax
inc cx
retcamp2 endp
;*******************************
;子程式1名:show_screen
;子程式功能:實現數字個數的迴圈
;*******************************
show_screen proc near
mov bx,0000h ;bx賦值為零,供迴圈使用
show1:call show2
inc bx
cmp bx,ax
jb show1
retshow_screen endp
;*******************************
;子程式2名:show_screen
;子程式功能:實現數字每一位顯示
;*******************************
show2 proc near
push ax
mov ax,[di+bx]
mov cx,[di+bx]
and ax,000fh
and cx,00f0h
push bx
mov bx,cx
mov cl,4
shr bx,cl
mov cx,bx
pop bx
call js1 ;顯示兩位16進製制數的高位
mov cl,al ;顯示兩位16進製制數的低位
call js1
mov dl,' ' ;顯示兩位16進製制數之間的空格
mov ah,2
int 21h
pop ax
retshow2 endp
;*********************************************
;子程式3名:show_screen
;子程式功能:實現16進製制和ascii碼的轉換並顯示
;*********************************************
js1 proc near
push ax
cmp cl,0ah ;判斷是否輸出字母(a~f)
jnb show3
add cl,30h ;判斷是否輸出數字(0~9)
由此可驗證程式的準確性。
數字排序(氣泡排序法)
將以組數字以從大到小的順序排列,也稱為氣泡排序法 比如將下面組數字從大到小排列,我們可以用二個數相比較的方法,首先將第乙個數和第二個數相比較,如果第乙個數比第二個數大則不動,如果小則交換位置 結果為 22,10,50,100,65,56,98,105,200,900,4,1 第一次排列,即i 0,j...
Python程式設計排序 氣泡排序法
氣泡排序法定義 它重複地比較要排序的所有元素列,如果順序 如從大到小 首字母從z到a 錯誤就把他們交換過來。比較元素的工作是重複地進行直到沒有相鄰元素需要交換,排序完成。氣泡排序1每次找出最大值 def bubble sort biggest a for i in range 0 len a 1 p...
Shell程式設計實驗之氣泡排序
氣泡排序 類似氣泡上湧的動作,會將資料在陣列中從小到大或者從大到小不斷的向前移動 氣泡排序的基本思想是對比相鄰的兩個元素值,如果滿足條件就交換元素值,把較小的元素移動到陣列前面,把大的元素移動到陣列後面 也就是交換兩個元素的位置 這樣較小的元素就像氣泡一樣從底部上公升到頂部。冒泡演算法由雙層迴圈實現...