课后题吧
温柔似野鬼°
828次浏览
2021年01月28日 19:40
最佳经验
本文由作者推荐
课改心得体会-吉他指法图
课后题吧,我这有
;
把
0--100d
之间的
3 0
个数存入以
GRADE
为首地址的
30
个数组中,
;GRADE+1
表示学号为
i+1
的学生的成绩。另一个数组
RANK
为
30
个
;
学生的名次表,其中
RANK+i< br>的内容是学号为
i+1
的学生的名次。
;
编写一程序,
根据
GRADE
中的学生成绩,
讲学生名 次填入
RANK
数组中。
(提
示:一个学生的名次等于成绩高于这个学生是人 数加
1
)
DATAS SEGMENT
;
此处输入数据段代码
GRADE DW 88,75,95,63,98,78,87,78,90,60;
自行定义
;
成绩
COUNT EQU ($$-GRADE)/2
RANK DW COUNT DUP (1)
;
排名,
初始值为
1
,
大家都第一名,
同一起跑线
哈
DATAS ENDS
STACKS SEGMENT
;
此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
;
此处输入代码段代码
MOV SI,0
;
要排名的学生号码
MOV CX,COUNT
L1:
MOV AX,GRADE[SI]
;
获得第
SI
号学生的成绩
MOV BX,RANK[SI]
;
获得第
SI
号学生的初始排名
MOV DX,CX
;
保存
CX
MOV DI,0
;
要比较的学生的号码
MOV CX,COUNT
L2:
CMP AX,GRADE[DI]
;
逐个比较
JNB L3
INC BX
;
低于某一个学生的成绩,则排名加
1
L3:
ADD DI,2
LOOP L2
MOV RANK[SI],BX
;
保存排名
ADD SI,2
MOV CX,DX
LOOP L1
MOV AH,4CH
INT 21H
CODES ENDS
END START
汇编高手进来帮帮忙!!!!!!!
2009-10-12 21:48
提问者:
mimimiha5
|
悬赏分:
5
|
浏览次数:
747
次
建立学生名次表
rank
以
grade
为首地址的
10< br>个字的数组中保存了学生的成绩,其中
grade+i
保存学号为
i+1
(
i
是从
0
到
9
的自然数)的学生的成绩。要求建立一个
10
个字
的
rank
数组,
并根据
grade中的学生成绩将学生的名次填入
rank
数组中,
其中
rank+i的内容是学号为
i+1
学生的名次
(提示:
一个学生的名次等于成绩高于 该
学生的人数加
1
)。
推荐答案
2009-10-14 21:30
不是高手路过,练练手:
data segment
grade dw 87,89,52,63,47,95,100,52,96,88
rank dw 10 dup(?)
output db 'ranking:',0dh,0ah,'$$'
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
xor si,si
xor di,di
mov cx,0ah
loop1:
mov ax,grade[si]
push cx
mov cx,0ah
loop2:
cmp ax,grade[di]
jae XXX
inc rank[si]
XXX:
inc di
inc di
loop loop2
inc rank[si]
inc si
inc si
xor di,di