Начинающий
Начинающий
- Статус
- Оффлайн
- Регистрация
- 1 Янв 2024
- Сообщения
- 12
- Реакции
- 1
Только начал изучать масм
Допустим у нас есть два случая, предварительно в секции data лежит DWORD, который хранит адрес 0x00403004 назовём ее var1
1) mov dword ptr[var1], dword ptr[1337h]
2) mov eax, dword ptr[var1]
mov dword ptr[eax], dword ptr[1337h]
В обоих случаях, по идее, в адрес, находящейся в переменной var1 должен был записаться dword со значением 0x1337
Но на деле всё корректно работает только во втором случае, в первом 0x1337 записывается не по адресу 0x00403004, а по адресу переменной var1 (0x00403000).
Так вот возникает вопрос, это масм таким образом компилирует мой код, что переменные из секции data напрямую нельзя вот так разыменовать для адреса, а нужно сначала положить их в регистр и уже разыменовывать регистр, или я чего то не понимаю?
Допустим у нас есть два случая, предварительно в секции data лежит DWORD, который хранит адрес 0x00403004 назовём ее var1
1) mov dword ptr[var1], dword ptr[1337h]
2) mov eax, dword ptr[var1]
mov dword ptr[eax], dword ptr[1337h]
В обоих случаях, по идее, в адрес, находящейся в переменной var1 должен был записаться dword со значением 0x1337
Но на деле всё корректно работает только во втором случае, в первом 0x1337 записывается не по адресу 0x00403004, а по адресу переменной var1 (0x00403000).
Так вот возникает вопрос, это масм таким образом компилирует мой код, что переменные из секции data напрямую нельзя вот так разыменовать для адреса, а нужно сначала положить их в регистр и уже разыменовывать регистр, или я чего то не понимаю?