📄 grade.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 + -