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

📄 alex4.vms

📁 VmBasic是一款基于虚拟机的结构化的编程语言
💻 VMS
📖 第 1 页 / 共 2 页
字号:
POP rb
RET
; END FUN FINT_READPIXEL

;(FINT_KEYPRESS) Function
;parcount=1
FINT_KEYPRESS:
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 60,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_KEYPRESS_EXIT:
LD int r3,[rb]
LD int rs,rb
POP rb
RET
; END FUN FINT_KEYPRESS

;(FINT_FILLCANVAS) Function
;parcount=6
FINT_FILLCANVAS:
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 57,0	;Inline VAsm
FINT_FILLCANVAS_EXIT:
LD int r3,[rb]
LD int rs,rb
POP rb
RET
; END FUN FINT_FILLCANVAS

;(FINT_CLOSEGRAPH) Function
;parcount=0
FINT_CLOSEGRAPH:
PUSH rb
LD int rb,rs
CAL int ADD rs,-4
; This is a comment line
OUT 58,0	;Inline VAsm
FINT_CLOSEGRAPH_EXIT:
LD int r3,[rb]
LD int rs,rb
POP rb
RET
; END FUN FINT_CLOSEGRAPH

;(FINT_RANDOM) Function
;parcount=1
FINT_RANDOM:
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 59,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_RANDOM_EXIT:
LD int r3,[rb]
LD int rs,rb
POP rb
RET
; END FUN FINT_RANDOM

;(FINT_SEARCH) Function
;parcount=1
FINT_SEARCH:
PUSH rb
LD int rb,rs
CAL int ADD rs,-12
; This is a comment line
;<Epression>
; Flush stack: 16  [1]
LD int r0,rb
CAL int ADD r0,12
PUSH [r0]
POP r3
;</Epression>
PUSH r3
;<Epression>
; Flush stack: 1  [1]
PUSH 0
POP r3
;</Epression>
POP r1
CMP dword r1,8
JPC B LABEL8
LD int r1,7
LABEL8:
LD int r0,VINT_A
CAL int MUL r1,4
CAL int ADD r0,r1
LD int [r0],r3
LABEL9:	; While code
;<Epression>
; Flush stack: 16 16 1 <  [4]
LD int r0,rb
CAL int ADD r0,12
PUSH [r0]
POP r3
CMP dword r3,8
JPC B LABEL11
LD int r3,7
LABEL11:
LD int r0,VINT_A
CAL int MUL r3,4
CAL int ADD r0,r3
PUSH [r0]
PUSH 8
POP r1
POP r0
CMP int r0,r1
JPC AE LABEL12
PUSH 1
JMP LABEL13
LABEL12:
PUSH 0
LABEL13:
POP r3
;</Epression>
CMP int r3,0
JPC Z LABEL10
;<Epression>
; Flush stack: 1  [1]
PUSH 1
POP r3
;</Epression>
LD int r0,rb
CAL int ADD r0,-4
LD int [r0],r3
; 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 BE LABEL16
PUSH 1
JMP LABEL17
LABEL16:
PUSH 0
LABEL17:
POP r3
;</Epression>
CMP int r3,0
JPC Z LABEL14
;<Epression>
; Flush stack: 1  [1]
PUSH 0
POP r3
;</Epression>
LD int r0,rb
CAL int ADD r0,-8
LD int [r0],r3
LABEL18:	; While code
;<Epression>
; Flush stack: 16 16 <  [3]
LD int r0,rb
CAL int ADD r0,-8
PUSH [r0]
LD int r0,rb
CAL int ADD r0,12
PUSH [r0]
POP r1
POP r0
CMP int r0,r1
JPC AE LABEL20
PUSH 1
JMP LABEL21
LABEL20:
PUSH 0
LABEL21:
POP r3
;</Epression>
CMP int r3,0
JPC Z LABEL19
; If code
;<Epression>
; Flush stack: 16 16 16 16 =  [5]
LD int r0,rb
CAL int ADD r0,12
PUSH [r0]
POP r3
CMP dword r3,8
JPC B LABEL24
LD int r3,7
LABEL24:
LD int r0,VINT_A
CAL int MUL r3,4
CAL int ADD r0,r3
PUSH [r0]
LD int r0,rb
CAL int ADD r0,-8
PUSH [r0]
POP r3
CMP dword r3,8
JPC B LABEL25
LD int r3,7
LABEL25:
LD int r0,VINT_A
CAL int MUL r3,4
CAL int ADD r0,r3
PUSH [r0]
POP r1
POP r0
CMP int r0,r1
JPC NZ LABEL26
PUSH 1
JMP LABEL27
LABEL26:
PUSH 0
LABEL27:
POP r3
;</Epression>
CMP int r3,0
JPC Z LABEL22
;<Epression>
; Flush stack: 1 ^  [2]
PUSH 1
POP r1
LD int r0,0
CAL int SUB r0,r1
PUSH r0
POP r3
;</Epression>
LD int r0,rb
CAL int ADD r0,-4
LD int [r0],r3
JMP LABEL23
LABEL22:	; Else
LABEL23:	; End of If
; If code
;<Epression>
; Flush stack: 16 16 16 16 - 16 16 - = 16 16 16 16 - 16 16 - = |  [19]
LD int r0,rb
CAL int ADD r0,12
PUSH [r0]
POP r3
CMP dword r3,8
JPC B LABEL30
LD int r3,7
LABEL30:
LD int r0,VINT_A
CAL int MUL r3,4
CAL int ADD r0,r3
PUSH [r0]
LD int r0,rb
CAL int ADD r0,-8
PUSH [r0]
POP r3
CMP dword r3,8
JPC B LABEL31
LD int r3,7
LABEL31:
LD int r0,VINT_A
CAL int MUL r3,4
CAL int ADD r0,r3
PUSH [r0]
POP r1
POP r0
CAL int SUB r0,r1
PUSH r0
LD int r0,rb
CAL int ADD r0,12
PUSH [r0]
LD int r0,rb
CAL int ADD r0,-8
PUSH [r0]
POP r1
POP r0
CAL int SUB r0,r1
PUSH r0
POP r1
POP r0
CMP int r0,r1
JPC NZ LABEL32
PUSH 1
JMP LABEL33
LABEL32:
PUSH 0
LABEL33:
LD int r0,rb
CAL int ADD r0,-8
PUSH [r0]
POP r3
CMP dword r3,8
JPC B LABEL34
LD int r3,7
LABEL34:
LD int r0,VINT_A
CAL int MUL r3,4
CAL int ADD r0,r3
PUSH [r0]
LD int r0,rb
CAL int ADD r0,12
PUSH [r0]
POP r3
CMP dword r3,8
JPC B LABEL35
LD int r3,7
LABEL35:
LD int r0,VINT_A
CAL int MUL r3,4
CAL int ADD r0,r3
PUSH [r0]
POP r1
POP r0
CAL int SUB r0,r1
PUSH r0
LD int r0,rb
CAL int ADD r0,12
PUSH [r0]
LD int r0,rb
CAL int ADD r0,-8
PUSH [r0]
POP r1
POP r0
CAL int SUB r0,r1
PUSH r0
POP r1
POP r0
CMP int r0,r1
JPC NZ LABEL36
PUSH 1
JMP LABEL37
LABEL36:
PUSH 0
LABEL37:
POP r1
POP r0
CAL int ADD r0,r1
PUSH r0
POP r3
;</Epression>
CMP int r3,0
JPC Z LABEL28
;<Epression>
; Flush stack: 1 ^  [2]
PUSH 2
POP r1
LD int r0,0
CAL int SUB r0,r1
PUSH r0
POP r3
;</Epression>
LD int r0,rb
CAL int ADD r0,-4
LD int [r0],r3
JMP LABEL29
LABEL28:	; Else
LABEL29:	; End of If
;<Epression>
; Flush stack: 16 1 +  [3]
LD int r0,rb
CAL int ADD r0,-8
PUSH [r0]
PUSH 1
POP r1
POP r0
CAL int ADD r0,r1
PUSH r0
POP r3
;</Epression>
LD int r0,rb
CAL int ADD r0,-8
LD int [r0],r3
JMP LABEL18
LABEL19:	; End of While
JMP LABEL15
LABEL14:	; Else
LABEL15:	; End of If
; If code
;<Epression>
; Flush stack: 16 1 >  [3]
LD int r0,rb
CAL int ADD r0,-4
PUSH [r0]
PUSH 0
POP r1
POP r0
CMP int r0,r1
JPC BE LABEL40
PUSH 1
JMP LABEL41
LABEL40:
PUSH 0
LABEL41:
POP r3
;</Epression>
CMP int r3,0
JPC Z LABEL38
; If code
;<Epression>
; Flush stack: 16 1 =  [3]
LD int r0,rb
CAL int ADD r0,12
PUSH [r0]
PUSH 7
POP r1
POP r0
CMP int r0,r1
JPC NZ LABEL44
PUSH 1
JMP LABEL45
LABEL44:
PUSH 0
LABEL45:
POP r3
;</Epression>
CMP int r3,0
JPC Z LABEL42
;<Epression>
; Flush stack: 16 1 +  [3]
PUSH [VINT_MAX]
PUSH 1
POP r1
POP r0
CAL int ADD r0,r1
PUSH r0
POP r3
;</Epression>
LD int r0,VINT_MAX
LD int [r0],r3
;<Epression>
; Flush stack: 16 C  [2]
PUSH [CSTRING_46]
POP r2
IN r3,2
IN r2,5
PUSH r3
POP r3
;</Epression>
OUT 2,r3
IN r3,8
;<Epression>
; Flush stack: 16  [1]
PUSH [VINT_MAX]
POP r3
;</Epression>
OUT 3,r3
OUT 4,10
JMP LABEL43
LABEL42:	; Else
;<Epression>
; Flush stack: 16 1 +  [3]
LD int r0,rb
CAL int ADD r0,12
PUSH [r0]
PUSH 1
POP r1
POP r0
CAL int ADD r0,r1
PUSH r0
POP r3
;</Epression>
PUSH r3
CALL FINT_SEARCH
CAL int ADD rs,4
LABEL43:	; End of If
JMP LABEL39
LABEL38:	; Else
LABEL39:	; End of If
;<Epression>
; Flush stack: 16  [1]
LD int r0,rb
CAL int ADD r0,12
PUSH [r0]
POP r3
;</Epression>
PUSH r3
;<Epression>
; Flush stack: 16 16 1 +  [4]
LD int r0,rb
CAL int ADD r0,12
PUSH [r0]
POP r3
CMP dword r3,8
JPC B LABEL47
LD int r3,7
LABEL47:
LD int r0,VINT_A
CAL int MUL r3,4
CAL int ADD r0,r3
PUSH [r0]
PUSH 1
POP r1
POP r0
CAL int ADD r0,r1
PUSH r0
POP r3
;</Epression>
POP r1
CMP dword r1,8
JPC B LABEL48
LD int r1,7
LABEL48:
LD int r0,VINT_A
CAL int MUL r1,4
CAL int ADD r0,r1
LD int [r0],r3
JMP LABEL9
LABEL10:	; End of While
FINT_SEARCH_EXIT:
LD int r3,[rb]
LD int rs,rb
POP rb
RET
; END FUN FINT_SEARCH


;================ Init Code ==================
LABEL0:
IN [VSTR_STATIC_STR],2
LD dword [CSTRING_7],CS_CSTRING_7
LD dword [CSTRING_46],CS_CSTRING_46
LD dword [CSTRING_49],CS_CSTRING_49
RET
LABEL1:
EXIT

; Declaration:
LABEL2:
DATA VFLO_STATIC_FLOAT dword 0
DATA VSTR_STATIC_STR dword 0
DATA VINT_STATIC_INT dword 0
DATA CSTRING_7 dword 0
DATA CS_CSTRING_7 char " ",0
DATA VINT_STATIC_INT1 dword 0
DATA VINT_STATIC_INT2 dword 0
DATA VINT_KEY_UP dword 0
DATA VINT_KEY_DOWN dword 0
DATA VINT_KEY_LEFT dword 0
DATA VINT_KEY_RIGHT dword 0
DATA VINT_KEY_SPACE dword 0
DATA VINT_KEY_ESCAPE dword 0
DATA VINT_KEY_ENTER dword 0
DATA VINT_A dword 0
.BLOCK 32 0
DATA VINT_MAX dword 0
DATA CSTRING_46 dword 0
DATA CS_CSTRING_46 char "FIND ",0
DATA CSTRING_49 dword 0
DATA CS_CSTRING_49 char "HELLO",0

⌨️ 快捷键说明

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