@GNU AS
@.CharSet=CP1251

.syntax unified     @ синтаксис исходного кода
.thumb              @ тип используемых инструкций Thumb
.cpu cortex-m3      @ процессор

@ +-------------------------------------------------------------------------+
@ |                                                                         |
@ |               Программа тестирования операций сравнения                 |
@ |                                                                         |
@ |  Использование:                                                         |
@ |  Задаете два значения, операцию сравнения меняете на нужную,            |
@ |  компилируете, прошиваете, и запускаете отладку                         |
@ |  исполняя код по шагам, наблюдаете за флагами выставляемыми после       |
@ |  операции сравнения                                                     |
@ |                                                                         |
@ +-------------------------------------------------------------------------+

.section .asmcode

.global Start
Start:
                    MOV        R0, 1         @ первое значение сравнения
                    MOV        R1, 2         @ второе значение сравнения
MAIN_LOOP:
                    TST        R0, R1        @ операция сравнения

                    ADD        R0, R0, 1
                    B          MAIN_LOOP

@ +------------------+------------------------------+-----------------------------+-----------------------------------+
@ |                  |                              |                             |                                   |
@ | CMP:  Сравнение  |         CMN:  Сравнение      |  TEQ:   тест на совпадение  |       TST  бит по маске           |
@ |       SUB        |               ADD            |          EORS (XOR)         |             ANDS                  |
@ |                  |        оба отрицательные     |                             |                                   |
@ |     <    N       |              N C             |     полное совпадение Z=1   |   если ни один бит из указанных   |
@ |     =   Z C      |                              |     обновляется N           |   в маски не установоен, то Z=1   |
@ |     >    C       |       ноль и отрицательное   |     V C не  меняются        |   иначе Z=0                       |
@ |                  |  (arg.1=0) < |-arg.2|  N     |                             |                                   |
@ |                  |                              +-----------------------------+-----------------------------------+
@ |                  |     +arg.1 < |-arg.2|  N    <- полож и отрицательное                                           |
@ |                  |                                                                                                |
@ |                  |     +arg.1 = |-arg.2|  Z C  <- равные по модулю                                                |
@ |                  |                                                                                                |
@ |                  |     +arg.1 > |-arg.2|   C   <- положительное больше чем  модуль отрицательного                 |
@ |                  |                                                                                                |
@ +------------------+------------------------------------------------------------------------------------------------+



