+ -
当前位置:首页 → 问答吧 → 汇编例题求解

汇编例题求解

时间:2010-12-10

来源:互联网

编写一个在某项比赛中计算每一位选手最终得分的程序。计分方法如下:

① 10名评委,在0~10的整数范围内给选手打分。
② 10个得分中,除去一个最高分(如有同样两个以上最高分也只除一个),除去一个最低分(如有同样两个以上最低分也只除一个),剩下的8个得分取平均值为该选手的最终得分。

作者: shenkui1920   发布时间: 2010-12-10

打10个数字到缓冲区ah=0ah,int 21h,把数字字符转为10进制数字-30h,排序,取中间8个和,最后/8

作者: va_zaixuexi   发布时间: 2010-12-10

Assembly code

assume  cs:code,ds:data 
data    segment 
num     db      8,4,0,3,5,2,1,5,6,9
data    ends 
code    segment 
start: 
        mov ax,data 
        mov ds,ax
;第一步将数组排序
        mov si,0 
        mov cx,lengthof num
s:      
    push cx    
        mov di,si
    inc di    
s1:     
    mov al,[si]  
        cmp al,[di]  
        jb jx            
        xchg al,[di]   
        mov [si],al    
jx:     
    inc di           
        loop s1 
        inc si                
        pop cx               
        loop s
;第二步统计和
    xor ax,ax
    mov bx,offset num +2
    mov cx, lengthof num -2 
t:
    add al,[bx]
    inc bx
    loop t
;第三步,求平均值
    xor ah,ah
    mov bl,8
    div bl        
;打印(可选)
    add al,30h
    mov dl,al
    mov ah,2
    int 21h
    
        mov ah,4ch 
        int 21h 
code    ends 
end     start

作者: masmaster   发布时间: 2010-12-10