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

📄 dataset.asm

📁 汇编实验 小球碰壁
💻 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 + -