📄 ball.asm
字号:
code segment
org 100h
assume cs:code,ds:code
Start: push cs
pop ds
mov ax,1130h
mov bh,06h
int 10h
push bp
push es
push cs
pop es
lea bp,BallBuf;点阵表偏移地址
call SetASC
mov ax,0b800h
mov es,ax
call ball
pop es
pop bp ;点阵表偏移地址
add bp,0c00h
call SetASC
mov ah,4ch
int 21h
SetASC proc near
mov ax,1100h ;加载用户点阵,重编程控制
mov bh,10h ;点
mov bl,00 ;块
mov cx,2 ;cx每字符字节
mov dx,00c0h ;表中首字符
int 10h ;
ret
SetASC endp
ball proc near
xor di,di
mov ah,es:[di]
mov al,es:[di+2]
mov Buff,ax
l000:
mov ax,Buff
mov es:[di],ah
mov es:[di+2],al
FixY:
mov ah,d_y
add y,ah
cmp y,0
jl dy_neg
cmp y,25
jl FixX
Dy_neg: neg d_y
jmp FixY
FixX:
mov al,d_x
add x,al
cmp x,0
jl dx_neg
cmp x,39
jl FixEnd
Dx_neg: neg d_x
jmp FixX
FixEnd:
mov ax,160
mul y
mov di,ax
mov ax,4
mul x
add di,ax
mov ah,es:[di]
mov al,es:[di+2]
mov Buff,ax
mov byte ptr es:[di],0c0h
mov byte ptr es:[di+2],0c1h
mov ah,86h
mov dx,07fffh
xor cx,cx
int 15h
mov ah,01h
int 16h
jz l000
mov ax,Buff
mov es:[di],ah
mov es:[di+2],al
ret
ball endp
BallBuf db 0,3,15,31,31,63,63,63,63,63,31,31,15,3,0,0
db 0,192,240,248,248,252,252,252,252,252,248,248,240,192,0,0
;*************<< ● >>****************
x db 0
y db 0
d_x db 1
d_y db 1
Buff dw 0
code ends
end Start
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -