-1

我正在将 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
4

1 回答 1

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:
...
于 2013-12-08T01:52:58.263 回答