主题:一个这样的子程序统计该怎么编啊!请大家帮帮哦
djg
[专家分:90] 发布于 2005-12-12 13:04:00
请各位高手帮个忙?这个程序该怎么写啊!
设有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个回复)
沙发
erping [专家分:3660] 发布于 2005-12-12 14:37:00
;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
板凳
jhkdiy [专家分:1620] 发布于 2005-12-12 16:50:00
erping高手啊,代码简洁易懂又不失效率。
3 楼
erping [专家分:3660] 发布于 2005-12-12 17:48:00
呵呵
4 楼
djg [专家分:90] 发布于 2005-12-12 20:25:00
真乃高手也,佩服佩服!
谢谢高手帮忙
5 楼
djg [专家分:90] 发布于 2005-12-12 21:00:00
高手,我刚才试了一下,好象有一点错误
第二句为data segment
在第八句后应该加data ends
.code应改为code segment
code segment后应再加一句assume cs:code,ds:data
还有_add_应写为_add
同时好象运行后还有一个文件不能生成
不知是不这样,再次说声谢谢!
6 楼
erping [专家分:3660] 发布于 2005-12-13 10:47:00
我使用汇编器是 masm 6.14, 他支持更多的伪指令.
如果你要成功汇编这个程序你的 masm 版本必须在 masm 6.11 以上才可以
7 楼
赵坚 [专家分:0] 发布于 2005-12-22 21:28:00
我怎么得不出结果啊1!请哪位给我发个完整的答案给我好吗,我过些天就要考了,我的QQ是157085486 谢谢
8 楼
ilovepc [专家分:50] 发布于 2005-12-23 14:10:00
把它 改在 MASM 5.0中运行!
、要怎么改呀!
这好象是 8.0的吧!!
9 楼
breakind [专家分:150] 发布于 2005-12-23 21:56:00
试试这个!
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
我来回复