Как сделать чтобы в стек или регистр копировался не адрес памяти, а число которое там храниться? И пример если можно. Допустим у меня есть mes db "5" Как записать в EAX число 5 mov eax,mes Не работает а mov eax, offset mes Кидает адрес а Мне нужно значение СПС)))
у тебя переменная mes рамером в 8 бит, а регистр еах 32 бита потому и не работает задай так mes dd 5 и пиши mov eax,mes
1. ASCII код символа 5 = 35h, чтобы получить 5 вычти 30h 2. если процессор позволяет, то movzx eax, mes (TASM,MASM) или movzx eax, [mes] (FASM). если процессор не позволяет, то xor eax, eax/mov al, mes (или [mes], для FASM)
какое логическое соображение указало на сегментный регистр CS ??? почему не movzx eax,byte ptr ds:[mes] или movzx eax,byte ptr es:[mes] или movzx eax,byte ptr [mes]
Twister все равно предпочтение cs ничем не аргументированно чтение запись с префиксом cs: вызывает мысль , что
Да, во Flat-модели эти дескрипторы сегментов указывают на один и тот же сегмент памяти. Но я бы, на месте ТС и Clerk'a, в данном случае, вообще бы не заморачивался с сегментными регистрами и написал бы просто Код (Text): movzx eax,byte ptr [mes] ADD: Долго было открыто окно ответа - отвлекли. Пока написал ответ, ты уже тоже тут настрочил
Спасибо! Я просто думал что при записи числа в EAX не имеет значение db or dd. И еще что "5" != 5 тоже знаю просто загнался маласть.
Код (Text): movzx eax,byte ptr es:es:es:es:es:es:es:ds:ds:ds:ds:ds:ds:ds:cs:cs:cs:cs:cs:cs:cs:[mes] даже так работает
однако ты сторонник фасма в масме скобы не нужны имхо это недостаток фасма необходимость скоб - стирается смысловая разница - этот топик тому пример