Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.09.17;
Скачать: CL | DM;

Вниз

дельфи и ASM   Найти похожие ветки 

 
r@bbit   (2006-08-03 19:53) [0]

Доброго времени суток!
Подскажите в чём проблема:

asm
...
mov ax,k; k = 8, тип WORD
cmp ax,65500;
jge @m2; - а вот тут происходит переход, хотя не должен! отчего так? вроде выполнение должно было дальше идти, ведь k<65500...
...
@m2:
...


 
begin...end ©   (2006-08-03 20:17) [1]

Команда JGE может использоваться для анализа результата сравнения чисел с учётом знака (т.е. 65500 = $FFDC здесь рассматривается как -36). Чтобы сравнивать без учёта знака, используйте JAE.


 
KilkennyCat ©   (2006-08-03 20:17) [2]

условие выполняется, потому что 65500 больше либо равно k


 
begin...end ©   (2006-08-03 20:29) [3]

> KilkennyCat ©   (03.08.06 20:17) [2]

?


 
r@bbit   (2006-08-03 20:50) [4]

>begin...end
спасибо! а то я в асме не силён к сожалению...


 
Anatoly Podgoretsky ©   (2006-08-03 21:32) [5]

begin...end ©   (03.08.06 20:29) [3]
Он прав 8 > -36


 
begin...end ©   (2006-08-03 21:41) [6]

> Anatoly Podgoretsky ©   (03.08.06 21:32) [5]

Буду рад, если Вы поясните, как из утверждения 65500 >= 8 следует утверждение -36 < 8.


 
Anatoly Podgoretsky ©   (2006-08-03 22:48) [7]

begin...end ©   (03.08.06 21:41) [6]
Потому что  команда jge @m2 оперирует числами со знаком, 65500 и есть это самое -36
$FFDC - вот он старший бит знака установлен, далее согласно математике с дополнением до двух.

FFDC = 1111 1111 1101 1100
not    x000 0000 0010  0033 = 35
0035 + 1 = 36 cо знаком минус


 
Anatoly Podgoretsky ©   (2006-08-03 22:53) [8]

Дополнение
1111 1111 1101 1100 это 65500 если без знака и -36 если со знаком, или два символа ASCII с кодами FF и DC или один символ Юникод с кодом DCFF или просто битовый набор. Все зависит от интерпритации, команда jge интерпритирует, как целое со знаком.


 
Германн ©   (2006-08-04 00:22) [9]


> begin...end ©   (03.08.06 20:17) [1]
>
> Команда JGE может использоваться для анализа результата
> сравнения чисел с учётом знака (т.е. 65500 = $FFDC здесь
> рассматривается как -36).


> Anatoly Podgoretsky ©   (03.08.06 22:48) [7]
>
> begin...end ©   (03.08.06 21:41) [6]
> Потому что  команда jge @m2 оперирует числами со знаком,
>  65500 и есть это самое -36

Чего-то я не понял. Что, кто, кому объясняет? :-)


 
begin...end ©   (2006-08-04 09:16) [10]

> Anatoly Podgoretsky ©   (03.08.06 22:48) [7]
> Anatoly Podgoretsky ©   (03.08.06 22:53) [8]

Спасибо, но это мне известно. А вот каким образом из утверждения [2] "65500 больше либо равно 8" следует утверждение [5] "-36 меньше 8" (даже если принять 65500 = -36), я так и не понял.


 
Пусик ©   (2006-08-04 17:26) [11]

Удалено модератором


 
begin...end ©   (2006-08-04 19:25) [12]

Удалено модератором


 
Пусик ©   (2006-08-04 20:06) [13]

Удалено модератором


 
begin...end ©   (2006-08-04 20:31) [14]

Удалено модератором


 
KilkennyCat ©   (2006-08-05 18:14) [15]

Я не оговорился. Я ошибся с процессором.



Страницы: 1 вся ветка

Текущий архив: 2006.09.17;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.052 c
3-1152885882
stud
2006-07-14 18:04
2006.09.17
регистр при именовании переменных


2-1156448729
Анрей
2006-08-24 23:45
2006.09.17
Drug n Drop в Дельфи


1-1154425076
DevilDevil
2006-08-01 13:37
2006.09.17
Ширина Excel столбца в пикселях


2-1156851094
Percent
2006-08-29 15:31
2006.09.17
DataModule и иже с ним...


15-1156467422
lookin
2006-08-25 04:57
2006.09.17
Кто подскажет, где скачать "Я не знаю зачем..." Вертинского