📄 kl.asm
字号:
CLEAR MACRO
push dx
push cx
push bx
push ax
mov ah,6
mov al,0
mov bh,6
mov cx,0
mov dx,184fh
int 10h
pop dx
pop cx
pop bx
pop ax
ENDM
data segment
table db 100 dup(?)
table1 db 'PLEASE INPUT 1-3:$'
table2 db '1:FORM 2:Anti-FORM 3:Spin-FORM A/a:AUTOSHIFT ESC:exit$'
table3 db 'YOUR NUMBER IS WRONG:$'
data ends
code segment
assume cs:code
main proc far
push ds
sub ax,ax
push ax
mov ax,data
mov ds,ax
lea dx,table2
mov ah,9
int 21h
call back
t: lea dx,table1
mov ah,9
int 21h
mov ah,1
int 21h
mov bl,al
call back
cmp bl,1Bh
jz q
cmp bl,31h
jz m
cmp bl,33h
jz o
cmp bl,32h
jz s
cmp bl,61h
jz e
cmp bl,41h
jz e
jnz k
n: lea dx,table3
mov ah,9
int 21h
call back
jmp t
m: call triangle
call back
call back
call back
call back
call back
call back
call back
call back
call back
call back
call back
call back
call back
call back
call back
jmp t
o: call triangle1
jmp t
s: call triangle2
jmp t
e: call AUTOSHIFT
jmp t
q: mov ax,4c00h
int 21h
k: CLEAR
mov ah,2h
mov bh,0
mov dl,0
int 10h
jmp n
main endp
AUTOSHIFT PROC near
mov dl,2
p: CALL Clrscr
call WAITP
dec dl
cmp dl,0
jnz p
ret
AUTOSHIFT endp
Clrscr PROC near
call back
call back
call back
call back
call triangle
call back
call back
call back
call back
call back
call back
call back
call back
call back
call back
call back
call back
call back
call back
call back
call WAITP
CLEAR
call back
mov al,9
mov ch,9
mov bl,al
mov bh,bl
mov dh,0
mov table,dh
c: cmp dh,0
jz d
call space
dec dh
jnz c
d: mov dh,10d
mul ch
div dh
mov dh,al
mov cl,ah
call output
dec ch
mov al,bl
dec bh
jnz d
call back
dec bl
mov al,bl
mov ch,bl
mov bh,bl
add table,7
mov dh,table
cmp bl,0
jnz c
ret
Clrscr ENDP
WAITP PROC
mov bl,16
loop2: mov cx,33144
PUSH AX
XOR AX,AX
LOOP1: IN AL,61H
AND AL,10H
CMP AL,AH
JE LOOP1
MOV AH,AL
LOOP LOOP1
POP AX
dec bl
cmp bl,0
jnz loop2
RET
WAITP ENDP
triangle proc near
CLEAR
mov al,1
mov ch,1
mov bl,al
mov bh,bl
y: mov dh,10d
mul ch
div dh
mov dh,al
mov cl,ah
call output
inc ch
mov al,bl
dec bh
jnz y
call back
inc bl
mov al,bl
mov ch,1
mov bh,bl
cmp bl,10
jnz y
ret
triangle endp
triangle1 proc near
CLEAR
call triangle
call back
call back
call back
call back
call back
call back
mov al,9
mov ch,9
mov bl,al
mov bh,bl
mov dh,0
mov table,dh
a: cmp dh,0
jz b
call space
dec dh
jnz a
b: mov dh,10d
mul ch
div dh
mov dh,al
mov cl,ah
call output
dec ch
mov al,bl
dec bh
jnz b
call back
dec bl
mov al,bl
mov ch,bl
mov bh,bl
add table,7
mov dh,table
cmp bl,0
jnz a
ret
triangle1 endp
triangle2 proc near
CLEAR
mov al,9
mov ch,9
mov bl,al
mov bh,bl
mov dh,0
mov table,dh
f: cmp dh,0
jz i
call space
dec dh
jnz f
i: mov dh,10d
mul ch
div dh
mov dh,al
mov cl,ah
call output
dec ch
mov al,bl
dec bh
jnz i
call back
dec bl
mov al,bl
mov ch,bl
mov bh,bl
add table,7
mov dh,table
cmp bl,0
jnz f
ret
triangle2 endp
output proc near
add bl,30h
mov dl,bl
mov ah,2
int 21h
mov dl,'*'
mov ah,2
int 21h
add ch,30h
mov dl,ch
mov ah,2
int 21h
mov dl,'='
mov ah,2
int 21h
cmp dh,0
jz l2
cmp dh,0
jnz l1
l2: add cl,30h
mov dl,cl
mov ah,2
int 21h
call space
jmp l3
l1: add dh,30h
mov dl,dh
mov ah,2
int 21h
add cl,30h
mov dl,cl
mov ah,2
int 21h
l3: call space
sub bl,30h
sub ch,30h
ret
output endp
back proc near
mov dl,0Ah
mov ah,2
int 21h
mov dl,0Dh
mov ah,2
int 21h
ret
back endp
space proc near
push dx
push ax
mov dl,' '
mov ah,2
int 21h
pop ax
pop dx
ret
space endp
code ends
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -