您的位置:首页 > 其它

微机原理上机第四次实验内容

2015-12-17 16:14 417 查看
本次实验内容:

  排序实验

实验目的:掌握用汇编语言编写气泡排序程序的思路和方法。

实验内容:

  使用DEBUG程序,从首地址1000H的内存区开始存放50个数,要求设计程序将这些数由小到大排序,排序后的数,仍放在该区域中。

代码:

  

DATAS SEGMENT
STRING1 DB 0DH,0AH,'Pai xu jie guo:',0DH,0AH,'$'
;ORG 1000H
;MEM 0AAH,00BH,0BBH,02H,03H,45 DUP(0) ;存放50个数据进行排序用
 

DATAS ENDS

CODES SEGMENT
ASSUME CS:CODES,DS:DATAS
START:
MOV AX,DATAS
MOV DS,AX              ;以下为冒泡法排序
MOV BX,49              ;给BX第一次比较的次数49
L3:MOV CX,BX
MOV SI,1000H         ;把1000H地址赋给SI
L1:MOV AL,[SI]    ;
CMP AL,[SI+1]    ;两数比较大小
JB L2    ;目的数据小于原数据则转L2段
XCHG AL,[SI+1];交换数据
MOV [SI],AL;I KNOW
L2:INC SI    ;SI+1->SI
LOOP L1
DEC BX;BX-1
JNZ L3;
L4:LEA DX,STRING1
MOV AH,09H
INT 21H
CALL DISPL
MOV AH,4CH
INT 21H
DISPL PROC
MOV SI,1000H
MOV CX,50
LOP:MOV AL,[SI]
SHR AL,1;  右移
SHR AL,1
SHR AL,1
SHR AL,1
ADD AL,90H   ;把AL中的十六进制数高位转换为ASCII码
DAA
ADC AL,40H
DAA
MOV DL,AL
MOV AH,02H
INT 21H
MOV AL,[SI]
AND AL,0FH
ADD AL,90H   ;把AL中的十六进制数低位转换为ASCII码
DAA
ADC AL,40H;
DAA
MOV DL,AL
MOV AH,02H
INT 21H
MOV DL,' '
MOV AH,02H
INT 21H
INC SI
LOOP LOP
RET
DISPL ENDP
CODES ENDS
END START
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: