彙編 實現正負數的冒泡排序

來源:互聯網
上載者:User

OUTtishi MACRO HAHA
PUSH DX
PUSH AX
LEA DX,HAHA
MOV AH,9
INT 21H
ENDM 
 
.386
DATA SEGMENT USE16
BUF1 DW 123,100,-1,-2,-3,-4,-2,-5
N = ($-BUF1)/2
CLRT DB 0DH,0AH,'$'
PRINT DB 'Sort Result:$'
DATA ENDS
STACK SEGMENT USE16 STACK
DB 200 DUP(0)
STACK ENDS

CODE SEGMENT USE16
 ASSUME CS:CODE,DS:DATA,SS:STACK
 
START:
MOV AX,DATA
MOV DS,AX
;調用排序子程式
CALL SORT

;輸出提示
OUTtishi PRINT
OUTtishi CLRT
;調用子程式,完成一個數值到串的轉化,並調用2號中斷輸出
MOV CL,N  ;設定調用該子程式的次數
MOV DI,0
LP1:
CALL F10TA_XCH
ADD DI,2  ;處理下一個字資料
LOOP LP1  ;cx-1 = cx,cx 不等於0,則迴圈

MOV AH,4CH
INT 21H

SORT PROC NEAR
PUSH CX
PUSH AX
PUSH SI
PUSH DI
PUSH BX
;冒泡排序
MOV BL,1  ;標誌
MOV CL,N
MOV CH,0
DEC CL
LOOP1:
MOV DI,CX   ;DI保留外迴圈次數
MOV SI,0

CMP BL,0
JE EXIT
XOR BL,BL  ;BL請0

LOOP2:
MOV AX,BUF1[SI]
CMP AX,BUF1[SI+2]  
JG LOOP3  ;若前一個大於後一個,則 ADD SI,2,都往後推一個
XCHG BUF1[SI+2],AX  ;降序,則小於就交換
MOV BUF1[SI],AX 
MOV BL,1
LOOP3:
ADD SI,2
LOOP LOOP2  ;CX內迴圈次數

MOV CX,DI    
LOOP LOOP1

EXIT:
POP BX
POP DI
POP SI
POP AX
POP CX
RET 
SORT ENDP

F10TA_XCH PROC NEAR

PUSH CX
PUSH AX
PUSH SI
PUSH DI
MOV CL,0
MOV AX,0
MOV SI,0AH      ;si = 10
MOV AX,BUF1[DI] 
CMP AX,0  ;看是不是負數
JGE LP2
NEG AX   ;是負數,取反
PUSH AX   ;因為要用到AH,則把AX先入棧

MOV AH,2   ;如果是負數,輸出‘-’
MOV DL,'-'
INT 21H

POP AX
LP2:
MOV DX,0  ;一定要小心,字除法dx為高16位,ax為低16位,沒有這個,常常Divide error
DIV SI    ;例如,15除以10得到5和1   ;商存在AX,餘數存在DX
PUSH DX    
INC CL   ;記錄有多少個餘數入了棧
CMP AX,0      ;當商為0時,則說明該資料所有位元已處理完
JNE LP2

LP3:
POP AX       ;出棧,輸出
ADD AL,30H   ;轉化成ascii碼顯示
MOV DL,AL
MOV AH,2
INT 21H
DEC CL
CMP CL,0
JNE LP3

;兩個空格
MOV AL,20H
MOV DL,AL
MOV AH,2
INT 21H
MOV AL,20H
MOV DL,AL
MOV AH,2
INT 21H 

POP DI
POP SI
POP AX
POP CX
RET
F10TA_XCH ENDP 

CODE ENDS
END START

  

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.