Не рабочие строчки в Masm32

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

Статус темы:
Закрыта.
  1. VictorV79

    VictorV79 New Member

    Публикаций:
    0
    Регистрация:
    26 мар 2009
    Сообщения:
    130
    Не рабочие строчки

    dec dword ptr сs:[403080h], dword ptr сs:[4030A0h]
    dec dword ptr [403080h], dword ptr [4030A0h]
    xchg dword ptr ds:[403090h], dword ptr ds:[4030A0h]
    xchg dword ptr [403090h], dword ptr [4030A0h]
    add dword ptr ds:[4030A0h], dword ptr ds:[403080h]
    mov dword ptr [4030A0h], dword ptr [403080h]

    чем можно аналогично заменить не используя регистров EAX, EBX, ECX, EDX, EBP, ESP, ESI, EDI
    и не используя меток и по возможности не используя стек

    со стеком работает
    push dword ptr ds:[4030A0h]
    pop dword ptr ds:[403080h]

    как записать два разных адреса в одну строчку для манипуляции в этой одной строчке
    или в две строчки как Push/Pop
    например сложение/вычитание, напрямую манипулируя адресами, их числами
     
  2. litrovith

    litrovith Member

    Публикаций:
    0
    Регистрация:
    20 июн 2007
    Сообщения:
    509
    FPU. сложение:
    Код (Text):
    1. ;masm
    2. .data
    3. op1 dd 2
    4. op2 dd 2
    5. res  dd ?
    6. .code
    7.     fild    op1
    8.     fild    op2
    9.     fadd
    10.     fistp   res
     
  3. VictorV79

    VictorV79 New Member

    Публикаций:
    0
    Регистрация:
    26 мар 2009
    Сообщения:
    130
    я так и делаю
    но когда знаешь какое число где по адресу
    то предпочтительней обращаться напрямую без меток, регистров, стека и без внесения заранее значений в .data/.data?

    а можно так делать или нет
    вот что хочу узнать
     
  4. VictorV79

    VictorV79 New Member

    Публикаций:
    0
    Регистрация:
    26 мар 2009
    Сообщения:
    130
    обращение с одним адресом понимает
    а с двумя нет

    inc dword ptr ds:[403080h]
    push dword ptr ds:[4030A0h]
    pop dword ptr ds:[403080h]

    а так например непонимает

    mov dword ptr ds:[4030A0h], dword ptr ds:[403080h]
    add dword ptr [4030A0h], dword ptr [403080h]

    может есть какая извращённая строчка с двумя, тремя адресами
     
  5. litrovith

    litrovith Member

    Публикаций:
    0
    Регистрация:
    20 июн 2007
    Сообщения:
    509
    низзя, вам что стека жалко?
    Код (Text):
    1.     push 2
    2.     push 2
    3.     fild    dword ptr[esp+4]
    4.     fild    dword ptr[esp]
    5.     fadd
    6.     fistp   res
    7.     add esp, 8
     
  6. litrovith

    litrovith Member

    Публикаций:
    0
    Регистрация:
    20 июн 2007
    Сообщения:
    509
    push dword ptr ds:[4030A0h]
    pop dword ptr ds:[403080h]
    аналог:
    fild dword ptr ds:[4030A0h]
    fistp dword ptr ds:[403080h]
     
  7. VictorV79

    VictorV79 New Member

    Публикаций:
    0
    Регистрация:
    26 мар 2009
    Сообщения:
    130
    штука в том что регистры иногда заняты
    имена присваивать не всегда удобно
    а со стеком тот же расчёт заранее до некоторой степени, нюансы учитывать нужно
    по этому направляю свой взгляд на два числа лежащее по конкретному адресу
    и их однострочное манипулирование
     
  8. litrovith

    litrovith Member

    Публикаций:
    0
    Регистрация:
    20 июн 2007
    Сообщения:
    509
    VictorV79, правда в том, что есть стек, и нужно иметь про запас хотя б один свободный регистр!
     
  9. VictorV79

    VictorV79 New Member

    Публикаций:
    0
    Регистрация:
    26 мар 2009
    Сообщения:
    130
    да это понятно
    но хочется мороженного и чего то ещё
    ладно ещё не вечер
    попарюсь
    может успокоюсь
     
  10. VictorV79

    VictorV79 New Member

    Публикаций:
    0
    Регистрация:
    26 мар 2009
    Сообщения:
    130
    а как делать откат регистров простым способом
    не забивая значения по новой

    есть ли такая одна например команда
    которая ставится перед задачей и после задачи
    а потом делает сброс всего что было изменено
    и возвращается к прежним значениям
    опять таки если эти изменения небыли излишне глубоки и не коснулись того что возврату не подлежит
    при каких то обстоятельствах
    например что бы можно было
    одной командой вернуть назад стек регистры или ещё числа в адресах памяти
     
  11. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    VictorV79
    Не могли бы вы знаки препинания раставлять, ну или хотябы в строку текст писать, трудно читать.
    pushad
     
  12. VictorV79

    VictorV79 New Member

    Публикаций:
    0
    Регистрация:
    26 мар 2009
    Сообщения:
    130
    Например если я делаю что то, что запороло стек
    а pushad возврат в первоначальное значение не делает
    с pushad примерно получается
    нужно в стек занести
    потом вытащить и сохранить
    далее запортить стек чем то
    потом то что сохраняли опять вытащить
    засунуть в стек и вытащить из стека popad

    меня глючит

    как одной командой вернуть назад стек, регистры, числа в адресах памяти одновременно
    откатом видимо
     
  13. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    стек - как уже сказали pushad/popad, числа в адресах памяти - никак, вручную делать бекап.
     
  14. VictorV79

    VictorV79 New Member

    Публикаций:
    0
    Регистрация:
    26 мар 2009
    Сообщения:
    130
    стек - как уже сказали pushad/popad

    это я понял
     
  15. VictorV79

    VictorV79 New Member

    Публикаций:
    0
    Регистрация:
    26 мар 2009
    Сообщения:
    130
    Бекап делать с пивом и рыбой
     
  16. VictorV79

    VictorV79 New Member

    Публикаций:
    0
    Регистрация:
    26 мар 2009
    Сообщения:
    130
    я вроде правильно понял
    манипулировать двумя адресами в одной строчке не зя

    например

    xchg dword ptr [403090h], dword ptr [4030A0h]
     
  17. litrovith

    litrovith Member

    Публикаций:
    0
    Регистрация:
    20 июн 2007
    Сообщения:
    509
    VictorV79, курите маны, попивая красное вино, ёпт!
     
  18. litrovith

    litrovith Member

    Публикаций:
    0
    Регистрация:
    20 июн 2007
    Сообщения:
    509
    XCHG - Exchange
    Usage: XCHG dest,src
    Modifies flags: None
    Exchanges contents of source and destination.
    Clocks Size
    Operands 808x 286 386 486 Bytes
    reg,reg 4 3 3 3 2
    mem,reg 17+EA 5 5 5 2-4 (W88=25+EA)

    reg,mem 17+EA 5 5 3 2-4 (W88=25+EA)
    accum,reg 3 3 3 3 1
    reg,accum 3 3 3 3 1
     
  19. VictorV79

    VictorV79 New Member

    Публикаций:
    0
    Регистрация:
    26 мар 2009
    Сообщения:
    130
    Хорошо, что у вас время на меня нашлось
    главное что бы на пользу пошло
    с утра немного легче вникать
     
  20. VictorV79

    VictorV79 New Member

    Публикаций:
    0
    Регистрация:
    26 мар 2009
    Сообщения:
    130
    Почему вот
    если использовать регистр, то можно


    xchg eax, ecx
    xchg eax, dword ptr ds:[4030A0h]
    xchg dword ptr ds:[4030A0h], eax

    mov dword ptr ds:[4030A0h], eax
    mov eax, dword ptr ds:[4030A0h]

    add eax, dword ptr ds:[4030A0h]
    add dword ptr ds:[4030A0h], eax



    А без регистра нет


    xchg dword ptr ds:[403090h], dword ptr ds:[4030A0h]

    mov dword ptr ds:[4030A0h], ds:[403080h]

    add dword ptr ds:[4030A0h],dword ptr ds:[403080h]


    Знаю ............
    наверно будут сейчас матюгаться
    можно как то по русски сказать, так делать нельзя потому что, далее без мата


    Пытаюсь разобрать это, что прислал litrovith
    прогрес не на лицо, туго идёт, что то не хватает


    XCHG - Exchange
    Usage: XCHG dest,src
    Modifies flags: None
    Exchanges contents of source and destination.
    Clocks Size
    Operands 808x 286 386 486 Bytes
    reg,reg 4 3 3 3 2
    mem,reg 17+EA 5 5 5 2-4 (W88=25+EA)

    reg,mem 17+EA 5 5 3 2-4 (W88=25+EA)
    accum,reg 3 3 3 3 1
    reg,accum 3 3 3 3 1
     
Статус темы:
Закрыта.