Немного про ARM ассемблер. Пишем многопоточную программу.

Пишем простую многопоточную программку на ARM ассемблере.


devprodest

Ассемблер не плохой язык программирования. Одновременно и мощный и сложный, но не такой сложный как можно подумать. Предлагаю развенчать мифы об этом. Вспомнить наши корни и попробовать написать программу на ассемблере под ARM Cortex-M3, в качестве подопытного будем использовать отладку с алиэкспрес для микроконтроллера stm32f103c8.

Если заинтересовал - читайте дальше.

Реализация обработчика прерывания клавиатуры в окружении DOS

Резидентный перехватчик аппаратного прерывания клавиатуры для ДОС.


r2aiv
Cover Image

Сегодня мы рассмотрим, как написать простейший перехватчик прерывания под ДОС. Зачем это надо в наше время? Ответ прост - для того, чтобы лучше разобраться как работает машина на низком уровне, общего развития и расширения кругозора, ну и некоторым для написания курсачей. Возможно этот материал будет полезен желающим попробовать написать свою ОС - почему бы и нет?

Интересно? Мы начинаем!

Список команд ядра cortex-m3

Список команд ядра ARM Cortex-m3


devprodest

Арифметические операции

Операция Пример Описание
ADD ADD R0, R1, Operand2
ADD R0, R1, 12bit const.
Сложение
R0 = R1 + R2
N, Z, C, V  S
ADC ADC R0, R1, R2
ADC R0, R1, 8bit const
Сложение с учётом переноса
R0 = R1 + R2 + C
N, Z, C, V S
ADDW ADD R0, R1, 12bit const. Сложение с 12bit константой N, Z, C, V  
SUB SUB R0, R1, R2
SUB R0, R1, 12bit const.
Вычитание
R0 = R1 - R2
N, Z, C, V S
SBC SBC R0, R1, R2
SBC R0, R1, 8bit const.
Вычитание с учётом переноса
R0 = R1 - R2 - C
N, Z, C, V S
SUBW SUB R0, R1, 12bit const. Вычитание с 12bit константой N, Z, C, V  
RSB RSB R0, R1, R2
RSB R0, R1, 8bit const. 
RSB R0, R1, R2, ASR#23
Вычитание с противоположным порядком аргументов. 
R0 = R2 - R1 или R0 = 8bit const - R1
N, Z, C, V S