Конструкция IF-ELSE в ассемблере для stm32
Добавлено: 11 дек 2020, 14:57
Добрый день, уважаемые участники форума!
Кто-нибудь пробовал применять конструкцию IF-ELSE в программах на Ассемблере для МК stm32?
Задача сравнить содержимое двух регистров.
Имею такой код:
mov r1, #0xAA
mov r2, #0xAA
IF r1 == r2
;Набор инструкций
ELSE
;Набор инструкций
ENDIF
Проблема в том, при равенстве значений в r0 и r1 программа всегда переходит блок ELSE.
Пробовал даже делать так:
К примеру имеются некие заранее объявленные переменные hi и lo
AREA RAM, NOINIT, READWRITE
hi DCDU 0
lo DCDU 0
AREA Program, CODE, READONLY
...
mov r1, #0xAA
ldr r0, =hi
str r0, [r1]
;Для переменной lo то же, самое
IF r1 == r2
;Набор инструкций
ELSE
;Набор инструкций
ENDIF
Результат тот же, что и в первом случае
С директивами GBLL и SETL вообще ни чего не понятно. Компилятор ругается на неверный тип данных. Перепробовал кучу комбинаций. И, сказать по правде, складывается такое мнение, что конструкция IF..., в данном контексте, предусмотрена вообще не для этого.
Кто-нибудь пробовал применять конструкцию IF-ELSE в программах на Ассемблере для МК stm32?
Задача сравнить содержимое двух регистров.
Имею такой код:
mov r1, #0xAA
mov r2, #0xAA
IF r1 == r2
;Набор инструкций
ELSE
;Набор инструкций
ENDIF
Проблема в том, при равенстве значений в r0 и r1 программа всегда переходит блок ELSE.
Пробовал даже делать так:
К примеру имеются некие заранее объявленные переменные hi и lo
AREA RAM, NOINIT, READWRITE
hi DCDU 0
lo DCDU 0
AREA Program, CODE, READONLY
...
mov r1, #0xAA
ldr r0, =hi
str r0, [r1]
;Для переменной lo то же, самое
IF r1 == r2
;Набор инструкций
ELSE
;Набор инструкций
ENDIF
Результат тот же, что и в первом случае
С директивами GBLL и SETL вообще ни чего не понятно. Компилятор ругается на неверный тип данных. Перепробовал кучу комбинаций. И, сказать по правде, складывается такое мнение, что конструкция IF..., в данном контексте, предусмотрена вообще не для этого.