汇编语言(双语)
CMP AL,'7'
jmp byebye; 当输入7时,转入BYEBYE分支程序,退出
error: ;分支程序,当输入非法数据时,报错 show err call ad jmp chen
quit: ; 分支程序,退出 mov ah,4ch int 21h byebye: show bye jmp quit
;******************** 1显示所有成绩 ************** one: ; ONE分支程序,实现输出分数及名字功能
mov cx,n1 lea di,score show mes7 mov bp,offset nam1 chen1:
;*********以下显示姓名**************
mov dx,bp mov ah,9 int 21h add bp,8 show mes6
;*********以下显示分数**************
mov ax,[di] mov bx,10 lea si,score1 call radix
mov [si],byte ptr 0dh mov [si+1],byte ptr 0ah mov [si+2],byte ptr '$' lea dx,score1 mov ah,9
int 21h;以上是2-10进制转换及显示 add di,2
;*********以上显示分数**************
dec cx jnz chen1 jmp chen
;***********2-10***************
- 9 -
汇编语言(双语)
radix proc;2-10进制转换 push cx;(cx)=10
push dx; mov cx,0;P进制入站时的计数器 L1:
MOV DX,0 DIV BX;商置ax, push dx; inc cx or ax,ax jne L1 l2:
pop ax;出栈 cmp al,10;比较 jb next;跳入下一个 add al,7;进行加法运算 next: add al,30h mov [si],al inc si dec cx jnz l2 pop dx;出栈 pop cx;出栈 ret radix endp
; *****************2号统计各分段人数 ******************
two:
lea si,score mov cx,n1
call count ;统计各分段人数 call ad jmp chen
; ********************3号顺序分数排序 ***************
three:
lea bx,score mov cx,n1
call sort;排序并存放在score为首址的单元中
;************显示所有成绩************
mov cx,n1 lea di,score chen2:
mov ax,[di]
- 10 -
汇编语言(双语)
mov bx,10 lea si,score1 call radix
mov [si],byte ptr 0dh mov [si+1],byte ptr 0ah mov [si+2],byte ptr '$' lea dx,score1 mov ah,9
int 21h;以上是2-10进制转换及显示 add di,2 dec cx jnz chen2 jmp chen
;***********冒泡排序子程序***************
sort proc;P128排序
push ax;入栈 push dx;入栈 push si;入栈 push di ;入栈 mov dx,cx sub dx,2 mov si,2 lopi: mov di,si add di,2 mov ax,[bx+si-2] lopj:
cmp ax,[bx+di-2] jbe lopk xchg [bx+di-2],ax mov [bx+si-2],ax lopk: add di,2 cmp di,20 jbe lopj add si,2 cmp si,18;比较 jbe lopi pop di pop si;出栈
- 11 -
汇编语言(双语)
pop dx ;出栈 pop ax;出栈 ret;返回 sort endp
; ******************4输出输入成绩*******************
fo:
show put;显示 call ad
show mes8;显示信息 input nam11;输入姓名 call ad
show mes9;显示信息 input scoreadd;输入 call ad;调动程序
show mes8;显示信息 input nam12 call ad
show mes9;显示信息 input scoreadd2 call ad;调动程序 show mes8;显示信息 input nam13 call ad;调动程序 show mes9;显示信息 input scoreadd3 call ad;调动程序
show mes8 input nam14 call ad show mes9 input scoreadd4 call ad
;**************显示对应名字分数************ show mes7;显示对应名字分数
; call ad
show nam11+2;显示name show mes6
show scoreadd+2;显示score call ad
show nam12+2;显示name
- 12 -