差異處
這裏顯示兩個版本的差異處。
兩邊的前次修訂版前次修改 下次修改 | 前次修改 | ||
wiki:自动化与科技指导:minecoprocessors:标准库 [2023/12/08 09:58] – [sleep] nikoqw | wiki:自动化与科技指导:minecoprocessors:标准库 [2023/12/11 11:19] (目前版本) – nikoqw | ||
---|---|---|---|
行 1: | 行 1: | ||
====== 「标准库」 ====== | ====== 「标准库」 ====== | ||
提供一些通用的功能,如延时等。 | 提供一些通用的功能,如延时等。 | ||
+ | ===== 约定 ===== | ||
+ | * '' | ||
+ | * 传给函数的自变量应始终在定义域之内。若给定参数在函数定义域之外,则行为未定义。 | ||
+ | |||
===== 代码 ===== | ===== 代码 ===== | ||
< | < | ||
+ | ; | ||
+ | ; 在第一行写您程序的 | ||
+ | ; 名称。 | ||
+ | |||
; NPCCRAFT | ; NPCCRAFT | ||
; 微处理器「标准库」 | ; 微处理器「标准库」 | ||
- | ; 请赴 WIKI 「自动化 | + | ; 请赴 WIKI 「自动化与科技指 |
- | ; 与科技指导:min | + | ; 导:minecoprocesso |
- | ; ecoprocessors | + | ; -rs:标准库」查看用法。 |
- | ; :标准库」查看用法。 | + | |
JMP _start | JMP _start | ||
- | ; 【FUNC】==== | + | ; 【FUNC】c==== |
sleep: | sleep: | ||
- | ; Init reg | ||
- | PUSH b | ||
- | MOV b, 0 | ||
- | |||
; Main logic | ; Main logic | ||
sleep__loop: | sleep__loop: | ||
- | ADD b, 1 | + | DEC c |
- | CMP b, a | + | CMP c, 0 |
JNZ sleep__loop | JNZ sleep__loop | ||
- | |||
- | ; Exit | ||
- | POP b | ||
RET | RET | ||
- | ; 【FUNC】==== | + | ; 【FUNC】c,,d==== |
pull_in_Rd: | pull_in_Rd: | ||
CMP c, 0 | CMP c, 0 | ||
行 62: | 行 62: | ||
JZ pi__pr | JZ pi__pr | ||
RET | 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 | ||
+ | |||
</ | </ | ||
行 72: | 行 109: | ||
<wrap hi> | <wrap hi> | ||
- | ^ 传参方式 | + | ^ 传参方式 |
- | | 寄存器 | + | | 寄存器 |
- | + | ==== pull_in_Rd ==== | |
- | <wrap hi> | + | |
- | + | ||
- | ^ 寄存器名 | + | |
- | | b | 延时计数 | + | |
- | + | ||
- | ==== pull_in_Rd==== | + | |
<wrap cjk-em> | <wrap cjk-em> | ||
行 91: | 行 122: | ||
<wrap hi> | <wrap hi> | ||
- | ^ 传参方式 | + | ^ 传参方式 |
- | | 寄存器 c | $[0, 3]$ | I | 红石输入口编号。 | + | | 寄存器 c | $[0, 3]$ | 红石输入口编号。 |
<wrap hi> | <wrap hi> | ||
行 98: | 行 129: | ||
^ 返回方式 | ^ 返回方式 | ||
| 寄存器 d | 指定红石输入口得到的值 | | 寄存器 d | 指定红石输入口得到的值 | ||
+ | |||
+ | ==== out_h_for_wle ==== | ||
+ | <wrap hi> | ||
+ | |||
+ | 在指定的红石输出口输出高电平指定时间。 | ||
+ | |||
+ | 该函数为 '' | ||
+ | |||
+ | <wrap hi> | ||
+ | |||
+ | ^ 传参方式 | ||
+ | | 寄存器 d | $[0, 3]$ | 红石输出口编号。 | ||
+ | | 寄存器 c | $n> |