?? 32060624_王克_asmhomework_1.asm
字號(hào):
;----------------------------------------------------------------
; ╭══════┤ 32060624___王克 ├═════╮
; ║ ║
; ║ ║
; ║ ★ 匯編語言 第一次作業(yè) ★ ║
; ║ |---------------------------------------------| ║
; ║ ║
; ║ 對給定的16個(gè)數(shù)進(jìn)行排序(倒序),并輸出在屏幕上。 ║
; ║ ║
; ║ 2004.10.10 ║
; ║ ║
; ╰ ════════════════════════════╯
;━┅━┅━┅━┅━┅━┅━┅━┅━━┅━┅━┅━┅━┅━┅━┅━━┅━┅━━┅━
.MODEL SMALL
.STACK 100h
.DATA
table_len DW 16
table DW 200,300,400,10,20,0,1,8
DW 41h,40,42h,50,60,0FFFFh,2,3
result DB 5 DUP(?),' $'
.CODE
.STARTUP ;冒泡排序法
START:
MOV AX,@DATA
MOV DS,AX
;--------------------------;泡排序-------------------------------------------------------
LP1:
MOV BX,1 ;泡排序的標(biāo)志
MOV CX,table_len
DEC CX
MOV SI,OFFSET table
LP2: MOV AX,[SI]
CMP AX,[SI+2]
Ja CONTINUE
XCHG AX,[SI+2]
MOV [SI],AX
xor BX,BX ;BX清零
CONTINUE:
ADD SI,2
LOOP LP2
CMP BX,1
JZ convert
;------------------------;將二進(jìn)制轉(zhuǎn)化成BCD碼,并打印------------------------------
convert:
mov si,offset table
mov cx,table_len
lp3:
push cx ;保存原記數(shù)器值
MOV CX,5
MOV AX,word PTR [si]
MOV BX,10
MOV DI,OFFSET RESULT+4 ;從后往前保存
LP4: XOR DX,DX ;將DX清零
DIV BX
OR DL,30H ;也可用add dl,30h
MOV BYTE PTR [DI],DL ;將16進(jìn)制的數(shù)轉(zhuǎn)換到ASCII中對應(yīng)的數(shù),0的ASCII碼為 30H (48D)
cmp ax,0
jz print ;當(dāng)商為0時(shí),直接去打印,可不打印高位的0.
DEC DI
LOOP LP4
print:
MOV DX,di ;從DI開始打印,因?yàn)镽ESULT不一定夠5位
MOV AH,9
INT 21H ;調(diào)用DOS的21號(hào)中斷的9號(hào)功能,將DB輸出
inc si
inc si
pop cx
loop lp3
;-------------------------------end------------------------------------------------------
.EXIT
END
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -