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

📄 alex4.vms

📁 VmBasic是一款基于虚拟机的结构化的编程语言
💻 VMS
📖 第 1 页 / 共 2 页
字号:
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 + -