nasm и mmx . как сравнить числа?

Тема в разделе "WASM.BEGINNERS", создана пользователем stellaco, 11 янв 2009.

  1. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.792
  2. stellaco

    stellaco New Member

    Публикаций:
    0
    Регистрация:
    11 дек 2008
    Сообщения:
    193
    murder
    стыдно.... ((( но всёравно..не понимаю...
    никак ........
    если переписать алгоритм под мои нужды..то всёравно чтото не так (((


     
  3. murder

    murder Member

    Публикаций:
    0
    Регистрация:
    3 июн 2007
    Сообщения:
    628
    1) почему ты пишешь
    Код (Text):
    1. mov esi,number_1+8
    2. ...          
    3. mov ecx,4
    Разве у тебя длина числа (строки с числом) - константа?
    2)
    Код (Text):
    1. fistp edi
    Что это такое? Тебе нужно обнулить 10-байтовый буфер. То есть
    Код (Text):
    1. fstp tbyte[edi]
     
  4. murder

    murder Member

    Публикаций:
    0
    Регистрация:
    3 июн 2007
    Сообщения:
    628
    3) алгоритм упаковки числа:
    ;допустим исходная строка "01234"
    ;В цикле мы движемся от конца строки к её началу
    ;Так как загружаем по два байта строка должна начинаться на "0"
    Код (Text):
    1. pack:sub esi,2
    2.      mov ax,[ds:esi] ;ax="34"=3433h
    3.      sub ax,3030h    ;ax=0403h
    4.      shl al,4        ;ax=0430h
    5.      or  al,ah       ;al=34h
    6.      mov [ds:di],al ;записываем в буфер
    7.      add di, 1
    8. loop pack
    В итоге буфер будет содержать 00000000000000001234h - 10 байт
    4)
    Код (Text):
    1. fbld  qword[number_2]
    2. fbstp number_1
    Слов не хватает! Надо так
    Код (Text):
    1. fbld  tbyte[number_2]
    2. fistp qword[number_1]