|

楼主 |
发表于 2014-5-6 17:47:52
|
显示全部楼层
assume cs:code ds:data
data segment
ARRAY dw 39,52,61,29,38,71,21,56,88,99
average dw ?
max dw ?
min dw ?
average2 dw ?
data ends
code segment
start:
//显示当前数组元素
mov ax,0 ;
mov bx,ARRAY
mov cx,10 ;计算未除去最大最小值时候的平均值
s:
add ax,[bx]
inc bx
inc bx
loop s
mov bl,10 ;
div bl ;DIV BL;商在AL中,余数在AH中
mov [average],ax
mov bx,ARRAY ;进行第一次比较,找出最小值,并且去掉
mov ax,0 ;用AX存放最小值
mov ax,[bx] ; 假设第一个数最小
mov cx,10
MIN: cmp ax,[bx+2]
jb min1
mov ax,[bx+2]
MIN1: inc bx
inc bx
loop MIN
mov [MIN],ax ;把最小值保存起来
mov [bx],0 ;去掉最小值
//显示出最小值
mov bx,ARRAY ; 进行第二次比较找出最大值
mov ax,0 ;用AX存放最大数
mov ax,[bx] ;假设第一个数是最大数
mov cx,10 ;设置循环次数
MAX: cmp ax,[bx+2]
ja MAX1 ;如果当前最大数,大于下一个数,那么ax不变,直接跳到s2
mov ax,[bx+2]
MAX1:
inc bx
inc bx
loop MAX
mov [MAX],ax ;把AX保存起来,也可以直接显示
mov [bx],0 ;去掉最大值,也就是把最大值置零
//显示出最大值
mov ax,0 ;
mov bx,ARRAY
mov cx,10 //计算除去最大最小值时候的平均值
average:
add ax,[bx]
inc bx
inc bx
loop average
mov bl,8 ;
div bl ;DIV BL;商在AL中,余数在AH中
mov [average2],ax
//显示除去最大最小之后的平均值
|
|