как получить адрес определённого дворда?

Тема в разделе "WASM.BEGINNERS", создана пользователем Arisu, 15 май 2008.

  1. Arisu

    Arisu Алиса Селезнёва

    Публикаций:
    0
    Регистрация:
    10 апр 2007
    Сообщения:
    89
    асм знаю плохо, но нужно срочно, по этому прошу помощи.

    (использую встроенный в BC3.1 турбоассемблер)

    мне нужно сравнить два дворда определённых как dw xxxx далее по тексту. переменные использовать не могу а с метками у БАСМа какая-то беда. Пробовал играться с "$+xxx", но ничего дельного не вышло. Нужно в si и di соответственно положить адреса двордов.

    вот код

    Код (Text):
    1. cld
    2. mov cx, 1
    3. si ???
    4. di ???
    5. repe
    6. db 0xA6 //cmpsd
    7. jne _L
    8. jmp _M
    9.  
    10. .....
    11.  
    12. dd 0x1
    13. dd 0x2
    буду очень благодарен за помощь
     
  2. Xerx

    Xerx Алексей

    Публикаций:
    0
    Регистрация:
    17 фев 2005
    Сообщения:
    528
    Адрес:
    Russia
    Arisu
    оффтоп: зачем использовать операции со строками? можно проще "cmp". Для DW нужно добавить db 66h, если память не подводит.

    Метки там работают, приведи нерабочий код с ними.
     
  3. Arisu

    Arisu Алиса Селезнёва

    Публикаций:
    0
    Регистрация:
    10 апр 2007
    Сообщения:
    89
    за тем, что двордов не один, а несколько. просто в примере я указал один.

    на счёт меток: на пример нельзя сделать mov si, offset metka
     
  4. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    а как насчет lea si,[metka] ?
     
  5. Arisu

    Arisu Алиса Селезнёва

    Публикаций:
    0
    Регистрация:
    10 апр 2007
    Сообщения:
    89
    leo
    да аналогично вобщем-то. пишет что не знает символа "metka" =\\\

    это возможно сделать без меток??? я так понимаю, что нужно проделать какие-то махинации с "$+(кол-во байт до дворда)", но что именно?
     
  6. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    Попробуй объявить @metka:
    За BC не ручаюсь, но в паскале\дельфи метки с префиксом @ являются так называемыми "локальными" для асм-блока и их не нужно специально объвлять директивой label
     
  7. Arisu

    Arisu Алиса Селезнёва

    Публикаций:
    0
    Регистрация:
    10 апр 2007
    Сообщения:
    89
    leo
    также не пашет.
     
  8. FireFox

    FireFox New Member

    Публикаций:
    0
    Регистрация:
    9 май 2008
    Сообщения:
    19
    Ты двоеточие после имени метки ставишь?
     
  9. Arisu

    Arisu Алиса Селезнёва

    Публикаций:
    0
    Регистрация:
    10 апр 2007
    Сообщения:
    89
    FireFox
    да.
    он ругаеться не на обьявление метки, а на попыткю её использования где угодно кроме джампов
     
  10. FireFox

    FireFox New Member

    Публикаций:
    0
    Регистрация:
    9 май 2008
    Сообщения:
    19
    Конкретно как он ругается? =) Вдруг ты не так понял его мольбы =)
     
  11. Arisu

    Arisu Алиса Селезнёва

    Публикаций:
    0
    Регистрация:
    10 апр 2007
    Сообщения:
    89
    "undifined symbol "metka""
     
  12. 10110111

    10110111 New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2006
    Сообщения:
    319
    Адрес:
    Санкт-Петербург
    может попробовать metka=$ ?
     
  13. FireFox

    FireFox New Member

    Публикаций:
    0
    Регистрация:
    9 май 2008
    Сообщения:
    19
    Это, конечно, безумно интересно, но это какой-то неправильный компилятор. *пробует мучить свой tasm* Какой нафиг асм без меток =* А попробуй metka equ 0x1.
     
  14. 2FED

    2FED New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2008
    Сообщения:
    1.002
    @@metka:

    jmp @@metka
     
  15. Arisu

    Arisu Алиса Селезнёва

    Публикаций:
    0
    Регистрация:
    10 апр 2007
    Сообщения:
    89
    2FED
    ещё раз говорю. Джамп работает шоколадно, но мне нужен не он! мне нужно взять адрес памяти по метке
     
  16. Shoorup

    Shoorup Member

    Публикаций:
    0
    Регистрация:
    20 сен 2007
    Сообщения:
    109
    может это поможет? http://www.wasm.ru/forum/viewtopic.php?id=26694
     
  17. 2FED

    2FED New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2008
    Сообщения:
    1.002
    Код из дельфи

    Код (Text):
    1. procedure TForm1.Button1Click(Sender: TObject);
    2. var a:integer;
    3. begin
    4. a := 0;
    5. asm
    6. @@metka:
    7. push 0
    8. push 0
    9. push 0
    10. push 0
    11. call MessageBox
    12. mov a,offset @@metka
    13. jmp a
    14. end;
    15. caption := inttostr(a);
    16. end;
    Получатся бесконечный цикл из месаджбоксов =) в переменной A адрес метки ;)
     
  18. 2FED

    2FED New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2008
    Сообщения:
    1.002
    конечно же нельзя, потому что адрес это dword а si это word
     
  19. Com[e]r

    Com[e]r Com[e]r

    Публикаций:
    0
    Регистрация:
    20 апр 2007
    Сообщения:
    2.624
    Адрес:
    ого..
    2FED
    круьтл
    круто.
     
  20. TOLSTOPUZ

    TOLSTOPUZ New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2008
    Сообщения:
    509
    Comer_ Вам исполнилось 19 лет?
    Поздравляю, конечно...

    Просто Вы всегда такой строгий...
    Я думал Вам уже где-то сороковник...

    С ув. Толстопуз.

    P.S.
    Извиняюсь, исправил.