Проверьте, больше ли значение 16 бит, чем 1000 RISC Picoblaze

Я конвертирую 16-битное число в десятичное для отображения на четырех светодиодном дисплее.

Я хочу проверить, больше ли 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 ответ

Впервые слышу о 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:
...
Другие вопросы по тегам