⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 grade.lst

📁 从键盘接收输入的一个班的学生成绩
💻 LST
字号:
Microsoft (R) Macro Assembler Version 6.11		    04/25/08 09:03:13
C:\DOCUME~1\ADMINI~1\桌面\243200~2\grade\grade.asm	     Page 1 - 1


 0000				data segment
 0000 0A 0D 67 72 61 64		     meg1 db 0ah,0dh,"grade:",0ah,0dh,"$"
       65 3A 0A 0D 24
 000B 0A 0D 72 61 6E 6B		     meg2 db 0ah,0dh,"rank:",0ah,0dh,"$"
       3A 0A 0D 24
 0015 64 00			     input db 100,0,100 dup(?)
       0064 [
        00
       ]
 007B  0032 [			     rank dw 50 dup(1)
        0001
       ]
 00DF  0032 [			     grade dw 50 dup(111) ,'$'
        006F
       ] 0024
 0145 00			     count db 0     
 0146				data ends
 0000				code segment
				assume ds:data,cs:code
 0000				main proc far
 0000  B8 ---- R		      mov ax,data
 0003  8E D8			      mov ds,ax 
				            
 0005  8D 16 0000 R		      lea dx,meg1
 0009  B4 09			      mov ah,09h
 000B  CD 21			      int 21h 
				             
 000D  E8 0013			      call decibin         
 0010  E8 0054			      call rankp           
 0013  8D 16 000B R		      lea dx,meg2
 0017  B4 09			      mov ah,09h
 0019  CD 21			      int 21h
				      
 001B  E8 007D			      call binidec  
				      
 001E  B8 4C00			      mov ax,4c00h
 0021  CD 21			      int 21h
				       
 0023				main endp

 0023				decibin proc near
 0023  8D 16 0015 R		      lea dx,input      
 0027  B4 0A			      mov ah,0ah
 0029  CD 21			      int 21h
				      
 002B  BB 0000			      mov bx,0
 002E  8D 3E 00DF R		      lea di,grade
				      
 0032  8D 36 0017 R		      lea si,input+2
 0036  8A 4C FF			      mov cl,[si-1]
 0039  B5 00			      mov ch,00h
 003B				newchar:   
 003B  8A 04			      mov al,[si] 
 003D  3C 2C			      cmp al,','
 003F  74 10			      jz nextnum   ;如果是','则保存这个数 
				        
 0041  2C 30			      sub al,30h
 0043  98			      cbw
 0044  93			      xchg ax,bx
 0045  B2 0A			      mov dl,10d
 0047  F6 E2			      mul dl       ;cx*ax->ax 
 0049  93			      xchg ax,bx
 004A  03 D8			      add bx,ax      
 004C  46			      inc si
 004D  E2 EC			      loop newchar
 004F  EB 0F			      jmp e
 0051				nextnum:
 0051  89 1D			      mov [di],bx
 0053  BB 0000			      mov bx,0
 0056  83 C7 02			      add di,2   ;下个储存位置 
 0059  46			      inc si     ;下个字符 
 005A  FE 06 0145 R		      inc count           
 005E  E2 DB			      loop newchar
 0060				e:
 0060  89 1D			      mov [di],bx
 0062  FE 06 0145 R		      inc count
				           
 0066  C3			      ret
 0067				decibin endp



 0067				rankp proc near
 0067  8D 36 00DF R		      lea si,grade    
 006B  8D 3E 007B R		      lea di,rank 
 006F				nextstudent: 
 006F  8B 04			      mov ax,[si]        ;grade中取一个数 放ax 
 0071  83 F8 6F			      cmp ax, 111     ;判断有没有值 
 0074  74 24			      jz nonum  
				            
 0076  8D 1E 00DF R		      lea bx,grade       ;用bx做变址     
 007A				next:                 
 007A  8B 17			      mov dx,[bx]     ;与grade没个数进行比较 
 007C  83 FA 6F			      cmp dx,111
 007F  74 11			      jz endd
 0081  3B C2			      cmp ax,dx
 0083  78 05			      js up     ;如果<      
 0085  83 C3 02			      add bx,2
 0088  EB F0			      jmp next
 008A				up:
 008A  80 05 01			      add byte ptr [di],1
 008D  83 C3 02			      add bx,2      
 0090  EB E8			      jmp next
 0092				endd:      
 0092  83 C6 02			      add si,2    ;下一个数 
 0095  83 C7 02			      add di,2    ;下一个排名 
 0098  EB D5			      jmp nextstudent
 009A				nonum:     
 009A  C3			      ret           
 009B				rankp endp


 009B				binidec proc near
 009B  8D 36 007B R		      lea si,rank
 009F  8A 0E 0145 R		      mov cl,count
 00A3  B5 00			      mov ch,00h
 00A5				nexttran:
 00A5  8B 04			      mov ax,[si]   ;将排名数字发到ax 
 00A7  B2 0A			      mov dl,10
 00A9  F6 F2			      div dl
 00AB  04 30			      add al,30h
 00AD  80 C4 30			      add ah,30h
 00B0  8A F4			      mov dh,ah   ;暂时保存ah,既商 
				      
 00B2  8A D0			      mov dl,al
 00B4  B4 02			      mov ah,02h
 00B6  CD 21			      int 21h
				      
 00B8  8A D6			      mov dl,dh
 00BA  B4 02			      mov ah,02h
 00BC  CD 21			      int 21h
				      
 00BE  83 F9 01			      cmp cx,1
 00C1  74 0B			      jz no
 00C3  B2 2C			      mov dl,','
 00C5  B4 02			      mov ah,02h
 00C7  CD 21			      int 21h
				     
 00C9  83 C6 02			      add si,2
 00CC  E2 D7			      loop nexttran       
 00CE				no:     
 00CE  C3			      ret
 00CF				binidec endp
 00CF				code ends
				end main
Microsoft (R) Macro Assembler Version 6.11		    04/25/08 09:03:13
C:\DOCUME~1\ADMINI~1\桌面\243200~2\grade\grade.asm	     Symbols 2 - 1




Segments and Groups:

                N a m e                 Size     Length   Align   Combine Class

code . . . . . . . . . . . . . .	16 Bit	 00CF	  Para	  Private 
data . . . . . . . . . . . . . .	16 Bit	 0146	  Para	  Private 


Procedures,  parameters and locals:

                N a m e                 Type     Value    Attr

binidec  . . . . . . . . . . . .	P Near	 009B	  code	Length= 0034 Private
decibin  . . . . . . . . . . . .	P Near	 0023	  code	Length= 0044 Private
main . . . . . . . . . . . . . .	P Far	 0000	  code	Length= 0023 Private
rankp  . . . . . . . . . . . . .	P Near	 0067	  code	Length= 0034 Private


Symbols:

                N a m e                 Type     Value    Attr

count  . . . . . . . . . . . . .	Byte	 0145	  data	
endd . . . . . . . . . . . . . .	L Near	 0092	  code	
e  . . . . . . . . . . . . . . .	L Near	 0060	  code	
grade  . . . . . . . . . . . . .	Word	 00DF	  data	
input  . . . . . . . . . . . . .	Byte	 0015	  data	
meg1 . . . . . . . . . . . . . .	Byte	 0000	  data	
meg2 . . . . . . . . . . . . . .	Byte	 000B	  data	
newchar  . . . . . . . . . . . .	L Near	 003B	  code	
nextnum  . . . . . . . . . . . .	L Near	 0051	  code	
nextstudent  . . . . . . . . . .	L Near	 006F	  code	
nexttran . . . . . . . . . . . .	L Near	 00A5	  code	
next . . . . . . . . . . . . . .	L Near	 007A	  code	
nonum  . . . . . . . . . . . . .	L Near	 009A	  code	
no . . . . . . . . . . . . . . .	L Near	 00CE	  code	
rank . . . . . . . . . . . . . .	Word	 007B	  data	
up . . . . . . . . . . . . . . .	L Near	 008A	  code	

	   0 Warnings
	   0 Errors

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -