📄 alex4.vms
字号:
CALL LABEL0 ; For initialization
;================ MAIN PROG ==================
;<Epression>
; Flush stack: 1 [1]
PUSH 38
POP r3
;</Epression>
LD int r0,VINT_KEY_UP
LD int [r0],r3
;<Epression>
; Flush stack: 1 [1]
PUSH 40
POP r3
;</Epression>
LD int r0,VINT_KEY_DOWN
LD int [r0],r3
;<Epression>
; Flush stack: 1 [1]
PUSH 37
POP r3
;</Epression>
LD int r0,VINT_KEY_LEFT
LD int [r0],r3
;<Epression>
; Flush stack: 1 [1]
PUSH 39
POP r3
;</Epression>
LD int r0,VINT_KEY_RIGHT
LD int [r0],r3
;<Epression>
; Flush stack: 1 [1]
PUSH 32
POP r3
;</Epression>
LD int r0,VINT_KEY_SPACE
LD int [r0],r3
;<Epression>
; Flush stack: 1 [1]
PUSH 27
POP r3
;</Epression>
LD int r0,VINT_KEY_ESCAPE
LD int [r0],r3
;<Epression>
; Flush stack: 1 [1]
PUSH 13
POP r3
;</Epression>
LD int r0,VINT_KEY_ENTER
LD int [r0],r3
;<Epression>
; Flush stack: 1 [1]
PUSH 0
POP r3
;</Epression>
LD int r0,VINT_MAX
LD int [r0],r3
;<Epression>
; Flush stack: 16 C [2]
PUSH [CSTRING_49]
POP r2
IN r3,2
IN r2,5
PUSH r3
POP r3
;</Epression>
OUT 2,r3
IN r3,8
OUT 4,10
;<Epression>
; Flush stack: 1 [1]
PUSH 0
POP r3
;</Epression>
PUSH r3
CALL FINT_SEARCH
CAL int ADD rs,4
EXIT
;================ FUNCTIONS ==================
;(FFLO_SIN) Function
;parcount=1
FFLO_SIN:
PUSH rb
LD int rb,rs
CAL int ADD rs,-4
; This is a comment line
;<Epression>
; Flush stack: 17 [1]
LD int r0,rb
CAL int ADD r0,12
PUSH [r0]
POP r3
;</Epression>
LD int r0,VFLO_STATIC_FLOAT
LD int [r0],r3
LD int r3,[VFLO_STATIC_FLOAT] ;Inline VAsm
IN [VFLO_STATIC_FLOAT],16 ;Inline VAsm
;<Epression>
; Flush stack: 17 [1]
PUSH [VFLO_STATIC_FLOAT]
POP r3
;</Epression>
LD int r0,rb
CAL int ADD r0,0
LD int [r0],r3
FFLO_SIN_EXIT:
LD int r3,[rb]
LD int rs,rb
POP rb
RET
; END FUN FFLO_SIN
;(FFLO_COS) Function
;parcount=1
FFLO_COS:
PUSH rb
LD int rb,rs
CAL int ADD rs,-4
; This is a comment line
;<Epression>
; Flush stack: 17 [1]
LD int r0,rb
CAL int ADD r0,12
PUSH [r0]
POP r3
;</Epression>
LD int r0,VFLO_STATIC_FLOAT
LD int [r0],r3
LD int r3,[VFLO_STATIC_FLOAT] ;Inline VAsm
IN [VFLO_STATIC_FLOAT],17 ;Inline VAsm
;<Epression>
; Flush stack: 17 [1]
PUSH [VFLO_STATIC_FLOAT]
POP r3
;</Epression>
LD int r0,rb
CAL int ADD r0,0
LD int [r0],r3
FFLO_COS_EXIT:
LD int r3,[rb]
LD int rs,rb
POP rb
RET
; END FUN FFLO_COS
;(FFLO_TAN) Function
;parcount=1
FFLO_TAN:
PUSH rb
LD int rb,rs
CAL int ADD rs,-4
; This is a comment line
;<Epression>
; Flush stack: 17 [1]
LD int r0,rb
CAL int ADD r0,12
PUSH [r0]
POP r3
;</Epression>
LD int r0,VFLO_STATIC_FLOAT
LD int [r0],r3
LD int r3,[VFLO_STATIC_FLOAT] ;Inline VAsm
IN [VFLO_STATIC_FLOAT],18 ;Inline VAsm
;<Epression>
; Flush stack: 17 [1]
PUSH [VFLO_STATIC_FLOAT]
POP r3
;</Epression>
LD int r0,rb
CAL int ADD r0,0
LD int [r0],r3
FFLO_TAN_EXIT:
LD int r3,[rb]
LD int rs,rb
POP rb
RET
; END FUN FFLO_TAN
;(FFLO_SQR) Function
;parcount=1
FFLO_SQR:
PUSH rb
LD int rb,rs
CAL int ADD rs,-4
; This is a comment line
;<Epression>
; Flush stack: 17 [1]
LD int r0,rb
CAL int ADD r0,12
PUSH [r0]
POP r3
;</Epression>
LD int r0,VFLO_STATIC_FLOAT
LD int [r0],r3
LD int r3,[VFLO_STATIC_FLOAT] ;Inline VAsm
IN [VFLO_STATIC_FLOAT],19 ;Inline VAsm
;<Epression>
; Flush stack: 17 [1]
PUSH [VFLO_STATIC_FLOAT]
POP r3
;</Epression>
LD int r0,rb
CAL int ADD r0,0
LD int [r0],r3
FFLO_SQR_EXIT:
LD int r3,[rb]
LD int rs,rb
POP rb
RET
; END FUN FFLO_SQR
;(FFLO_ABS) Function
;parcount=1
FFLO_ABS:
PUSH rb
LD int rb,rs
CAL int ADD rs,-4
; This is a comment line
;<Epression>
; Flush stack: 17 [1]
LD int r0,rb
CAL int ADD r0,12
PUSH [r0]
POP r3
;</Epression>
LD int r0,VFLO_STATIC_FLOAT
LD int [r0],r3
LD int r3,[VFLO_STATIC_FLOAT] ;Inline VAsm
IN [VFLO_STATIC_FLOAT],21 ;Inline VAsm
;<Epression>
; Flush stack: 17 [1]
PUSH [VFLO_STATIC_FLOAT]
POP r3
;</Epression>
LD int r0,rb
CAL int ADD r0,0
LD int [r0],r3
FFLO_ABS_EXIT:
LD int r3,[rb]
LD int rs,rb
POP rb
RET
; END FUN FFLO_ABS
;(FINT_ABS) Function
;parcount=1
FINT_ABS:
PUSH rb
LD int rb,rs
CAL int ADD rs,-4
; This is a comment line
; If code
;<Epression>
; Flush stack: 16 1 < [3]
LD int r0,rb
CAL int ADD r0,12
PUSH [r0]
PUSH 0
POP r1
POP r0
CMP int r0,r1
JPC AE LABEL5
PUSH 1
JMP LABEL6
LABEL5:
PUSH 0
LABEL6:
POP r3
;</Epression>
CMP int r3,0
JPC Z LABEL3
;<Epression>
; Flush stack: 16 ^ [2]
LD int r0,rb
CAL int ADD r0,12
PUSH [r0]
POP r1
LD int r0,0
CAL int SUB r0,r1
PUSH r0
POP r3
;</Epression>
LD int r0,rb
CAL int ADD r0,0
LD int [r0],r3
JMP LABEL4
LABEL3: ; Else
;<Epression>
; Flush stack: 16 [1]
LD int r0,rb
CAL int ADD r0,12
PUSH [r0]
POP r3
;</Epression>
LD int r0,rb
CAL int ADD r0,0
LD int [r0],r3
LABEL4: ; End of If
FINT_ABS_EXIT:
LD int r3,[rb]
LD int rs,rb
POP rb
RET
; END FUN FINT_ABS
;(FSTR_CHR) Function
;parcount=1
FSTR_CHR:
PUSH rb
LD int rb,rs
CAL int ADD rs,-4
LD int r0,rb
CAL int ADD r0,0
IN [r0],2
; This is a comment line
;<Epression>
; Flush stack: 16 C [2]
PUSH [CSTRING_7]
POP r2
IN r3,2
IN r2,5
PUSH r3
POP r3
;</Epression>
LD int r0,VSTR_STATIC_STR
LD int r2,r3
LD int r3,[r0]
IN r3,5
LD int r3,r2
IN r3,8
;<Epression>
; Flush stack: 16 [1]
LD int r0,rb
CAL int ADD r0,12
PUSH [r0]
POP r3
;</Epression>
LD int r0,VINT_STATIC_INT
LD int [r0],r3
LD int r3,[VSTR_STATIC_STR] ;Inline VAsm
LD int r2,0 ;Inline VAsm
LD int r1,[VINT_STATIC_INT] ;Inline VAsm
IN r1,13 ;Inline VAsm
;<Epression>
; Flush stack: 16 C [2]
PUSH [VSTR_STATIC_STR]
POP r2
IN r3,2
IN r2,5
PUSH r3
POP r3
;</Epression>
LD int r0,rb
CAL int ADD r0,0
LD int r2,r3
LD int r3,[r0]
IN r3,5
LD int r3,r2
IN r3,8
FSTR_CHR_EXIT:
LD int r3,[rb]
LD int rs,rb
POP rb
RET
; END FUN FSTR_CHR
;(FINT_FTIMER) Function
;parcount=0
FINT_FTIMER:
PUSH rb
LD int rb,rs
CAL int ADD rs,-4
; This is a comment line
IN [VINT_STATIC_INT],15 ;Inline VAsm
;<Epression>
; Flush stack: 16 [1]
PUSH [VINT_STATIC_INT]
POP r3
;</Epression>
LD int r0,rb
CAL int ADD r0,0
LD int [r0],r3
FINT_FTIMER_EXIT:
LD int r3,[rb]
LD int rs,rb
POP rb
RET
; END FUN FINT_FTIMER
;(FINT_NEWCANVAS) Function
;parcount=2
FINT_NEWCANVAS:
PUSH rb
LD int rb,rs
CAL int ADD rs,-4
; This is a comment line
;<Epression>
; Flush stack: 16 [1]
LD int r0,rb
CAL int ADD r0,16
PUSH [r0]
POP r3
;</Epression>
LD int r0,VINT_STATIC_INT1
LD int [r0],r3
;<Epression>
; Flush stack: 16 [1]
LD int r0,rb
CAL int ADD r0,12
PUSH [r0]
POP r3
;</Epression>
LD int r0,VINT_STATIC_INT2
LD int [r0],r3
LD int r2,[VINT_STATIC_INT1] ;Inline VAsm
LD int r3,[VINT_STATIC_INT2] ;Inline VAsm
OUT 50,0 ;Inline VAsm
LD int [VINT_STATIC_INT1],r3 ;Inline VAsm
;<Epression>
; Flush stack: 16 [1]
PUSH [VINT_STATIC_INT1]
POP r3
;</Epression>
LD int r0,rb
CAL int ADD r0,0
LD int [r0],r3
FINT_NEWCANVAS_EXIT:
LD int r3,[rb]
LD int rs,rb
POP rb
RET
; END FUN FINT_NEWCANVAS
;(FINT_FREECANVAS) Function
;parcount=1
FINT_FREECANVAS:
PUSH rb
LD int rb,rs
CAL int ADD rs,-4
; This is a comment line
;<Epression>
; Flush stack: 16 [1]
LD int r0,rb
CAL int ADD r0,12
PUSH [r0]
POP r3
;</Epression>
LD int r0,VINT_STATIC_INT
LD int [r0],r3
LD int r3,[VINT_STATIC_INT] ;Inline VAsm
OUT 51,0 ;Inline VAsm
FINT_FREECANVAS_EXIT:
LD int r3,[rb]
LD int rs,rb
POP rb
RET
; END FUN FINT_FREECANVAS
;(FINT_BLITCANVAS) Function
;parcount=9
FINT_BLITCANVAS:
PUSH rb
LD int rb,rs
CAL int ADD rs,-4
; This is a comment line
LD int r0,VINT_STATIC_INT
PUSH r0
LD int r0,rb
CAL int ADD r0,12
POP r1
LD int [r1],r0
LD int r3,[VINT_STATIC_INT] ;Inline VAsm
OUT 53,0 ;Inline VAsm
FINT_BLITCANVAS_EXIT:
LD int r3,[rb]
LD int rs,rb
POP rb
RET
; END FUN FINT_BLITCANVAS
;(FINT_LOADCANVAS) Function
;parcount=1
FINT_LOADCANVAS:
PUSH rb
LD int rb,rs
CAL int ADD rs,-4
; This is a comment line
LD int r0,VINT_STATIC_INT
PUSH r0
LD int r0,rb
CAL int ADD r0,12
POP r1
LD int [r1],r0
LD int r2,[VINT_STATIC_INT] ;Inline VAsm
LD int r3,[r2] ;Inline VAsm
OUT 52,0 ;Inline VAsm
LD int [VINT_STATIC_INT],r3 ;Inline VAsm
;<Epression>
; Flush stack: 16 [1]
PUSH [VINT_STATIC_INT]
POP r3
;</Epression>
LD int r0,rb
CAL int ADD r0,0
LD int [r0],r3
FINT_LOADCANVAS_EXIT:
LD int r0,rb
CAL int ADD r0,12
LD int r3,[r0]
IN r3,8
LD int r3,[rb]
LD int rs,rb
POP rb
RET
; END FUN FINT_LOADCANVAS
;(FINT_SHOWCANVAS) Function
;parcount=1
FINT_SHOWCANVAS:
PUSH rb
LD int rb,rs
CAL int ADD rs,-4
; This is a comment line
;<Epression>
; Flush stack: 16 [1]
LD int r0,rb
CAL int ADD r0,12
PUSH [r0]
POP r3
;</Epression>
LD int r0,VINT_STATIC_INT
LD int [r0],r3
LD int r3,[VINT_STATIC_INT] ;Inline VAsm
OUT 54,0 ;Inline VAsm
FINT_SHOWCANVAS_EXIT:
LD int r3,[rb]
LD int rs,rb
POP rb
RET
; END FUN FINT_SHOWCANVAS
;(FINT_PIXEL) Function
;parcount=4
FINT_PIXEL:
PUSH rb
LD int rb,rs
CAL int ADD rs,-4
; This is a comment line
LD int r0,VINT_STATIC_INT
PUSH r0
LD int r0,rb
CAL int ADD r0,12
POP r1
LD int [r1],r0
LD int r3,[VINT_STATIC_INT] ;Inline VAsm
OUT 55,0 ;Inline VAsm
FINT_PIXEL_EXIT:
LD int r3,[rb]
LD int rs,rb
POP rb
RET
; END FUN FINT_PIXEL
;(FINT_READPIXEL) Function
;parcount=3
FINT_READPIXEL:
PUSH rb
LD int rb,rs
CAL int ADD rs,-4
; This is a comment line
LD int r0,VINT_STATIC_INT
PUSH r0
LD int r0,rb
CAL int ADD r0,12
POP r1
LD int [r1],r0
LD int r3,[VINT_STATIC_INT] ;Inline VAsm
OUT 56,0 ;Inline VAsm
LD int [VINT_STATIC_INT],r3 ;Inline VAsm
;<Epression>
; Flush stack: 16 [1]
PUSH [VINT_STATIC_INT]
POP r3
;</Epression>
LD int r0,rb
CAL int ADD r0,0
LD int [r0],r3
FINT_READPIXEL_EXIT:
LD int r3,[rb]
LD int rs,rb
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -