差異處
這裏顯示兩個版本的差異處。
| 兩邊的前次修訂版前次修改 下次修改 | 前次修改 | ||
| wiki:自动化与科技指导:minecoprocessors:示范程序 [2023/12/07 19:45] – [延时器] nikoqw | wiki:自动化与科技指导:minecoprocessors:示范程序 [2023/12/08 10:43] (目前版本) – nikoqw | ||
|---|---|---|---|
| 行 1: | 行 1: | ||
| ====== 示范程序 ====== | ====== 示范程序 ====== | ||
| - | ===== 「标准库」 ===== | ||
| - | 提供一些通用的功能,如延时等。 | ||
| - | <code ASM> | ||
| - | JMP _start | ||
| - | |||
| - | ; 【作用】 | ||
| - | ; 延时 | ||
| - | ; 【参数】 | ||
| - | ; a[I][int]:延时的 c | ||
| - | ; -ycles 数目,> | ||
| - | ; 【内部使用的寄存器】 | ||
| - | ; b[int]:延时计数 | ||
| - | sleep: | ||
| - | ; Init reg | ||
| - | PUSH b | ||
| - | MOV b, 0 | ||
| - | |||
| - | ; Main logic | ||
| - | sleep__loop: | ||
| - | ADD b, 1 | ||
| - | CMP b, a | ||
| - | JNZ sleep__loop | ||
| - | |||
| - | </ | ||
| - | \\ | ||
| - | <code ASM> | ||
| - | ; Exit | ||
| - | POP b | ||
| - | RET | ||
| - | |||
| - | ; 【作用】 | ||
| - | ; 等待某个红石输入寄存器得到 | ||
| - | ; 高电平 | ||
| - | ; 【参数】 | ||
| - | ; a[I][int]:红石寄存器 | ||
| - | ; 编号 | ||
| - | wait_in_high: | ||
| - | CMP a, 0 | ||
| - | JZ wih__pf | ||
| - | CMP a, 1 | ||
| - | JZ wih__pb | ||
| - | CMP a, 2 | ||
| - | JZ wih__pl | ||
| - | CMP a, 3 | ||
| - | JZ wih__pr | ||
| - | HLT ; a 非法 | ||
| - | </ | ||
| - | \\ | ||
| - | <code ASM> | ||
| - | |||
| - | wih__pf: | ||
| - | CMP pf, 0x00 | ||
| - | JZ wih__pf | ||
| - | RET | ||
| - | |||
| - | wih__pb: | ||
| - | CMP pb, 0x00 | ||
| - | JZ wih__pb | ||
| - | RET | ||
| - | |||
| - | wih__pl: | ||
| - | CMP pl, 0x00 | ||
| - | JZ wih__pl | ||
| - | RET | ||
| - | |||
| - | wih__pr: | ||
| - | CMP pr, 0x00 | ||
| - | JZ wih__pr | ||
| - | RET | ||
| - | </ | ||
| - | |||
| - | |||
| ===== 延时器 ===== | ===== 延时器 ===== | ||
| 类似于中继器,但区别在于:得到高电平输入时,立刻输出高电平而不等待,只在已输出高电平和恢复输出低电平之间等待固定时长。 | 类似于中继器,但区别在于:得到高电平输入时,立刻输出高电平而不等待,只在已输出高电平和恢复输出低电平之间等待固定时长。 | ||
| 行 77: | 行 5: | ||
| **引脚作用**(trispc) 后引脚:输入,前引脚:输出 | **引脚作用**(trispc) 后引脚:输入,前引脚:输出 | ||
| - | < | + | <code-splitter> |
| _start: | _start: | ||
| MOV ports, 0010b | MOV ports, 0010b | ||
| 行 94: | 行 22: | ||
| MOV pf, 0x00 | MOV pf, 0x00 | ||
| JMP wait_in | JMP wait_in | ||
| - | </ | + | </code-splitter> |