| Предишната тема :: Следващата тема |
| Автор |
Съобщение |
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 _________________ Ако нещо не не става с акъл,опитай с мощност
Ако и мощността (чука) не помогне-потърси по знаещи! |
|
| Върнете се в началото |
|
 |
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 не трябва да надвишава тази стойност.Така ли?
Мъча една стара програма да я разгадая по обратен ред, та за това питам. _________________ Ако нещо не не става с акъл,опитай с мощност
Ако и мощността (чука) не помогне-потърси по знаещи! |
|
| Върнете се в началото |
|
 |
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 Заглавие: |
|
|
Разбрах ! Благодаря много
Мисля че случая е точно такъв.
А като е signed e от значение знака _________________ Ако нещо не не става с акъл,опитай с мощност
Ако и мощността (чука) не помогне-потърси по знаещи! |
|
| Върнете се в началото |
|
 |
|