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

📄 kl.asm

📁 汇编语言课程设计 设计题目:在显示器上显示九九表 设计目的: 1. 巩固和加深课堂所学知识; 2. 将课本上的理论知识和实际应用有机的结合起来
💻 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 + -