Проверьте, больше ли значение 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:
...