当前位置:
文档之家› 微机原理与应用综合实验—子程序设计
微机原理与应用综合实验—子程序设计
82 MOV CX,[DI+BX]
83 AND AX,000FH
84 AND CX,00F0H
85 PUSH BX
86 MOV BX,CX
87 MOV CL,4
88 SHR BX,CL
89 MOV CX,BX
90 POP BX
91
92 CALL JS1
;显示两位16进制数的高位
93
94 MOV CL,AL
75 ;*******************************
76 ;子程序2名:SHOW_SCREEN
77 ;子程序功能:实现数字每一位显示
78 ;*******************************
79 SHOW2 PROC NEAR
80 PUSH AX
81 MOV AX,[DI+BX]
4 ;*******************************
5 DATA SEGMENT
6 NUM DB
0D3H,0F7H,3EH,34H,0E5H,20H,36H,3DH,38H,0E9H,3CH,0E2H,0FFH,0D3H,0C1H,0B2H,0
A1H;待比较的数字
7 N EQU $-NUM
8 DATA ENDS
9 CODE SEGMENT
10 ASSUME CS:CODE,DS:DATA ;分配段
11 MAIN PROC FAR
;主过程
12 PUSH DS
;标准程序前奏
13 XOR AX, AX
;AX清零
14 PUSH AX
;AX入栈
15 MOV AX,DATA
;段地址分配
16 MOV DS,AX
34 ;子程序名:CAMP2
35 ;子程序功能:实现冒泡排序算法
36 ;*******************************
37 CAMP2 PROC NEAR
38 CMP CX,AX
39 JB CAMP3
40 DEC AX
41 MOV CX,0000H
42 RET
43 CAMP3:PUSH AX
56 MOV [DI+BX],AL
57 MOV [DI+BX+1],CL
58 POP CX
59 POP AX
60 INC CX
61 RET
62 CAMP2 ENDP
63 ;*******************************
64 ;子程序1名:SHOW_SCREEN
65 ;子程序功能:实现数字个数的循环
110 JNB SHOW3
111 ADD CL,30H
;判断是否输出数字(0~9)
112 MOV DL,CL
113 MOV AH,2
114 INT 21H
115 POP AX
116 RET
117 SHOW3:ADD CL,37H
118 MOV DL,CL
119 MOV AH,2
120 INT 21H
66 ;*******************************
67 SHOW_SCREEN PROC NEAR
68 MOV BX,0000H
;BX赋值为零,供循环使用
69 SHOW1:CALL SHOW2
70 INC BX
71 CMP BX,AX
72 JB SHOW1
73 RET
74 SHOW_SCREEN ENDP
121 POP AX
122 RET
123 JS1 ENDP
124 CODE ENDS
125 END MAIN
1.3 运行结果
由此可验证程序的准确性。
注:以上代码,均由本人独立完成, 转载需注明出处 ,尊重原 创,人人有责。欢迎交流~
44 PUSH CX
45 MOV AL,[DI+BX]
46 MOV CL,[DI+BX+1]
47 AND AX,00FFH
48 AND CX,00FFH
49 CMP AX,CX
50 JB DO1
51 POP CX
52 POP AX
53 INC CX
54 RET
55 DO1:XCHG AX,CX
;满足条件交换已比较的两个数
17 MOV DI,OFFSET NUM
;取偏移地址
18 MOV CX,0
;CX置0,供循环判断使用
19 MOV AX,N
;AX记录数字总个数
20 PUSH AX
;AX入栈保护
21 DEC AX
;AX自减一
22 CAMP1:MOV BX,CX
23 CALL CAMP2
;执行排序
24 CMP AX,0
1 微机原理与应用综合实验—子程 序设计
——南京理工大学2019秋季学期电子信息工程专业《微机原理与应用综合实 验》(1学分)
1.1 实验内容与要求
1.2 实验代码
编程软件 emu8086 。
1 ;*******************************
2 ;冒泡排序算法+显示输出
3 ;徐延宾
104 ;子程序3名:SHOW_SCREEN
105 ;子程序功能:实现16进制和ASCII码的转换并显示
106 ;*********************************************
107 JS1 PROC NEAR
108 PUSH AX
109 CMP CL,0AH
;判断是否输出字母(A~F)
;显示两位16进制数的低位
95 CALLห้องสมุดไป่ตู้JS1
96
97 MOV DL,' ' ;显示两位16进制数之间的空格
98 MOV AH,2
99 INT 21H
100 POP AX
101 RET
102 SHOW2 ENDP
103 ;*********************************************
;判断是否结束排序
25 JA CAMP1
26 POP AX
;AX出栈恢复,供显示子程序使用
27 AND AX,00FFH
28 CALL SHOW_SCREEN
;执行显示子程序
29 RET
30 MOV AH,4CH
31 INT 21H
32 MAIN ENDP
33 ;*******************************