Другие языки программирования и технологии

Где в Visual Studio 2012 дизассемблер? надо посмотреть что компилирует масм32 при .IF... .ELSEIF...

Имеется в виду MASM, встроенный в Visual Studio? Т. е. вы компилируете проект, целиком написанный на ассемблере, а не ассемблерные вставки в C или C++?

Выберите в меню СЕРВИС -> Параметры.. . -> Отладка -> Общие и поставьте галочку "Показывать дизассемблированный код, если исходный код недоступен".

Теперь после компиляции при нажатии клавиши F10 среда сразу покажет окно с дизассемблированным кодом для отладки.

Например, такая простенькая программа с использованием макросов .if и .elseif

.586
.model flat, c
option casemap :none

printf proto :dword, :vararg
_getch proto
_exit  proto :dword

.data
  Mess1 db "0", 0
  Mess2 db "1", 0
  Mess3 db ">1", 0

.code
N169470640:
    rdtsc
    and eax, 3
    .if eax == 0
      invoke printf, addr Mess1
    .elseif eax == 1
      invoke printf, addr Mess2
    .else
      invoke printf, addr Mess3
    .endif
    invoke _getch
    invoke _exit, 0
    end N169470640

в окне отладки будет выглядеть так:


P.S. Не знаю, можно ли в Visual Studio 2012 Express загрузить откомпилированную программу без исходного кода (у меня не получилось) , но на мой взгляд для этих целей лучше использовать OllyDbg. Он более удобный, чем встроенный в Visual Studio отладчик. Но это вопрос вкуса и привычки.
Роман Титков
Роман Титков
51 590
Лучший ответ
а что VS есть проекты для асма? не знал.
Максим Бугораздов нету, там только вставки, как я понял