Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Микроконтроллеры (MCU) и микропроцессоры (MPU) > Вычитание AVR


Автор: pettimm 24.10.2015, 10:50
Привет, всем! Подскажите пожалуйста ,
AVR ассемблер:
 Вариант1:  R0=0 , а R1=1  и вот отнимаем sub   R0,R1
 Вопрос: какое число будет в результате? -1??? , тоесть в R0 появится 1 и взведен флаг отрицательного числа??
взведется ли флаг перенрса, и что он нам даст в данном случае?

Вариант2: двухбайтовое число  RH0=2 , а RL0=0  ,  RH1=0 ,  RL1=1  
  
                                 SUB  RL0,RL1     SUB  RH0, RH1   -ТУТ  РЕЗУЛЬТАТ БУДЕТ = 1F
Значит младший байт с 0 перескочил на F ,  мы понимаем что он сделал заем с старшего байта, значит и в первом варианте тоже  младший байт перескочит на с 0 на  F ?  Но число то однобайтное в первом варианте, откуда возмеш???
 Но так же и во втором ему нужно знать что есть откуда брать.Спасибо. 

Автор: xvr 26.10.2015, 12:18
Цитата(pettimm @  24.10.2015,  10:50 Найти цитируемый пост)
Вопрос: какое число будет в результате? -1???

Да

Цитата(pettimm @  24.10.2015,  10:50 Найти цитируемый пост)
тоесть в R0 появится 1 и взведен флаг отрицательного числа??

Нет. В R0 будет FF (гуглить по словам 'двоичный дополнительный код')

Цитата(pettimm @  24.10.2015,  10:50 Найти цитируемый пост)
Вариант2: двухбайтовое число  RH0=2 , а RL0=0  ,  RH1=0 ,  RL1=1    
                                 SUB  RL0,RL1     SUB  RH0, RH1   -ТУТ  РЕЗУЛЬТАТ БУДЕТ = 1F

Результат будет другой (неправильный) - 2FF, так как вычитание неправильное. Должно быть:
Код

SUB  RL0,RL1     
SBC  RH0, RH1 


Автор: pettimm 31.10.2015, 19:55
Спасибо за ответ, второй пример понял, а по первому, где отрицательное число-подумаю, спасибо..

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)