Отладка ASM в Visual Studio - содержимое регистра не будет отображаться
Я работал над проектом на ассемблере для класса, и, хотя я, наконец, смог разобраться со всеми проблемами в этом коде (я полагаю), теперь я не могу отобразить содержимое регистра.
Вот мой код...
include C:\Irvine\Irvine32.inc
.data
;Variables are listed in following order VAR DATATYPE DIGITS[RADIX] with
comments showing binary version of listed digits
left DWORD 321 ;101000001b
right DWORD 4247 ;1000010010111b
total DWORD ? ;uninitialized
diff DWORD ? ;uninitialized
;Define a string called message containing HELLO WORLD!
message BYTE '"Hello world!"'
;Calculate length of Array and move to var ArrayLength
Array WORD 1,2,4,8,16,32,64 ;Array
ArrayLength = ($ - Array) / 2
.code
main PROC
;Move left and right to respective registers
MOV eax,left
MOV ebx,right
;Add left var and right var and store in new var called total and move to
ecx
MOV total,eax
ADD total,ebx
MOV ecx,total
;Subtract left var and right var and store in new var called diff and move
to edx
MOV diff,eax
SUB diff,ebx
MOV edx,diff
;Move Array to esi
MOV esi,ArrayLength
call DumpRegs
exit
main ENDP
END main
При отладке я не получаю сообщений об ошибках, но в среде IDE не отображаются необходимые регистры или их содержимое.
Я искал везде, чтобы попытаться выяснить, в чем может быть проблема, и получил несколько ответов, и смог найти некоторые, касающиеся открытия окна регистрации в VS на этом сайте...
Но я попытался найти это окно в своей IDE даже после включения отладки на уровне адресов, но безрезультатно. Я не знаю, если это проблема с тем, как я установил или нет окна реестра в VS2017 ... любая помощь будет очень приветствоваться
Для записи я использую Visual Studio 2017
Я попытался добавить ожидание после call DumpRegs
и даже точка останова, но это просто останавливает выполнение и не отображает регистры вообще..
1 ответ
Благодаря @Jester я смог увидеть окно регистров. (См., Как использовать окно регистров в документах Visual Studio.)
Это может быть тривиально, но я все же констатирую это. Чтобы увидеть окно регистрации, вам нужно ввести точку останова перед выходом из программы или написать свою программу, чтобы сделать паузу самостоятельно, используя Irvine. wait
макрос или call ReadChar
, или похожие.
После его приостановки вы можете войти в окно регистрации, перейдя в окно отладки и подокно Windows, и вуаля, у вас есть содержимое регистра, видимое.
Щелкните правой кнопкой мыши в окне реестра и выберите UC и все данные, которые вы хотите отобразить.