WWW.ИСХОДНИКИ.РУ cpp.sources.ru
java.sources.ru web.sources.ru soft.sources.ru
jdbc.sources.ru asp.sources.ru api.sources.ru

  Форум на исходниках
  ASM
  И ещё один

СПРОСИТЬ  ОТВЕТИТЬ
профайл | регистрация | faq

Автор Тема:   И ещё один
MishaZ опубликован 20-01-2002 14:13 MSK   Click Here to See the Profile for MishaZ   Click Here to Email MishaZ  
Работает ли SHL с ячеёками памяти ???
rivitna опубликован 20-01-2002 14:19 MSK     Click Here to See the Profile for rivitna  Click Here to Email rivitna     
Естественно
rivitna опубликован 20-01-2002 14:47 MSK     Click Here to See the Profile for rivitna  Click Here to Email rivitna     
Я тут ознакомился для чего тебе этого:
http://www.sources.ru/NonCGI/Forum9/HTML/000124.html

Это сильно! :)))))))

Процессоры i486 и выше при операциях сдвига (sal, shl, rol и т.д.) используют только первые пять бит счетчика (то есть до 31).

Так, как ты делаешь, тебе как минимум нужны 128 разрядные регистры или операнды, чтоб битик, который ты двигаешь, остался в пределах видимости :)))

Так что и здесь лучше использовать команды сопроцессора
f2xm1 (2^x - 1)

MishaZ опубликован 20-01-2002 15:30 MSK     Click Here to See the Profile for MishaZ  Click Here to Email MishaZ     
Ну совсем ваыручиллл =)
MishaZ опубликован 20-01-2002 15:30 MSK     Click Here to See the Profile for MishaZ  Click Here to Email MishaZ     
Ну совсем ваыручиллл =)
rivitna опубликован 20-01-2002 15:55 MSK     Click Here to See the Profile for rivitna  Click Here to Email rivitna     
Не торопись, я не до конца объяснил.
f2xm1 - хитрая команда, -1 < x < 1

Вычислять надо по формуле
y^x = 2 ^ (x * log2(y))

Пусть x, y - числа типа integer, z - типа extended, тогда

fild [y]
fyl2x
fild [x]
fmul st,st(1)
f2xm1
fld1
fadd st,st(1)
fst [z]

Надеюсь, ничего не напутал! :)

rivitna опубликован 20-01-2002 17:00 MSK     Click Here to See the Profile for rivitna  Click Here to Email rivitna     
Мало того, что с кодом облажался :(
fild x
fild y
fyl2x
f2xm1
fld1
fadd st,st(1)
fst z
Да и толку нет от этого кода! На промежуточном этапе число выходит за диапазон

Можно втупую сделать:
y := 2;
x := 100;
asm
fild y
mov cx,x
sumloop:
fadd sp,sp(0)
loop sumloop
fst z
end

MishaZ опубликован 20-01-2002 17:02 MSK     Click Here to See the Profile for MishaZ  Click Here to Email MishaZ     
Брьььь а все ли процессоры у которых математический сопроцессор есть енто поддерживают ?
NOPIK опубликован 20-01-2002 20:05 MSK     Click Here to See the Profile for NOPIK  Click Here to Email NOPIK     
Операции у всех практически одинаковые (это стандарт IEE), но состав операндов и мнемоника могут различаться
rivitna опубликован 20-01-2002 20:55 MSK     Click Here to See the Profile for rivitna  Click Here to Email rivitna     
Если хочешь, чтоб совсем было хорошо (хотя сейчас это дело ненужное) и если ты эстет, проверь наличие сопроцессора.

Наиболее корректный и простой способ:

FPU_Test PROC
finit
mov cx,0Ch
@@WaitLoop1:
loop @@WaitLoop1
mov ax,5A5Ah
push ax
fstcw WORD PTR [sp]
mov cl,0FFh
@@WaitLoop2:
loop @@WaitLoop2
pop ax
and ax,1F3Fh
cmp ax,33Fh
ret
FPU_Test ENDP

Если в результате ZF=1, как минимум 8087 есть

rivitna опубликован 20-01-2002 21:14 MSK     Click Here to See the Profile for rivitna  Click Here to Email rivitna     
Поторопился отослать, потом обратил внимание, что адресацию сделал через SP, то есть в 16-размерном коде и на процессорах ниже 386 работать не будет. :(

Исправляюсь:

FPU_Test PROC
push bp
mov bp,sp
mov ax,5A5Ah
push ax
finit
mov cx,0Ch
@@WaitLoop1:
loop @@WaitLoop1
fstcw WORD PTR [bp-2]
mov cl,0FFh
@@WaitLoop2:
loop @@WaitLoop2
mov ax,[bp-2]
and ax,1F3Fh
cmp ax,33Fh
mov sp,bp
pop bp
ret
FPU_Test ENDP

7in опубликован 20-01-2002 23:51 MSK     Click Here to See the Profile for 7in  Click Here to Email 7in     
2 rivitna: Пять первых бит счётчика использует уже 80186
rivitna опубликован 21-01-2002 00:13 MSK     Click Here to See the Profile for rivitna  Click Here to Email rivitna     
2 7in:
Согласен!
Спасибо за поправку!

Даже использовал этот факт, чтобы отличать 8086 от 80186.

Если что еще заметишь, не стесняйся - не безгрешен.

СПРОСИТЬ  ОТВЕТИТЬ
Перейти:


E-mail | WWW.ИСХОДНИКИ.RU

Powered by: Ultimate Bulletin Board, Freeware Version 5.10a
Purchase our Licensed Version- which adds many more features!
© Infopop Corporation (formerly Madrona Park, Inc.), 1998 - 2000.