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

📄 ball.asm

📁 汇编实验 小球碰壁
💻 ASM
字号:
cal       macro     opr           ;calculate x*x
          mov       ax,opr
          mul       ax
          endm
write     macro     bcol
          local     exitw
          mov       ah,0dh
          int       10h
          cmp       al,9        
          je        exitw
          mov       al,bcol      ;write pix
          mov       ah,0ch
          int       10h
        exitw:
          endm
drawb     macro     bcol,brad,x,y ;draw ball,color radius (x,y)
        loopd:
          mov       al,brad
          cbw
          mov       di,ax         ;outer loop   0<y1-y<R
        loopx:
          mov       al,brad
          cbw
          mov       si,ax         ;inner loop   0<x1-x<R  
        loopy:
          cal       si            ;(x1-x)*(x1-x)
          mov       temp1,ax
          cal       di            ;(y1-y)*(y1-y)
          add       temp1,ax      ;(x1-x)*(x1-x)+(y1-y)*(y1-y)
          mov       al,brad
          cbw
          cal       ax            ;R*R
          sub       temp1,ax      ;(x1-x)*(x1-x)+(y1-y)*(y1-y)-R*R
          jns       nextd
          mov       dx,y
          mov       cx,x
          write     bcol          ;write center of circle 
          add       dx,di
          add       cx,si
          write     bcol          ;write point (x+si,y+di)
          sub       cx,si
          sub       cx,si
          write     bcol          ;write point (x-si,y+di)
          mov       dx,y
          mov       cx,x
          sub       dx,di
          sub       cx,si         ;write point (x-si,y-di)
          write     bcol
          add       cx,si
          add       cx,si
          write     bcol          write point (x+si,y-di)
        nextd:
          dec       si
          cmp       si,0
          jl        nextdb
          jmp       loopy
        nextdb:
          dec       di
          cmp       di,0
          jl        exitdb
          jmp       loopx
        exitdb:
          endm
data_seg  segment
          temp1     dw        ?
          b_color   db        ?
          b_radius  db        ?
          b_speed   db        ?
          x         dw        320
          y         dw        120
data_seg  ends
drawball  proc      near
          drawb     b_color,b_radius,x,y
          ret
drawball  endp

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -