我正在将16位数字转换为十进制数,以便在四个LED显示屏上显示。
我想检查16位值是否大于1000.目前我已实现此功能,但有时它不会输出正确的值,我无法弄清楚原因。
;s2 is MSB and s3 LSB
minus_100_hbyte:;Minus one hundred
COMP s2, $01
JUMP C, minus_100
ADD s6, $01 ;increment 100 counter
SUB s3, $64 ;100 in decimal
SUBC s2, $00
JUMP minus_100_hbyte
minus_100:;Minus one hundred
COMP s3, $64
JUMP C, minus10
ADD s6, $01 ;increment 100 counter
SUB s3, $64
SUBC s2, $00
JUMP minus_100
答案 0 :(得分:1)
这是我第一次听到picoblaze,但是......
这是什么:“COMP s2,$ 01”? 我以为你想比较1000小数?
1000十进制是03e8十六进制。
也许这样的事情(虽然不是很优雅 - 汇编对我来说很新)?
comp s2, $03
jump nc greater_than_1000
jump nz less_than_1000
comp s3, $e8
jump nc less_than_1000
jump nz greater_than_1000
less_than_1000:
...
greater_than_1000:
...