;循环程序设计:冒泡排序(并求平均值)(8086汇编)vipxxl@126.com
;中南大学微机原理与接口技术实验8086汇编
;原题 实验三 循环程序设计
;编写一段程序,在数据段的十个数据单元中,定义20个8位无符号数(或键盘输入)。
;找出最大数和最小数,分别送到MAX和MIN单元中。显示原始数据、最大值、最小值。
DATA SEGMENT ;数据段
DA1 DW 20 DUP(?)
DA2 DB 'PLEASE INPUT 20 NUMBERS(00~99):',0DH,0AH,'$'
DA3 DB 'NUMBERS BEFOR SORT:',0DH,0AH,'$'
DA4 DB 0DH,0AH,'NUMBERS AFTER SORT:',0DH,0AH,'$'
DA5 DB 0DH,0AH, 'THE MAX NUMBER IS:',0DH,0AH,'$'
DA6 DB 0DH,0AH,'THE MIN NUMBER IS:',0DH,0AH,'$'
DA7 DB 0DH,0AH,'PRESS ANY KEY TO QUIT:',0DH,0AH,'$'
DA8 DB 'PLEASE INPUT NUMER ','$'
DA9 DB ':','$'
DA10 DB 0DH,0AH,'THE AVERAGE VALUE IS:',0DH,0AH,'$'
DAT1 DW 3230H,3139H,3138H,3137H,3136H,3135H,3134H,3133H,3132H,3131H
DW 3130H,3039H,3038H,3037H,3036H,3035H,3034H,3033H,3032H,3031H
DAT2 DB 0DH,0AH,'WRONG NUMBER!',0DH,0AH,'$'
DATA ENDS
STACK SEGMENT STACK ;堆栈段
ST1 DB 100 DUP(?)
STACK ENDS
CODE SEGMENT ;代码段
MAIN PROC FAR
ASSUME CS:CODE,DS:DATA,SS:STACK
START: MOV AX,STACK ;送堆栈段地址
MOV SS,AX
PUSH DS ;返回DOS
MOV AX,0
PUSH AX
MOV AX,DATA ;送数据段段地址
MOV DS,AX
MOV DX,OFFSET DA2 ;提示输入信息
MOV AH,9
INT 21H
LEA DI,DA1 ;数组首地址
MOV CX,20 ;循环次数20
TIP1: MOV AH,9 ;提示输入第N个数
MOV DX,OFFSET DA8
INT 21H
LEA SI,DAT1
SUB SI,2
ADD SI,CX
ADD SI,CX
MOV BX,[SI]
MOV DL,BH
MOV AH,2
INT 21H
MOV DL,BL
MOV AH,2
INT 21H
MOV AH,9
MOV DX,OFFSET DA9
INT 21H
INPUT: MOV AH,1 ;输入十位数
INT 21H
CMP AL,30H ;防误输入
JB TIP2
CMP AL,39H
JG TIP2
MOV BH,AL
MOV AH,1 ;输入个位数
INT 21H
CMP AL,30H ;防误输入
JB TIP2
CMP AL,39H
JG TIP2
MOV BL,AL
MOV [DI],BX ;将输入的数字存放到内存
ADD DI,2 ;指向下一个数
MOV AH,2 ;回车
MOV DL,0AH
INT 21H
LOOP TIP1 ;循环
JMP NEXT1 ;循环结束,跳转
TIP2: MOV AH,9 ;提示错误信息
MOV DX,OFFSET DAT2
INT 21H
JMP TIP1 ;跳转,重新输入
NEXT1: MOV DX,OFFSET DA3 ;提示排序前数组
MOV AH,9
INT 21H
MOV CX,20
MOV DI,OFFSET DA1
OUT1: MOV DX,[DI] ;输出排序前数组
MOV BX,DX
MOV DL,BH ;输出十位数
MOV AH,2
INT 21H
MOV DL,BL ;输出个位数
MOV AH,2
INT 21H
MOV AH,2
MOV DL,20H ;空格
INT 21H
ADD DI,2
LOOP OUT1 ;循环
SORT: MOV CX,19 ;排序,设计数器CX,内循环次数
LEA BX,DA1
L1: MOV DX,CX ;设计数器DX,外循环次数
L2: MOV AX,[BX] ;取相邻两个数
CMP AX,[BX+2] ;若前一个小于后一个,跳转
JB CONT1
XCHG AX,[BX+2] ;否则两数交换
MOV [BX],AX
CONT1: ADD BX,2 ;内循环
LOOP L2
MOV CX,DX ;外循环次数->CX
MOV BX,0 ;地址返回第一个数据
LOOP L1 ;外循环
MOV CX,20
MOV DX,OFFSET DA4 ;提示输出信息
MOV AH,9
INT 21H
LEA DI,DA1
OUT2: MOV AH,2 ;输出排序后的数组
MOV DX,[DI]
MOV BX,DX ;输出十位数
MOV DL,BH
MOV AH,2
INT 21H
MOV DL,BL ;输出个位数
MOV AH,2
INT 21H
MOV AH,2
MOV DL,20H
INT 21H
ADD DI,2
LOOP OUT2 ;循环输出
OUT3: MOV DX,OFFSET DA5 ;输出最大数
MOV AH,9
INT 21H
LEA DI,DA1
MOV AH,2
MOV DX,[DI+38]
MOV BX,DX
MOV DL,BH
MOV AH,2
INT 21H
MOV DL,BL
MOV AH,2
INT 21H
MOV AH,2
MOV DL,20H
INT 21H
MOV DX,OFFSET DA6 ;输出最小数
MOV AH,9
INT 21H
LEA DI,DA1
MOV AH,2
MOV DX,[DI]
MOV BX,DX
MOV DL,BH
MOV AH,2
INT 21H
MOV DL,BL
MOV AH,2
INT 21H
MOV AH,2
MOV DL,20H
INT 21H
AVE1: LEA DI,DA1 ;算平均值
MOV CX,20
MOV BX,0
AVE2: MOV AX,[DI] ;循环计算20数之和
PUSH AX ;ASCII转16进制数
SUB AH,30H ;高位转BCD码
MOV AL,AH
PUSH CX
MOV CL,10 ;高位乘以10
MUL CL
POP CX
MOV DX,AX
POP AX
SUB AL,30H ;低位转BCD码
MOV AH,0H
ADD AX,DX ;十位数和个位数合并
ADD BX,AX
ADD DI,2
LOOP AVE2 ;循环
MOV AX,BX
MOV BL,20 ;除以20求平均数
DIV BL
MOV AH,0 ;注意!不然会发生divide overflow
MOV BL,10 ;16进制转非压缩BCD码
DIV BL
XCHG AH,AL
OUT4: PUSH AX ;输出平均值
MOV DX,OFFSET DA10
MOV AH,9
INT 21H
POP AX
PUSH AX
ADD AH,30H
MOV DL,AH
MOV AH,2
INT 21H
POP AX
ADD AL,30H
MOV DL,AL
MOV AH,2
INT 21H
FINISH: MOV DX,OFFSET DA7 ;结束
MOV AH,9
INT 21H
MOV AH,8
INT 21H
RET
MAIN ENDP
CODE ENDS
END START
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
中南大学微机原理与系统的汇编实验代码+硬件proteus图 (130个子文件)
xhw02-加减乘除.asm 4KB
last1.asm 4KB
m4_1.asm 4KB
masm3_2.asm 4KB
JIAYOU.asm 4KB
last2.asm 3KB
m3_3.asm 3KB
SHISHI5.asm 3KB
555.asm 3KB
nononoRE.asm 3KB
shishi.asm 3KB
mmm5_1.asm 3KB
sth.asm 3KB
4_2.asm 3KB
N_TO_1.asm 3KB
MASM4.asm 3KB
last3.asm 2KB
2_1.asm 2KB
5_2.asm 2KB
000.asm 2KB
AAAAAAAAAAAAAA.asm 2KB
DA.asm 2KB
444.asm 2KB
m3myself.asm 1KB
2_1.asm 1KB
2.asm 929B
PROTRY01.asm 863B
2_2_2.asm 794B
m1_3_2.asm 718B
masm3.asm 707B
pro1.asm 545B
6.2.asm 408B
1_2.asm 299B
1_1_2.asm 297B
mmm1_3.asm 291B
000.asm 289B
1_1.asm 287B
实验二-两个多位十进制数相减实验.doc 29KB
xhw02-加减乘除.exe 1KB
masm3_2.exe 1KB
m3_3.exe 1KB
m4_1.exe 1KB
last3.exe 1KB
JIAYOU.exe 1KB
555.exe 1KB
N_TO_1.exe 1KB
1_2.exe 1KB
shishi.exe 999B
SHISHI5.exe 965B
AAAAAAAAAAAAAA.exe 932B
last1.exe 864B
DA.exe 762B
MASM4.exe 717B
4_2.exe 716B
m3myself.exe 675B
5_2.exe 674B
2.exe 628B
masm3.exe 617B
mmm1_3.exe 600B
444.exe 596B
m1_3_2.exe 593B
PROTRY01.exe 566B
pro1.exe 553B
1_1.exe 523B
000.exe 521B
000.exe 521B
1_1_2.exe 521B
xhw02-加减乘除.lst 11KB
m3_3.lst 10KB
m4_1.lst 10KB
masm3_2.lst 10KB
last1.lst 9KB
shishi.lst 9KB
JIAYOU.lst 8KB
555.lst 8KB
SHISHI5.lst 7KB
last3.lst 7KB
N_TO_1.lst 6KB
4_2.lst 5KB
MASM4.lst 5KB
AAAAAAAAAAAAAA.lst 5KB
DA.lst 5KB
5_2.lst 4KB
444.lst 3KB
000.lst 3KB
2.lst 3KB
mmm1_3.lst 3KB
m3myself.lst 3KB
masm3.lst 2KB
PROTRY01.lst 2KB
m1_3_2.lst 2KB
1_2.lst 2KB
pro1.lst 2KB
1_1_2.lst 1KB
1_1.lst 1KB
000.lst 1KB
xhw02-加减乘除.obj 1KB
m3_3.obj 860B
masm3_2.obj 857B
m4_1.obj 857B
共 130 条
- 1
- 2
资源评论
weixin_41931899
- 粉丝: 1
- 资源: 8
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Screenshot_20240427_031602.jpg
- 网页PDF_2024年04月26日 23-46-14_QQ浏览器网页保存_QQ浏览器转格式(6).docx
- 直接插入排序,冒泡排序,直接选择排序.zip
- 在排序2的基础上,再次对快排进行优化,其次增加快排非递归,归并排序,归并排序非递归版.zip
- 实现了7种排序算法.三种复杂度排序.三种nlogn复杂度排序(堆排序,归并排序,快速排序)一种线性复杂度的排序.zip
- 冒泡排序 直接选择排序 直接插入排序 随机快速排序 归并排序 堆排序.zip
- 课设-内部排序算法比较 包括冒泡排序、直接插入排序、简单选择排序、快速排序、希尔排序、归并排序和堆排序.zip
- Python排序算法.zip
- C语言实现直接插入排序、希尔排序、选择排序、冒泡排序、堆排序、快速排序、归并排序、计数排序,并带图详解.zip
- 常用工具集参考用于图像等数据处理
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功