next-30

问题描述:汇编程序成绩统计问题,用汇编语言,别的语言不行 大家好,本文将围绕一个有趣的事情展开说明,一个有趣的事情是一个很多人都想弄明白的事情,想搞清楚一个有趣的事情需要先了解以下几个事情。

在excel中,设置一个按钮,每次点击,a1-a100中的所有数据都自动减少30。请问如何做到?最好有样本。

next-30的相关图片

程序很长,不过功能很齐全,自己把不要的功能删了,里面的子程序部分我都写有注释,很容易看懂。

datarea segment。

english dw 10 dup(?) ;存放英语成绩。

mathematics dw 10 dup(?) ;存放数学成绩。

physical dw 10 dup(?) ;存放物理成绩。

grade dw 10 dup(?)。

rank dw 10 dup(?)。

rank1 dw 10 dup(?)。

rank2 dw 10 dup(?)。

rank3 dw 10 dup(?)。

s5 dw 0。

s6 dw 0。

s7 dw 0。

s8 dw 0。

s9 dw 0。

s10 dw 0。

count1 dw ?

count2 dw ?

count3 dw ?

count4 dw ?。

mess1 db 'Grade of English:$'。

mess2 db 'Grade of Mathematics:$'。

mess3 db 'Grade of Physical:$'。

mess4 db 13,10,'Input Error!Please input repeat.',13,10,'$'。

mess5 db 'Rank student number of English:$'。

mess6 db 'Rank studentnumber of Math:$'。

mess7 db 'Rank studentnumber of Physical:$'。

mess8 db ' Student Grade Management System',0ah,0dh,'$'。

mess9 db 'Plese choose: 1:Continue 2:Exit$'。

mess10 db 'Average grade of English:$'。

mess11 db 'Average grade of Math:$'。

mess12 db 'Average grade of Physical:$'。

mess13 db 'Plese choose: 1:Enter 2:Exit$'。

mess14 db 'Rank of overallscore:$'。

mess15 db 'Rank of student number with overallscore:$'。

mess16 db 'Please input grade(English,Math,Physical):$'。

mess17 db 'People of Englsh grade(<60,60---69,70---79,80---89,90---99,=100):$'。

mess18 db 'People of Math grade(<60,60---69,70---79,80---89,90---99,=100):$'。

mess19 db 'People of Physical grade(<60,60---69,70---79,80---89,90---99,=100):$'。

datarea ends

;*****************************************************************************。

show macro addrs。

lea dx,addrs。

mov ah,9 ;宏定义,显示字符串。

int 21h。

endm

;*******************************************************************************。

prognam segment 。

;*******************************************************************************。

main proc far

assume cs:prognam,ds:datarea。

START:

;设置堆栈为了返回dos

push ds

sub ax,ax

push ax

mov ax,datarea。

mov ds,ax

call clear

mov ah,2 ;调用置光标位置功能。

mov dh,1 ;使光标位置置为位置(1,8)

mov dl,8。

mov bh,0 ;页号为0。

int 10h ;BIOS显示中断调用。

show mess8

call choose。

ret

main endp

;*******************************************************************************。

choose proc near ;菜单选择 。

show mess13 。

call crlf ;调用换行函数。

mov ah,01。

int 21h。

cmp al,31h。

jnz exit。

next17:

call crlf。

show mess16。

call crlf。

call input1 ;英语成绩输入。

call rankp ;英语成绩排序。

call output1 ;英语成绩按学号对应的排名输出。

call input2 ;数学成绩输入。

call rankp1 ;数学成绩排序。

call output2 ;数学成绩按学号对应的排名输出。

call input3 ;物理成绩输入。

call rankp2 ;物理成绩排序。

call output3 ;物理成绩按学号对应的排名输出。

call crlf。

call engrade ;英语平均成绩。

call magrade ;数学平均成绩。

call phgrade ;物理平均成绩。

call crlf。

call encount ;英语各分数段统计。

call output7。

call macount ;数学各分数段统计。

call output8。

call phcount ;物理各分数段统计。

call output9。

call crlf。

call graderank ;计算每个人的总成绩。

call rankp3。

call output5 ;总成绩按其学号对应的排名输出。

call rankg。

call output4 ;总成绩按分数总和从大至小排行输出。

show mess9。

call crlf。

mov ah,01。

int 21h。

cmp al,31h。

jnz exit

jmp next17。

exit:

ret

choose endp

;*******************************************************************************。

input1 proc near ;英语成绩输入。

next18:

show mess1

mov si,0 ;至数组下标为0。

mov count1,0

mov cx,10。

next30:

mov english[si],0。

add si,2。

loop next30。

mov si,0。

enter:

call decibin ;十进制转二进制数。

inc count1 ;count自增1。

cmp dl,',' ;dl里的内容与‘,’相等则转移至store。

je store

cmp dl,13

je exit2

jne error

store:

mov english[si],bx ;将成绩送入储存单元。

add si,2

jmp enter

error:

show mess4

jmp next18。

exit2:

mov english[si],bx。

call crlf

ret

input1 endp

;*******************************************************************************。

input2 proc near ;数学成绩输入。

next19:

show mess2

mov si,0

mov count2,0

mov cx,10。

next31:

mov mathematics[si],0。

add si,2。

loop next31。

mov si,0。

enter1:

call decibin

inc count2

cmp dl,','

je store1

cmp dl,13

je exit3

jne error1

store1:

mov mathematics[si],bx。

add si,2

jmp enter1

error1:

show mess4

jmp next19。

exit3:

mov mathematics[si],bx。

call crlf

ret

input2 endp

;******************************************************************************。

input3 proc near ;物理成绩输入。

next20:

show mess3

mov si,0

mov count3,0

mov cx,10。

next32:

mov physical[si],0。

add si,2。

loop next32。

mov si,0。

enter3:

call decibin

inc count3

cmp dl,','

je store2

cmp dl,13

je exit4

jne error3

store2:

mov physical[si],bx。

add si,2

jmp enter3

error3:

show mess4

jmp next20。

exit4:

mov physical[si],bx。

call crlf

ret

input3 endp

;******************************************************************************。

rankp proc near ;英语成绩排序。

mov di,count1

mov bx,0

loop1:

mov ax,english[bx]。

mov word ptr rank[bx],0。

mov cx,count1

lea si,english。

next:

cmp ax,[si]

jg no_count

inc word ptr rank[bx]。

no_count:

add si,2

loop next

add bx,2

dec di

jne loop1

ret

rankp endp

;*****************************************************************************。

rankp1 proc near ;数学成绩排序。

mov di,count2

mov bx,0

loop2:

mov ax,mathematics[bx]。

mov word ptr rank1[bx],0。

mov cx,count2

lea si,mathematics。

next1:

cmp ax,[si]

jg no_count1

inc word ptr rank1[bx]。

no_count1:

add si,2

loop next1

add bx,2

dec di

jne loop2

ret

rankp1 endp

;*****************************************************************************。

rankp2 proc near ;物理成绩排序。

mov di,count3

mov bx,0

loop3:

mov ax,physical[bx]。

mov word ptr rank2[bx],0。

mov cx,count3

lea si,physical。

next3:

cmp ax,[si]

jg no_count2

inc word ptr rank2[bx]。

no_count2:

add si,2

loop next3

add bx,2

dec di

jne loop3

ret

rankp2 endp

;*****************************************************************************。

rankp3 proc near ;总分数按学号对应的名次输出。

mov di,count4

mov bx,0

loopc:

mov ax,grade[bx]。

mov word ptr rank3[bx],0。

mov cx,count3

lea si,grade

nextc:

cmp ax,[si]

jg no_count3

inc word ptr rank3[bx]。

no_count3:

add si,2

loop nextc

add bx,2

dec di

jne loopc

ret

rankp3 endp

;*****************************************************************************。

output1 proc near ;英语成绩按学号对应的名次输出。

show mess5

mov si,0

mov di,count1

next10:

mov bx,rank[si]。

call binidec

mov dl,','

mov ah,02

int 21h

add si,2

dec di

jnz next10

call crlf

ret

output1 endp

;*****************************************************************************。

output2 proc near ;数学成绩按学号对应的名次输出。

show mess6

mov si,0

mov di,count2

next11:

mov bx,rank1[si]。

call binidec

mov dl,','

mov ah,02

int 21h

add si,2

dec di

jnz next11

call crlf

ret

output2 endp

;*****************************************************************************。

output3 proc near ;物理成绩按学号对应的名次输出。

show mess7

mov si,0

mov di,count3

next13:

mov bx,rank2[si]。

call binidec

mov dl,','

mov ah,02

int 21h

add si,2

dec di

jnz next13

call crlf

ret

output3 endp

;*****************************************************************************。

output4 proc near ;总分成绩按分数排序输出。

show mess14。

mov si,0

mov di,count1

next21:

mov bx,grade[si]。

call binidec

mov dl,','

mov ah,02

int 21h

add si,2

dec di

jnz next21

call crlf

ret

output4 endp

;******************************************************************************。

output5 proc near ;总分成绩按学号排序输出。

show mess15。

mov si,0

mov di,count1

nextb:

mov bx,rank3[si]。

call binidec

mov dl,','

mov ah,02

int 21h

add si,2

dec di

jnz nextb

call crlf

ret

output5 endp

;******************************************************************************。

output7 proc near ;输出英语各分数段人数。

show mess17。

mov bx,s5。

call binidec。

mov dl,','。

mov ah,02

int 21h

mov bx,s6。

call binidec。

mov dl,','。

mov ah,02

int 21h

mov bx,s7。

call binidec。

mov dl,','。

mov ah,02

int 21h

mov bx,s8。

call binidec。

mov dl,','。

mov ah,02

int 21h

mov bx,s9。

call binidec。

mov dl,','。

mov ah,02

int 21h

mov bx,s10。

call binidec。

call crlf。

ret

output7 endp

;*********************************************************************************。

output8 proc near ;输出数学各分数段人数。

show mess18。

mov bx,s5。

call binidec。

mov dl,','。

mov ah,02

int 21h

mov bx,s6。

call binidec。

mov dl,','。

mov ah,02

int 21h

mov bx,s7。

call binidec。

mov dl,','。

mov ah,02

int 21h

mov bx,s8。

call binidec。

mov dl,','。

mov ah,02

int 21h

mov bx,s9。

call binidec。

mov dl,','。

mov ah,02

int 21h

mov bx,s10。

call binidec。

call crlf。

ret

output8 endp

;*********************************************************************************。

output9 proc near ;输出物理各分数段成绩。

show mess19。

mov bx,s5。

call binidec。

mov dl,','。

mov ah,02

int 21h

mov bx,s6。

call binidec。

mov dl,','。

mov ah,02

int 21h

mov bx,s7。

call binidec。

mov dl,','。

mov ah,02

int 21h

mov bx,s8。

call binidec。

mov dl,','。

mov ah,02

int 21h

mov bx,s9。

call binidec。

mov dl,','。

mov ah,02

int 21h

mov bx,s10。

call binidec。

call crlf。

ret

output9 endp

;*********************************************************************************。

engrade proc near ;计算英语平均成绩。

mov cx,10。

mov bx,0。

mov si,0。

next14:

mov dx,english[si]。

add bx,dx。

add si,2。

loop next14。

lea dx,mess10。

mov ah,09

int 21h

mov cx,1000。

call dec_div。

mov cx,100。

call dec_div。

mov cx,10

call dec_div。

call crlf。

ret

engrade endp

;*****************************************************************************。

magrade proc near ;计算数学平均成绩。

mov cx,10。

mov bx,0。

mov si,0。

next15:

mov dx,mathematics[si]。

add bx,dx。

add si,2。

loop next15。

lea dx,mess11。

mov ah,09

int 21h

mov cx,1000。

call dec_div。

mov cx,100。

call dec_div。

mov cx,10

call dec_div。

call crlf。

ret

magrade endp

;******************************************************************************。

phgrade proc near ;计算物理平均成绩。

mov cx,10。

mov bx,0。

mov si,0。

next16:

mov dx,physical[si]。

add bx,dx。

add si,2。

loop next16。

lea dx,mess12。

mov ah,09

int 21h

mov cx,1000。

call dec_div。

mov cx,100。

call dec_div。

mov cx,10

call dec_div。

call crlf。

ret

phgrade endp

;******************************************************************************。

rankg proc near ;总成绩按进行分数排序。

mov cx,10。

dec cx。

loop4:

mov di,cx。

mov bx,0。

loop5:

mov ax,grade[bx]。

cmp ax,grade[bx+2]。

jge continue。

xchg ax,grade[bx+2]。

mov grade[bx],ax。

continue:

add bx,2。

loop loop5。

mov cx,di。

loop loop4。

ret

rankg endp

;******************************************************************************。

graderank proc near ;个人总成绩分数的和的计算。

mov cx,10。

mov bx,0。

mov si,0。

mov count4,0。

loop10:

mov bx,english[si]。

add bx,mathematics[si]。

add bx,physical[si]。

mov grade[si],bx。

add si,2。

inc count4。

loop loop10。

ret

graderank endp。

;********************************************************************************。

encount proc near ;英语各分数段的统计。

mov s5,0。

mov s6,0。

mov s7,0。

mov s8,0。

mov s9,0。

mov s10,0。

mov cx,10。

mov bx,offset english。

compare:

mov ax,[bx]。

cmp ax,60。

jl five。

cmp ax,70。

jl six。

cmp ax,80。

jl seven。

cmp ax,90。

jl eight。

cmp ax,100。

jne nine。

inc s10。

jmp short change_addr。

nine:

inc s9。

jmp short change_addr。

eight:

inc s8。

jmp short change_addr。

seven:

inc s7。

jmp short change_addr。

six:

inc s6。

jmp short change_addr。

five:

inc s5。

change_addr:

add bx,2。

loop compare。

ret

encount endp

;********************************************************************************。

macount proc near ;数学各分数段的统计。

mov s5,0。

mov s6,0。

mov s7,0。

mov s8,0。

mov s9,0。

mov s10,0。

mov cx,10。

mov bx,offset mathematics。

compare1:

mov ax,[bx]。

cmp ax,60。

jl five1。

cmp ax,70。

jl six1。

cmp ax,80。

jl seven1。

cmp ax,90。

jl eight1。

cmp ax,100。

jne nine1。

inc s10。

jmp short change_addr1。

nine1:

inc s9。

jmp short change_addr1。

eight1:

inc s8。

jmp short change_addr1。

seven1:

inc s7。

jmp short change_addr1。

six1:

inc s6。

jmp short change_addr1。

five1:

inc s5。

change_addr1:

add bx,2。

loop compare1。

ret

macount endp

;********************************************************************************。

phcount proc near ;物理各分数段的统计。

mov s5,0。

mov s6,0。

mov s7,0。

mov s8,0。

mov s9,0。

mov s10,0。

mov cx,10。

mov bx,offset physical。

compare2:

mov ax,[bx]。

cmp ax,60。

jl five2。

cmp ax,70。

jl six2。

cmp ax,80。

jl seven2。

cmp ax,90。

jl eight2。

cmp ax,100。

jne nine2。

inc s10。

jmp short change_addr2。

nine2:

inc s9。

jmp short change_addr2。

eight2:

inc s8。

jmp short change_addr2。

seven2:

inc s7。

jmp short change_addr2。

six2:

inc s6。

jmp short change_addr2。

five2:

inc s5。

change_addr2:

add bx,2。

loop compare2。

ret

phcount endp

;********************************************************************************。

decibin proc near ;二进制转十进制。

mov bx,0 ;将bx里的内容清零。

newchar:

mov ah,1

int 21h ;调用dos,输入字符,字符存于al。

mov dl,al

sub al,30h ;将字符数字转为十进制数字 。

jl exit1 ;小于字符0就转移至exit1。

cmp al,9d ;输入数字与9比较,大于9就转移至exit1。

jg exit1

cbw ;将al符号扩展到ah。

xchg ax,bx ;将ax里的内容和bx里的内容交换。

mov cx,10d 。

mul cx ;al里的内容*10送到ax。

xchg ax,bx 。

add bx,ax

jmp newchar ;转移至newchar,重新输入成绩。

exit1: ret

decibin endp

;*****************************************************************************。

binidec proc near 。

push bx

push cx

push si

push di

mov cx,100d

call dec_div

mov cx,10d

call dec_div

mov cx,1d

call dec_div

pop di

pop si

pop cx

pop bx

ret

binidec endp

;*****************************************************************************。

dec_div proc near。

mov ax,bx

mov dx,0

div cx

mov bx,dx

mov dl,al

add dl,30h

mov ah,02h

int 21h

ret

dec_div endp

;*****************************************************************************。

crlf proc near

mov dl,0ah ;换行。

mov ah,02h 。

int 21h ;调用dos,显示dl里的内容。

mov dl,0dh ;回车。

mov ah,02h

int 21h

ret

crlf endp

;*****************************************************************************。

clear proc near。

push ax。

push bx。

push cx。

push dx。

mov ah,6 ;调用屏幕初始化或上卷功能。

mov al,0 ;使全屏幕为空白。

mov bh,7 。

mov ch,0。

mov cl,0 ;规定上卷的范围为从左上角(0,0)至右下角(24,79)

mov dh,24。

mov dl,79。

int 10h ;BIOS显示中断调用。

pop dx。

pop cx。

pop bx。

pop ax。

ret

clear endp

;*****************************************************************************。

prognam ends

END START

end

Java大神请进!如何从子函数返回到主函数中?的相关图片

Java大神请进!如何从子函数返回到主函数中?

告诉你一个简单的办法,先点工具,宏,录制宏,然后开始操作,在一空白单元格内打一个-30,然后把这个单元格复制起来,再选中A1-A100,再点右键,选选择性粘贴,在下面选那个“加",然后确定。现在你就可以点停止录宏了。然后你想设置一个按钮就插入一个图片也行,插好图片对着图片点右键,里面有一个指定宏,你点一下就可以看到你录的一个宏了。指定好了以后,每点一次这个图片,你那单元格内的数据都会减30。

写一彩票程序,要求能随机产生并按照升序输出1-30之间的7个数,且其中任意两个数字不能重复,Java程序的相关图片

写一彩票程序,要求能随机产生并按照升序输出1-30之间的7个数,且其中任意两个数字不能重复,Java程序

我想楼主以前没用过java吧,不知道我猜的对不对?如果说错了还请楼主见谅。

先说一下java程序的结构,main函数是程序的入口也可以叫做主函数,其他函数是这个类的方法,但是不叫子函数。一个java程序只执行main函数中写的东西,是不执行楼主所说的子函数的。只有在main方法中调用了类的方法才会执行。如何调用呢?一般情况下是在main方法中ddd d=new ddd();声明一个对象d,然后d.choujiang() 调用这个方法。而楼主写的程序还特别点,即所有的属性和方法前都有static,我不知道楼主是否清楚其含义,既然声明为static的方法,那在调用的时候就不必构件对象,直接在主函数中写ddd.choujiang() 便可以调用。这样可以按楼主的思路继续网下调用其他的方法,程序会顺序网下执行,希望可以帮到楼主。(补充,这样的写法不是面向对象的程序设计思路,建议楼主可以看看java编程思想)

的相关图片

import java.util.Arrays;。

import java.util.Random;。

public class random {  。

 public static void main(String[] args) { 。

  int[] numArray = new int[30];。

  //生成一个存放30个数字的数组。

  for(int i=0;i<numArray.length;i++){。

   numArray[i]=i+1;。

  }

  Random random = new Random();。

  int randomNum = numArray.length-1;。

  int[] array=new int[7];。

  for(int i=0;i<array.length;i++){。

   int index = random.nextInt(randomNum--);。

   array[i]= numArray[index];。

   int temp=numArray[index];。

   numArray[index]=numArray[randomNum];。

   numArray[randomNum]=temp;。

  }

  Arrays.sort(array);。

  for(int i=0;i<array.length;i++){。

   System.out.print(array[i]+" ");。

  }

 }

说下大致思路,就是先弄一个1-30的数组,然后随机去数组里面取数,取完一次以后把本次取的数据往数组尾部放,并把尾部没选过的数字放到中间来,然后缩小检索数组的范围(这样就不会选到选过的数字了)

原文地址:http://www.qianchusai.com/next-30.html

next-0

next-0

next-100

next-100

next-10

next-10

next-80

next-80

next-60

next-60

next-90

next-90

next-50

next-50

next-40

next-40

next-70

next-70

aspirated,Aspirated consonant有哪些

aspirated,Aspirated consonant有哪些