Программу на asm переделать на Си - AVR
Формулировка задачи:
Всем добрый вечер! С горем пополам написал код нахождения определителя матрицы 3х3, подскажите зачем в метке Matrix записывается в R16 0x55 ?
Нужно переписать эту программу на Си, понятия не имею как работать с памятью и регистрами в Си, хотелось бы узнать как это пишется с подробными комментариями.
И было бы не плохо определить какой код на asm или Cи более оптимален и ест меньше памяти
.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 переделать на Си»
textual
Листинг программы
lds r20, UDR1 mov r6, r20 call SAFE
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д