Я использую стартовую панель TI MPS430G2553 и Code Composer Studio v6Как сравнить отрицательные числа с положительными в коде сборки?
Я пытаюсь сравнить с числами в массиве. Я перебираю массив по массиву и каждый номер сравниваю его с следующим числом в массиве. Если следующее число меньше текущего, они переключают позиции. В противном случае, ничего не происходит
Я сравниваю их с помощью этой команды:
cmp 0(array),1(array)
jl SWITCH
Проблема заключается в том, некоторые из чисел в массиве являются отрицательными, и они рассматриваются в качестве их двоек дополняют, например, когда сравните 55 и -9, он не переключает их, потому что обрабатывает -9 как 246 (когда я назначаю его регистру и использую режим отладки, регистр содержит номер 246)
Как это решить? все, что я ищу, говорит, что решение состоит в использовании команды jl
, но я уже это делаю.
мое окно памяти показывает для этого массива 10 17 55 -9 22 36 -7 37 8 -77 8
Here is the instruction set my professor gave me
Вычесть (или добавить) 128 на каждое число. Числа байтов: -128, ... -1, 0, ...127 и добавив 128 «по модулю 256», вы получите диапазон 0, ... 255, или, может быть, есть знак сравнения или переход на минус (jl = less без знака). –
Когда я это делаю, он по-прежнему обрабатывает -9 как 246. Я добавляю от 128 до 246 и получаю 374, что еще больше 55 + 128 –
Вам нужно добавить modulo 256 (т. Е. Усекать до 8 бит). Низкие 8 бит «128 + 246» дают вам 118, что ниже (128 + 55) = 183. –