2025年3月27日 星期四 甲辰(龙)年 月廿六 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > 汇编

汇编找中位数

时间:07-29来源:作者:点击数:37
汇编找中位数

给定字型有符号整数数组的长度n,键盘输入字型有符号整数,找出并输出第n/2小的数。

原理:先冒泡排序,后取中间。

  • include io.inc
  • .model small
  • .stack
  • .data
  • msg1 db 'Input n:',13,10,0
  • msg2 db 'The Median Is:',0
  • array dw 100 dup(?) ;待输入
  • n db '?'
  • count db 0 ;保存数组长度
  • count1 db 1
  • result db 0 ;保存中位地址
  • .code
  • .startup
  • lea ax,msg1 ;提示输入
  • call dispmsg
  • call readuib ;读入无符号位十进制整数
  • call dispcrlf ;回车换行
  • mov n,al
  • mov count,al
  • mov count1,al
  • mov bx,offset array ;获取array首地址
  • start:
  • call readsiw
  • mov [bx],al ;读入数据
  • call dispcrlf
  • add bx,2
  • cmp n,0 ;n等于0时候跳出,否则循环读取数据
  • dec n
  • jz sort
  • jmp start
  • sort: ;读入完毕,进入排序
  • mov cl,count
  • dec cx ;循环count-1次,count,db型,只取cx低四位cl
  • outlp:
  • mov dx,cx ;内循环cx次
  • mov bx,offset array
  • inlp:
  • mov ax,[bx] ;取前一个元素
  • cmp ax,[bx+2] ;有符号数比较
  • jl next ;前一个元素不大于后一个元素,不交换标号
  • xchg ax,[bx+2] ;前一个元素大于后一个元素,则进行交换
  • mov [bx],ax
  • next:
  • add bx,2 ;下一个元素
  • dec dx
  • jnz inlp ;内循环尾
  • loop outlp ;外循环尾
  • mov bx,offset array
  • mov al,count1 ;选右边
  • mov bl,2
  • idiv bl
  • mov result,al
  • mov bx,0
  • done: ;取中间数
  • cmp result,0
  • jz output
  • add bx,2
  • dec result
  • jmp done
  • output:
  • mov ax,offset msg2
  • call dispmsg
  • mov ax,[array+bx] ;首地址+偏移量,找到第n/2个数
  • call dispsib
  • .exit
  • end

运行结果:

在这里插入图片描述
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门