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

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

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

    FatMoon New Member

    Публикаций:
    0
    Регистрация:
    28 ноя 2002
    Сообщения:
    954
    Адрес:
    Russia
    VictorV79
    Судя по темам, ты блуждаешь в сумерках, достаточно бессистемно пытаясь что-то понять.
    Переполнение стека в вечном цикле - абсолютно бессмысленное занятие, и хорошо, что рано или поздно стек переполнится и получишь ошибку.
    РозАсм - можно таки и РозАсм, хуже не будет. Только не для декомпиляции крупных программ. И декомпиляция обычно подразумевает получение кода на языке высокого уровня, а не дизассемблирование.
    Адресация память-память на процессорах x86 не существует, об этом кажется знают все - если проблемы с английским, читай Юрова, учебник - там по-русски, и про способы адресации тоже. К слову - 15 лет назад ее, адресации память-память, тоже не было :)))
    Потому что нельзя. Нет такого. Как нет у тебя 3-й руки, шапки-невидимки и миллиона баксов. Не существует в процессорах x86 такого вида адресации. Возможно, в каких-то других процессорах существует...

    1) прочитай Юрова. Найди через поиск "Юров учебник", и скачай где найдешь. Код из учебника компилировать не обязательно. Говорить, что ты по Юрову учишься - тем более не обязательно. Ты просто начало прочитай, как минимум, где о процессорах. Там только основное, и это перевод с интеловских руководств, но тебе хватит.
    2) вместо вечных циклов, попробуй что-нибудь осмысленное.
     
  2. VictorV79

    VictorV79 New Member

    Публикаций:
    0
    Регистрация:
    26 мар 2009
    Сообщения:
    130
    1) прочитай Юрова. Найди через поиск "Юров учебник", и скачай где найдешь. Код из учебника компилировать не обязательно. Говорить, что ты по Юрову учишься - тем более не обязательно. Ты просто начало прочитай, как минимум, где о процессорах. Там только основное, и это перевод с интеловских руководств, но тебе хватит.
    2) вместо вечных циклов, попробуй что-нибудь осмысленное.

    OK.

    Юрова скачал

    начнём с начала
     
  3. Rockphorr

    Rockphorr Well-Known Member

    Публикаций:
    0
    Регистрация:
    9 июн 2004
    Сообщения:
    2.622
    Адрес:
    Russia
    вроде старые соглашения о запрете копирования из памяти в памать комадой mov var1,var2 никто не отменял
    синтакс dec inc и прочих инструкций описан полно и однозначно

    короче хотите использовать инструкцию - смотрите сначала ее описание
    чтоб небыло всякого бреда типа dec dword ptr сs:[403080h], dword ptr сs:[4030A0h]
    у dec один операнд и все !!!!!
    подобные фокусы делаются макосами автоматически превращающими ваш код в последовательность dec'ов
     
  4. Rockphorr

    Rockphorr Well-Known Member

    Публикаций:
    0
    Регистрация:
    9 июн 2004
    Сообщения:
    2.622
    Адрес:
    Russia
    Еще есть хорошая книжка Пильшикова (МИФИ)- очень маленькая но очень толковая только что по ассемблеру 8086 но это мелочи
     
  5. Mikl___

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

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.792
    Rockphorr
    Пильщиков В.Н. Программирование на языке ассемблера IBM PC.– М.:ДИАЛОГ-МИФИ, 1994.– 288 с. Но были переиздания и электронный вариант есть в сети
     
  6. Rockphorr

    Rockphorr Well-Known Member

    Публикаций:
    0
    Регистрация:
    9 июн 2004
    Сообщения:
    2.622
    Адрес:
    Russia
    поддерживаю
     
  7. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    Ладно, но кто мешает
    xchg eax, [addr1]
    xchg [addr2], eax
    xchg eax, [addr1]
    xchg eax, [addr1]
    add [addr2], eax
    xchg eax, [addr1]
    Просто посмотрите на систему команд
    mod r/m не вытянет никогда адресацию к 2-м ячейкам памяти сразу
    Но существуют команды, которые обращаются к двую ячейкам памяти сразу, но в них полюбому участвуют регистры
    К примеру movs dword [es:edi], dword [ds:esi]
     
  8. VictorV79

    VictorV79 New Member

    Публикаций:
    0
    Регистрация:
    26 мар 2009
    Сообщения:
    130
    Пильщиков В.Н. Программирование на языке ассемблера IBM PC
    Скачал 1992, 1997, 1999

    Есть ещё, что полезно и интересно прочитать
    Пильщиков В.Н.
    1983 Язык плэнер
    это ищу
     
  9. IceT

    IceT IceT

    Публикаций:
    0
    Регистрация:
    13 авг 2009
    Сообщения:
    233
    Адрес:
    RU
    База у тебя страдает немнго. Почитай вот этот сайтег bitfry.narod.ru
     
  10. VictorV79

    VictorV79 New Member

    Публикаций:
    0
    Регистрация:
    26 мар 2009
    Сообщения:
    130
    bitfry.narod.ru
    частично прочитал, но его как и Калашникова мне трудно читать, очень много воды
    15 лет назад более менее понимал, что и зачем пишу, а когда что то ещё вспоминаешь
    хочется всё сразу

    что у меня хорошо прошло
    http://programmersclub.ru/files/asm_publikaciya.rar
    просто и понятно
    что бы появился дополнительный стимул не расслабляться, читать далее Юрова и Пильщикова

    сейчас не чего не помню, как в омут головой
    вот и смотрю на вас форумчан, как на учителей
     
  11. Quatre_R_Winner

    Quatre_R_Winner Member

    Публикаций:
    0
    Регистрация:
    10 ноя 2008
    Сообщения:
    66
    VictorV79
    Занимаетесь откровенными глупостями, и при этом не знаете элементара архитектуры х86. Надо сначало курить маны, а потом уж задавать глупые вопросы. Комманд с явными операндами память-память нет. Не портить регистры не получится. Сохранять их можно через pusha/popa, но в этом случае перед востановление не должен быть нарушен стек. Есть кстати под виндой способ бороться с нарушением стека - SEH.
    Код (Text):
    1. ...
    2. pusha
    3. push SEH_handler
    4. push dword[fs:0]
    5. mov dword[fs:0],esp
    6.  
    7. .... ; некоторый код, где стек освобождать не обязательно
    8.  
    9. mov esp,dword[fs:0]
    10. pop dword[fs:0]
    11. pop eax
    12. popa
     
  12. VictorV79

    VictorV79 New Member

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

    VictorV79 New Member

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

    А пишет Пильщиков В.Н. очень по делу
    и читать легко
     
  14. VictorV79

    VictorV79 New Member

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

    .data
    q1 dd 0
    .code

    q2:
    add q1,1
    jmp q2

    retn
    end q2

    почему система сама тормозит процесс
    и останавливает его где попало
    это связанно с внутренней самозащитой флагов например
    цифры всё время разные
    я просто спрашиваю в чём причина самотормозов
     
  15. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    что значит сама тормозит?
     
  16. VictorV79

    VictorV79 New Member

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

    2 или 3 байта проходит и останавливается
    всё время на разный числах
    по адресу метки q1
    занимает 4 байта, но полностью при выполнении не заполняет, до ffff ffff
    самопроизвольно останавливается
    на меньшем каком либо числе
    в пределах 3 байт
     
  17. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    вообще она должна до бесконечности цикл мотать. вы часом на F12 не нажимаете или не приостанавливаете ее сами?
     
  18. VictorV79

    VictorV79 New Member

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

    .386
    .model flat, stdcall
    .data
    q1 dd 0
    .code
    q2:
    add q1,1
    jmp q2
    retn
    end q2
     
  19. VictorV79

    VictorV79 New Member

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

    VictorV79 New Member

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