⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mean1.asm

📁 求取一个数列平均直的程序,运行环境为DOS,编译环境ASM 
💻 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 + -