Можете ли вы установить точку останова для определенного типа исключения?

Эти две строки являются вашей проблемой:

sub eax,my1337Sk1LLz    ;subtracts 1337h from usPop in eax
mov Difference, eax     ;stores eax into Difference

eax - 32 бита, но оба my1337Sk1LLz и Difference - 16 бит.

Есть два вы можете обойти это:

  1. Изменение размера my1337Sk1LLz и Difference. Сейчас у вас есть типы как WORD и SWORD, соответственно. Вы можете изменить их на DWORD и SDWORD, чтобы сделать их 32-разрядными.
  2. Нулевое расширение и усечение. Вам понадобится другой реестр. Я буду использовать edx, так как вы, кажется, не используете его там. Во-первых, вам нужно будет подписать-продлить my1337Sk1LLz:
    movzx edx, my1337Sk1LLz  ; move, zero-extended, my1337Sk1LLz into EDX
    
    Затем вы можете выполнить вычитание:
    sub eax, edx  ; they're the same size now so we can do this
    
    Затем вы можете сохранить низкое слово eax в Difference, отбросив высокое слово:
    mov Difference, ax
    
2
задан MarqueIV 15 January 2019 в 18:43
поделиться