====== 「标准库」 ======
提供一些通用的功能,如延时等。
===== 约定 =====
* ''_start'' 函数应当永不返回。若 ''_start'' 函数返回,则行为未定义。
* 传给函数的自变量应始终在定义域之内。若给定参数在函数定义域之外,则行为未定义。
===== 代码 =====
;
; 在第一行写您程序的
; 名称。
; NPCCRAFT
; 微处理器「标准库」
; 请赴 WIKI 「自动化与科技指
; 导:minecoprocesso
; -rs:标准库」查看用法。
JMP _start
; 【FUNC】c====
sleep:
; Main logic
sleep__loop:
DEC c
CMP c, 0
JNZ sleep__loop
RET
; 【FUNC】c,,d====
pull_in_Rd:
CMP c, 0
JZ pi__pf
CMP c, 1
JZ pi__pb
CMP c, 2
JZ pi__pl
CMP c, 3
JZ pi__pr
HLT ; c 非法
pi__pf:
MOV d, pf
CMP d, 0x00
JZ pi__pf
RET
pi__pb:
MOV d, pb
CMP d, 0x00
JZ pi__pb
RET
pi__pl:
MOV d, pl
CMP d, 0x00
JZ pi__pl
RET
pi__pr:
MOV d, pr
CMP d, 0x00
JZ pi__pr
RET
; 【FUNC】dc====
out_h_for_wle:
CMP d, 0
JZ ohfw__pf
CMP d, 1
JZ ohfw__pb
CMP d, 2
JZ ohfw__pl
CMP d, 3
JZ ohfw__pr
HLT ; d 非法
ohfw__pf:
MOV pf, 0xff
CALL sleep
MOV pf, 0x00
RET
ohfw__pb:
MOV pb, 0xff
CALL sleep
MOV pf, 0x00
RET
ohfw__pl:
MOV pl, 0xff
CALL sleep
MOV pf, 0x00
RET
ohfw__pr:
MOV pr, 0xff
CALL sleep
MOV pf, 0x00
RET
===== 手册 =====
==== sleep ====
**【作用】:**
延时。
**【参数】:**
^ 传参方式 ^ 值类型 ^ 作用 / 说明 ^
| 寄存器 c | $n>0$ | 延时的 cycles 数目 |
==== pull_in_Rd ====
该函数为 Rd 函数。
**【作用】:**
拉取一个非零红石输入。
该函数会等待指定的红石输入口得到一个非零的值,然后返回得到的值。
**【参数】:**
^ 传参方式 ^ 值类型 ^ 作用 / 说明 ^
| 寄存器 c | $[0, 3]$ | 红石输入口编号。 |
**【返回】:**
^ 返回方式 ^ 作用 / 说明 ^
| 寄存器 d | 指定红石输入口得到的值 |
==== out_h_for_wle ====
**【作用】:**
在指定的红石输出口输出高电平指定时间。
该函数为 ''MOV px, xx'' 与 ''CALL sleep'' 的合体。
**【参数】:**
^ 传参方式 ^ 值类型 ^ 作用 / 说明 ^
| 寄存器 d | $[0, 3]$ | 红石输出口编号。 |
| 寄存器 c | $n>0$ | 输出多长时间。 |