====== 「标准库」 ====== 提供一些通用的功能,如延时等。 ===== 约定 ===== * ''_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$ | 输出多长时间。 |