Дана лабораторная работа. Преподаватель дал код, требуется его подправить и сделать на основе этого сложение\вычитание\умножение. На счёт подправить, там когда происходит переполнение при сложении, единичка не переносится в соседнюю ячейку. Надеюсь, вы меня поймёте, предмет ни к месту у меня в универе (специальность электромонтёр). Сам преподаватель с этим за пару минут справляется, а нас гоняет. Файл с лабораторной и кодом программы приложен. Желательно для последующего сотрудничества.
Пишите, не стесняйтесь. Обсудим.
Сам код:
.include "m103def.inc"
;********Определение констант*****************************************************
.EQU lniX=$60
.EQU lniY=$70
.EQU lniZ=$80
.EQU NCircle=16
.ORG 0
rjmp $30
;***** Инициализация указателей, счетчика циклов и флага управления переносом *****
.ORG $30
ldi R26,low(lniX) ; загрузка per. X значением указателя на память данных
ldi R27,high(lniX) ;
ldi R28,low(lniY) ; загрузка per. Y значением указателя на память данных
ldi R29,high(lniY) ;
ldi R30,low(lniZ) ; загрузка per. Z значением указателя на память данных
ldi R31,high(lniZ) ;
ldi R16,Ncircle ; в R16 - счетчик ЦИКЛОВ=2*NЧИСЕЛ
ldi R17,$00 ; в R17 - 0
ldi R18,$01 ; в R18 - 1 в младший бит
;***** Сложение массивов 16-разрядных чисел***************************************
LP1:
sbrs R17, 0
clc
LP2: ld R3, Х+ ; загрузка байта 1-операнда
ld R4, Y+ ; загрузка байта 2-операнда
adc R3, R4 ; сложение байтов операндов с учетом переноса
st Z+, R3 ; запись результата в память
eor R17, R18 ; чередование 0 и 1 в младшем бите R17
dec R16 ; декремент счетчика байтов
brne LP1 ; зацикливание, если счетчик байтов не равен нулю
loop: rjmp loop ; зацикливание программы для исключения зависаний
Гарантия на работу | 1 год |
Средний балл | 4.96 |
Стоимость | Назначаете сами |
Эксперт | Выбираете сами |
Уникальность работы | от 70% |