📄 mean1.asm
字号:
public _mean
.model small
.data
_wmed dw ?,?
.code
_mean proc
mov ax,@data
mov ds,ax
push bp
mov bp,sp
push bx
push cx
push dx
push si
push di
mov bx,[bp+6] ; 从堆栈中取出缓冲区偏移地址给bx
mov cx,[bp+4] ;从堆栈中取数据个数给cx
xor si, si ;si中存放求和的低16位
mov di,si ;di中存放求和的高16位
mean1: mov ax,[bx] ; 取出一个数据给ax
cwd ; 符号扩展至dx
add si, ax ; 低16位求和
adc di, dx ;高16位求和
inc bx ;指向下一个数据
inc bx
loop mean1
mov ax,si ;累加和放在dx.ax中
mov cx,[bp+4] ; 数据个数重新给cx
idiv cx ; 有符号数除法,求的平均值在ax中
mov [_wmed],ax
;下面我们进行比较,并得出小于平均值的个数
mov bx,[bp+6]
mov cx,[bp+4]
xor dx,dx ;把个数存在dx中
compare:
mov ax,[bx]
cmp ax,[_wmed]
jl add_dx ;小于,则dx加1
inc bx ;指向下一个数据
inc bx
loop compare
jmp over
add_dx: inc dx
inc bx ;指向下一个数据
inc bx
loop compare
over:
mov [_wmed+2],dx
mov ax,offset _wmed
pop di
pop si
pop dx
pop cx
pop bx
pop bp
ret
_mean endp
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -