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

📄 move.asm

📁 汇编实验 小球碰壁
💻 ASM
字号:
caly      macro     xx         ;calculate y=k(x-x0)+y0
          mov       dx,0
          mov       ax,dely
          mov       cx,xx
          sub       cx,x0
          imul      cx
          mov       cx,delx
          idiv      cx
          add       ax,y0
          mov       y,ax
          endm
data_seg  segment
          dely      dw        ?  ;dely=y2-y1
          delx      dw        ?  ;delx=x2-x1
          savecolor db        3  ;save the ball color
          x0        dw        ?  ;ball begin position (x0,y0)
          y0        dw        ?
          addx      db        0  ;addx=0 then x increasing
          midx      dw        ?
          midy      dw        ?
          psx       dw        ?  ;
          psy       dw        ?
          rk        dw        ?  ;rk=|k1-k2|/|1+k1*K2|
data_seg  ends
moveball  proc      near
          mov       dx,0         ;the begin mov to position is middle of point[2] point[3]
          mov       ax,pointx+2
          mov       x0,ax
          mov       ax,pointy+2
          mov       y0,ax
          mov       addx,0       
          mov       ax,pointx+4
          add       ax,pointx+6
          mov       cx,2
          div       cx
          mov       midx,ax      ;middx=(x1+x2)/2
          sub       ax,pointx+2
          jns       nextm0
          mov       addx,1
        nextm0:
          mov       dx,0
          mov       delx,ax       ;delx=x2-x1
          mov       ax,pointy+4
          add       ax,pointy+6
          mov       cx,2
          div       cx
          mov       midy,ax
          sub       ax,pointy+2  
          mov       dely,ax       ;dely=y2-y1
        loopmov:
          call      drawball      ;draw ball
          mov       al,b_speed
          cbw
          mov       cx,100d
          mul       cx
          mov       di,ax
        delaym0:                  ;delay time 
          mov       al,b_speed
          mov       cx,100d
          mul       cx
          mov       si,ax
        delaym1:
          dec       si
          jnz       delaym1
          dec       di
          jnz       delaym0
          mov       al,b_color   ;change ball color
          mov       savecolor,al
          mov       b_color,3
          call      drawball     ;mask   ball color
          mov       al,savecolor
          mov       b_color,al
          cmp       addx,0
          je        xadd         ;x increasing 
          dec       x
          jmp       nextmc
        xadd:
          inc       x
        nextmc:
          caly      x            ;(x,y)
          mov       ax,x
          cmp       ax,midx
          je        exitdm
          jmp       loopmov
        exitdm:
          call      drawball
          ret
moveball  endp
          

⌨️ 快捷键说明

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