📄 mywork4.asm
字号:
my macro
mov dl,0ah
mov ah,2h
int 21h
mov dl,0dh
mov ah,2
int 21h
endm
data segment
buffer db 60 dup(' '),'$'
count db ?
result db 'xue hao wei de ming chi wei: ','$'
message db 'error! $'
string db 'please input the marks of the students betwwen 0 and 99 ,and the number must have 2 bits','$'
data ends
stack segment stack'stack'
db 100 dup('s')
stack ends
code segment
assume ds:data,ss:stack,cs:code
sta :
;sta proc
push ds
xor ax,ax
push ax
mov ax,data
mov ds,ax
amain:
call input
my
lea si,count
mov [count],bl
call change
call output
my
; ret
;sta endp
input proc near
begin:
lea dx,string
mov ah,9
int 21h
my
mov bl,0
lea si,buffer
main: mov ah,1
int 21h
cmp al,0dh
jz retu ;over
cmp al,30h
jl exit
cmp al,39h
jg exit
inc bl
mov [si],bl
inc si
sub al,30h
mov [si],al
mov cl,3
shl al,cl
shl byte ptr[si],1
add [si],al
mov ah,1
int 21h
cmp al,30h
jl exit
cmp al,39h
jg exit
sub al,30h
add [si],al
mov dl,20h
mov ah,2
int 21h
inc si
jmp main
exit: my
mov dx ,offset message
mov ah,9
int 21h
my
jmp begin
retu:ret
input endp
change proc near
lea di,buffer
coti: mov dl,0
mov cl,count
mov bl,cl
mov bh,0
shl bl,1
dec bl
dec cl
agan:
mov al,[di+bx]
mov ah,[di+bx-1]
cmp al,[di+bx-2]
jbe next
xchg al,byte ptr [di+bx-2]
xchg ah,byte ptr [di+bx-3]
mov [di+bx-1],ah
mov [di+bx],al
mov dl,-1
next: dec bl
dec bl
loop agan
cmp dl,0
jne coti
ret
change endp
output proc near
mov cl,count
lea si,buffer
mov bl,0
goop:
mov al,byte ptr[si]
mov ah,0
mov dl,0ah
div dl
or al,30h
or ah,30h
mov di,offset result
mov [di+12],al
mov [di+13],ah
inc bl
mov al,bl
mov ah,0
mov dl,0ah
div dl
or al,30h
or ah,30h
mov [di+31],al
mov [di+32],ah
mov dx ,offset result
mov ah,9
int 21h
my
inc si
inc si
loop goop
ret
output endp
ret
code ends
end sta
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -