Программу на asm переделать на Си - AVR

Узнай цену своей работы

Формулировка задачи:

Всем добрый вечер! С горем пополам написал код нахождения определителя матрицы 3х3, подскажите зачем в метке Matrix записывается в R16 0x55 ? Нужно переписать эту программу на Си, понятия не имею как работать с памятью и регистрами в Си, хотелось бы узнать как это пишется с подробными комментариями.
.include"m128def.inc" 
 
jmp RESET 
.ORG 0x3C 
jmp READ 
 
RESET: 
 
ldi R16, 0b100110 
sts UCSR1C, R16 
 
ldi R29, 0 
 
ldi R27, 0x01 
ldi R26, 0x00 
 
ldi R16,0b10011000 
sts UCSR1B, R16 
 
ldi R16,0b0 
sts UBRR1H, R16 
ldi R16,0b10111 
sts UBRR1L, R16 
 
ldi r16,high(RAMEND) 
out SPH,r16 
ldi r16,low(RAMEND) 
out SPL,r16 
sei 
A: jmp A 
 
READ: 
lds r20, UDR1 
mov r6, r20 
call SAFE 
 
st x+, R20 
inc R29 
cpi R29, 9 
breq Matrix 
reti 
 
Matrix: 
ldi r16, 0x55 //ТУТ ЧТО?
mov r6, r16  
call SAFE 
ldi R27, 0x01 
ldi R26, 0x00 
 
lds R2, 0x100 
lds R3, 0x104 
mul R2, R3 
lds R3, 0x108 
mul R0, R3 
mov R6, R0 
 
lds R2, 0x101 
lds R3, 0x105 
mul R2, R3 
lds R3, 0x106 
mul R0, R3 
mov R7, R0 
 
lds R2, 0x102 
lds R3, 0x103 
mul R2, R3 
lds R3, 0x107 
mul R0, R3 
mov R8, R0 
 
lds R2, 0x102 
lds R3, 0x104 
mul R2, R3 
lds R3, 0x106 
mul R0, R3 
mov R9, R0 
 
lds R2, 0x100 
lds R3, 0x105 
mul R2, R3 
lds R3, 0x107 
mul R0, R3 
mov R10, R0 
 
lds R2, 0x101  
lds R3, 0x103 
mul R2, R3 
lds R3, 0x108 
mul R0, R3 
mov R11, R0 
 
add R6, R7 
add R6, R8 
 
sub R6, R9 
sub R6, R10 
sub R6, R11 
 
call safe 
reti 
SAFE: 
lds R0, UCSR1A 
sbrs R0, 5 
jmp SAFE 
sts UDR1, R6 
RET
И было бы не плохо определить какой код на asm или Cи более оптимален и ест меньше памяти

Решение задачи: «Программу на asm переделать на Си»

textual
Листинг программы
lds r20, UDR1 
mov r6, r20 
call SAFE

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.455 из 5