Память

Тема в разделе "WASM.BEGINNERS", создана пользователем Linkey, 24 янв 2010.

  1. Linkey

    Linkey Александр

    Публикаций:
    0
    Регистрация:
    15 авг 2009
    Сообщения:
    11
    Адрес:
    Челябинск
    Как сделать чтобы в стек или регистр копировался не адрес памяти, а число которое там храниться? И пример если можно.
    Допустим у меня есть
    mes db "5"
    Как записать в EAX число 5
    mov eax,mes Не работает
    а
    mov eax, offset mes Кидает адрес
    а
    Мне нужно значение СПС)))
     
  2. InsidE

    InsidE Member

    Публикаций:
    0
    Регистрация:
    28 май 2009
    Сообщения:
    357
    Адрес:
    Over the hills and far away...
    мда,....а вы не подумали что "5" это не 5?
     
  3. cornolio

    cornolio New Member

    Публикаций:
    0
    Регистрация:
    16 апр 2009
    Сообщения:
    50
    у тебя переменная mes рамером в 8 бит, а регистр еах 32 бита потому и не работает
    задай так mes dd 5
    и пиши mov eax,mes
     
  4. treekool

    treekool Member

    Публикаций:
    0
    Регистрация:
    10 июл 2008
    Сообщения:
    88
    mov eax, [mes]
    попробуй так.
    или
    mov eax,offset [mes]
     
  5. treekool

    treekool Member

    Публикаций:
    0
    Регистрация:
    10 июл 2008
    Сообщения:
    88
    вообще посматри сюда http://www.wasm.ru/article.php?article=1022001#p1_12
     
  6. defaultplayer

    defaultplayer New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2006
    Сообщения:
    214
    все верно, только лучше тогда вот так

    Код (Text):
    1. .data
    2.  
    3. mes db 5
    4.  
    5. .code
    6.  
    7. movzx eax, mes
     
  7. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    1. ASCII код символа 5 = 35h, чтобы получить 5 вычти 30h
    2. если процессор позволяет, то movzx eax, mes (TASM,MASM) или movzx eax, [mes] (FASM).
    если процессор не позволяет, то xor eax, eax/mov al, mes (или [mes], для FASM)
     
  8. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    movzx eax,byte ptr cs:[mes]
    Неужели так трудно логически подумать..
     
  9. Rockphorr

    Rockphorr Well-Known Member

    Публикаций:
    0
    Регистрация:
    9 июн 2004
    Сообщения:
    2.622
    Адрес:
    Russia
    этот вариант очевидно бред - почувствуйте разницу между смещением и значением
     
  10. Rockphorr

    Rockphorr Well-Known Member

    Публикаций:
    0
    Регистрация:
    9 июн 2004
    Сообщения:
    2.622
    Адрес:
    Russia
    какое логическое соображение указало на сегментный регистр CS ???
    почему не
    movzx eax,byte ptr ds:[mes]
    или
    movzx eax,byte ptr es:[mes]
    или
    movzx eax,byte ptr [mes]
     
  11. Twister

    Twister New Member

    Публикаций:
    0
    Регистрация:
    12 окт 2005
    Сообщения:
    720
    Адрес:
    Алматы
    Отпад. Ты забыл FS еще :)
     
  12. Rockphorr

    Rockphorr Well-Known Member

    Публикаций:
    0
    Регистрация:
    9 июн 2004
    Сообщения:
    2.622
    Адрес:
    Russia
    намекаешь на флат модель ??? где cs=ds=es=ss
     
  13. Rockphorr

    Rockphorr Well-Known Member

    Публикаций:
    0
    Регистрация:
    9 июн 2004
    Сообщения:
    2.622
    Адрес:
    Russia
    Twister
    все равно предпочтение cs ничем не аргументированно
    чтение запись с префиксом cs: вызывает мысль , что
     
  14. Rockphorr

    Rockphorr Well-Known Member

    Публикаций:
    0
    Регистрация:
    9 июн 2004
    Сообщения:
    2.622
    Адрес:
    Russia
    я бы выбрал вариант без префикса вообще - так короче
     
  15. Twister

    Twister New Member

    Публикаций:
    0
    Регистрация:
    12 окт 2005
    Сообщения:
    720
    Адрес:
    Алматы
    Да, во Flat-модели эти дескрипторы сегментов указывают на один
    и тот же сегмент памяти.
    Но я бы, на месте ТС и Clerk'a, в данном случае, вообще бы не заморачивался с сегментными регистрами и написал бы просто
    Код (Text):
    1. movzx eax,byte ptr [mes]
    ADD: Долго было открыто окно ответа - отвлекли. Пока написал ответ, ты уже тоже тут настрочил :)
     
  16. Linkey

    Linkey Александр

    Публикаций:
    0
    Регистрация:
    15 авг 2009
    Сообщения:
    11
    Адрес:
    Челябинск
    Спасибо! Я просто думал что при записи числа в EAX не имеет значение db or dd.
    И еще что "5" != 5 тоже знаю просто загнался маласть.
     
  17. JCronuz

    JCronuz New Member

    Публикаций:
    0
    Регистрация:
    26 сен 2007
    Сообщения:
    1.240
    Адрес:
    Russia
    Код (Text):
    1. movzx eax,byte ptr es:ds:cs:[mes]
    :)
     
  18. JCronuz

    JCronuz New Member

    Публикаций:
    0
    Регистрация:
    26 сен 2007
    Сообщения:
    1.240
    Адрес:
    Russia
    Код (Text):
    1. 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]
    даже так работает
     
  19. Rockphorr

    Rockphorr Well-Known Member

    Публикаций:
    0
    Регистрация:
    9 июн 2004
    Сообщения:
    2.622
    Адрес:
    Russia
    однако ты сторонник фасма в масме скобы не нужны
    имхо это недостаток фасма необходимость скоб - стирается смысловая разница - этот топик тому пример
     
  20. InsidE

    InsidE Member

    Публикаций:
    0
    Регистрация:
    28 май 2009
    Сообщения:
    357
    Адрес:
    Over the hills and far away...
    бггг