📄 dataset.asm
字号:
data_seg segment
ncol dw ?
nrow dw ?
data_seg ends
datainit macro b_col,b_rad,b_spd ;ball color,radius,speed
setcursor 0,6d,73d ;set cursor
mov al,dataw ;data buffer
mov b_col,al
call printhex ;print in Hex
setcursor 0,10d,73d
mov al,dataw+1
mov b_rad,al
call printhex
setcursor 0,14d,73d
mov al,dataw+2
mov b_spd,al
call printhex
endm
inputhex proc near ;input in Hex
mov ah,01h
int 21h
sub al,30h
cmp al,9
jbe nexti
sub al,27h
nexti:
ret
inputhex endp
setdata proc near
mov bx,0 ;test mouse key press state
mov ax,0005h
int 33h
cmp ax,1 ;left mouse key pressed
je nexts1
jmp near ptr exits0
nexts1:
mov ncol,dx ;if left key pressed save the point
mov nrow,cx
mov ax,dx ;dx/16 change to row
mov dx,0
mov bx,16d
div bx
mov nrow,ax
mov dx,0 ;cx/8 change to columns
mov ax,cx
mov bx,8d
div bx
mov ncol,ax
cmp ncol,73d ;column number is
jne exits
cmp nrow,6d ;press key in (6,73)
je setcol ;set ball color
cmp nrow,10d
je setrad ;press left key in (10,73) set ball radius
cmp nrow,14d
jne exits
jmp near ptr setspd ;press key in (14,73) set ball speed
exits:
jmp near ptr exits0
setcol:
setwin 7,6d,73d,7d,73d ;mask last char
setcursor 0,6d,73d
call inputhex ;accept input
mov dataw,al ;mov to data buffer
datainit b_color,b_radius,b_speed ;write it again
jmp near ptr exits0
setrad:
setwin 7,10d,73d,11d,73d
setcursor 0,6d,73d
call inputhex
mov dataw+1,al
datainit b_color,b_radius,b_speed
jmp near ptr exits0
setspd:
setwin 7,14d,73d,15d,73d
setcursor 0,6d,73d
call inputhex
mov dataw+2,al
datainit b_color,b_radius,b_speed
exits0:
datainit b_color,b_radius,b_speed
ret
setdata endp
printhex proc near ;print in hex
add al,30h
cmp al,30h
jb exitp
cmp al,39h
jbe printp
add al,7h
printp:
mov dl,al
mov ah,2
int 21h
mov dl,20h
mov ah,2
int 21h
exitp:
ret
printhex endp
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -