检查16位值是否大于1000 RISC Picoblaze

时间:2013-12-07 19:36:12

标签: assembly picoblaze

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

1 个答案:

答案 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:
...