Форум за електроника Форуми Форум за електроника
Български форум за електроника, ремонти, схеми, документация
 
 Въпроси/ОтговориВъпроси/Отговори   ТърсенеТърсене   ПотребителиПотребители   ГрупиГрупи   Регистрирайте сеРегистрирайте се 
 ПрофилПрофил   Влезте, за да видите съобщенията сиВлезте, за да видите съобщенията си   ВходВход 

Помощ за signed и unsigned в асемблер

 
Създайте нова тема   Напишете отговор    Форум за електроника Форуми -> Обща електроника - General Electronics



Предишната тема :: Следващата тема  
Автор Съобщение
ivanovbg
Опитен потребител
Опитен потребител


Регистриран на: 14 Ное 2009
Мнения: 372

МнениеПуснато на: Пет Дек 17, 2010 15:06    Заглавие: Помощ за signed и unsigned в асемблер Отговорете с цитат

Малко помощ за тези два вида,че нещо немога да ги схвана правилно.
По дефиниция signed са стойностите от 1 до 256 ,а unsigned са от -128 до 128.Ако е така примерно числото 3 може и да е от двете.Така ли е или не съм вързал нещата правилно?
Става въпрос за този примерно:
seg004:AB89 91 6F cmpa byte_6F ; Compare accumulator with memory
seg004:AB8B 23 2E bls loc_ABBB ; Branch if <= (unsigned)
seg004:AB8D D1 6F cmpb byte_6F ; Compare accumulator with memory
seg004:AB8F 24 2A bcc loc_ABBB ; Branch if carry bit clear
Нали за да вляза в разклонението трябва да е по малко или равно,но защо unsigned?На други места има и Branch if >signed
_________________
Ако нещо не не става с акъл,опитай с мощност Smile
Ако и мощността (чука) не помогне-потърси по знаещи!
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение Изпрати мейла
svilen.ivanov
Активен потребител
Активен потребител


Регистриран на: 10 Апр 2010
Мнения: 87
Местожителство: София

МнениеПуснато на: Пет Дек 17, 2010 15:33    Заглавие: Отговорете с цитат

signed са от -128 до 127 (да не забравяме за нулата - и тя е число).

При числото 3 и двете проверки работят защото е 0 < 3 < 127. Проблема е примерно с 230. Ако правиш signed проверка, 230 ще се интерпретира като отрицателно число (-102 = 128-230) и в този случай проверката няма да ти работи коректно за числа >127.
_________________
Ако не можеш да го отвориш, значи не го притежаваш!
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение Изпрати мейла Посетете сайта на потребителя
ivanovbg
Опитен потребител
Опитен потребител


Регистриран на: 14 Ное 2009
Мнения: 372

МнениеПуснато на: Пет Дек 17, 2010 16:17    Заглавие: Отговорете с цитат

Значи ако съм разбрал правилно,сравнявам стойноста на акомулатора с стойноста на адрес 6F в рамта и ако е по-малка или равна се разклонявам.Но стойноста на 6F трябва да е в границата от -128 до 127
Ако тя е примерно128 се приема за отрицателна т.е. -1 и проверката не е коректна.И за да е всичко наред 6F не трябва да надвишава тази стойност.Така ли?

Мъча една стара програма да я разгадая по обратен ред, та за това питам.
_________________
Ако нещо не не става с акъл,опитай с мощност Smile
Ако и мощността (чука) не помогне-потърси по знаещи!
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение Изпрати мейла
tropper
Опитен потребител
Опитен потребител


Регистриран на: 08 Сеп 2005
Мнения: 1299
Местожителство: София

МнениеПуснато на: Пет Дек 17, 2010 16:24    Заглавие: Отговорете с цитат

По-скоро има значение дали и двете променливи са от един тип.
Пример:
в регистъра държиш променлива (signed) -3 = (hex) FD
в паметта на тоя адрес държиш (unsiged) 240 = (hex) F0

Тогава ще получиш че -3 > 240, защото (unsigned) -3 = 253.

Смислът на коментара е да ти каже че проверката се изпълнява като се представят числата като беззнакови.
_________________
Тодор Симеонов.
skype: todor.simeonov
Захранващи решения за LAN мрежи.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение Изпрати мейла Посетете сайта на потребителя
ivanovbg
Опитен потребител
Опитен потребител


Регистриран на: 14 Ное 2009
Мнения: 372

МнениеПуснато на: Пет Дек 17, 2010 16:47    Заглавие: Отговорете с цитат

Разбрах ! Благодаря много Very Happy
Мисля че случая е точно такъв.
А като е signed e от значение знака
_________________
Ако нещо не не става с акъл,опитай с мощност Smile
Ако и мощността (чука) не помогне-потърси по знаещи!
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение Изпрати мейла
Покажи мнения от преди:   
Създайте нова тема   Напишете отговор    Форум за електроника Форуми -> Обща електроника - General Electronics Часовете са според зоната GMT + 2 Часа
Страница 1 от 1

 
Към:  
Не Можете да пускате нови теми
Не Можете да отговаряте на темите
Не Можете да променяте съобщенията си
Не Можете да изтривате съобщенията си
Не Можете да гласувате в анкети


Powered by phpBB © 2001, 2005 phpBB Group
Translation by: Boby Dimitrov
Where to Find Free Service Manuals