回 帖 发 新 帖 刷新版面

主题:一个这样的子程序统计该怎么编啊!请大家帮帮哦

请各位高手帮个忙?这个程序该怎么写啊!
设有10个学生的成绩分别是76,69,84,90,73,88,99,63,100和80分。试编制一个子程序统计60—69分,70-79分,80-89分,90-99分和100分的人数并分别存放到S6,S7,S8,S9和S10单元中
谢谢大家!

回复列表 (共9个回复)

沙发


;2005-12-12 13:37:23
;设有10个学生的成绩分别是76,69,84,90,73,88,99,63,100
;和80分。试编制一个子程序统计60—69分,70-79分,80-89分,
;90-99分和100分的人数并分别存放到S6,S7,S8,S9和S10单元中

.model small

.data
score    db    76, 69, 84, 90, 73, 88, 99, 63, 100, 80
s6        db    0
s7        db    0
s8        db    0
s9        db    0
s10        db    0

.code
_main:
            mov        ax, @data
            mov        ds, ax

            lea        si, score
            mov        cx, 10
            cld
    _next_score:        
            lodsb
            cmp        al, 60
            jb        _loop
            cmp        al, 69
            ja        _70_79
            lea        bx, s6
            jmp        _add_
    _70_79:
            cmp        al, 79
            ja        _80_89
            lea        bx, s7
            jmp        _add_
    _80_89:
            cmp        al, 89
            ja        _90_99
            lea        bx, s8
            jmp        _add_
    _90_99:
            cmp        al, 100
            je        _100
            lea        bx, s9
            jmp        _add_
    _100:
            lea        bx, s10
    _add_:
            inc        byte ptr [bx]
    _loop:
            loop    _next_score
            mov        ax, 4C00H
            int        21H
end    _main

板凳

erping高手啊,代码简洁易懂又不失效率。

3 楼

呵呵

4 楼

真乃高手也,佩服佩服!
谢谢高手帮忙

5 楼

高手,我刚才试了一下,好象有一点错误
第二句为data segment
在第八句后应该加data ends
.code应改为code segment
code segment后应再加一句assume cs:code,ds:data
还有_add_应写为_add
同时好象运行后还有一个文件不能生成
不知是不这样,再次说声谢谢!

6 楼

我使用汇编器是 masm 6.14, 他支持更多的伪指令.
如果你要成功汇编这个程序你的 masm 版本必须在 masm 6.11 以上才可以

7 楼

我怎么得不出结果啊1!请哪位给我发个完整的答案给我好吗,我过些天就要考了,我的QQ是157085486 谢谢

8 楼

把它  改在  MASM 5.0中运行!
、要怎么改呀!
这好象是 8.0的吧!!

9 楼

试试这个!

dataseg segment
score db 76,69,84,90,73,88,99,63,100,80
s6 db 0
s7 db 0
s8 db 0
s9 db 0
s10 db 0
dataseg ends

codeseg segment
assume cs:codeseg,ds:dataseg,es:dataseg

begin:
mov ax,dataseg
mov ds,ax
mov es,ax

mov cx,10
mov di,0

loop1:
mov al,score[di]
cmp al,70
jnb d70
inc s6
jmp next

d70:
cmp al,80
jnb d80
inc s7
jmp next

d80:
cmp al,90
jnb d90
inc s8
jmp next

d90:
cmp al,100
jnb d100
inc s9
jmp next

d100:
inc s10

next:
inc di
loop loop1
MOV AH,4CH
INT 21H
codeseg ends
end begin

我来回复

您尚未登录,请登录后再回复。点此登录或注册