1. 朋友门->朋友们,代码不会就算了,不要连字也不识.
2. 讲解如下
程序代码:
data segment ;数据段头
grade dw 88,75,95,63,98,78,87,73,90,60 ;一堆数据
rank dw 10 dup(?) ;也是一堆放数据的地方咯
data ends ;数据段尾
code segment ;代码段头
main proc far ;main头,段间调用
assume cs:code,ds:data ;段关联
start: ;一个标号名字叫start
push ds ;ds入栈
sub ax,ax ;ax等于0
push ax ;ax入栈 以上3句为retf到psp头铺垫
mov ax,data ;ax等于data
mov ds,ax ;ds等于ax等于seg data
mov di,10 ;di等于10
mov bx,ax ;bx等于ax等于seg data,这句会对吗?
loop: ;可以用loop标号吗?你们老师怎么教的?
mov ax,grade[bx] ;ax不知道等于什么
mov dx,0 ;dx等于0
mov cx,10 ;cx等于10
lea si,grade ;si等于0
next: ;一个标号名字叫next
cmp ax,[si] ;不知道等于什么的ax和ds:[si]比较
jg no_count ;大于跳转到名字叫no_count标号的地方
inc dx ;dx加上1
no_count: ;一个标号名字叫no_count
add si,2 ;si加上2
loop next ;cx减掉1,cx大于0跳转到名字叫next标号的地方
mov rank[bx],dx ;把dx的值放入ds:rank[bx]中去
add bx,2 ;bx加上2
dec di ;di减掉1,用来干吗的,我没看出来?打酱油的么?
jne loop ;cx减掉1,cx大于0跳转到一个名字起的不合适的地方
ret ;retf到psp头,通过CD 20返回
main endp ;main尾
code ends ;代码段尾
end start ;从start开始跑