Помогите! Вопрос по Fasm

Тема в разделе "WASM.BEGINNERS", создана пользователем BluesMan, 23 ноя 2008.

  1. BluesMan

    BluesMan New Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2008
    Сообщения:
    7
    Люди добрые! Подскажите новичку зеленому пожалуйста!
    Объясните по человечески что означает строка:
    org 0700h
     
  2. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    устанавливает текущий адрес равным 0x700
    т.е. после "org 0x700", $==0x700
     
  3. BluesMan

    BluesMan New Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2008
    Сообщения:
    7
    Ну это я понимаю... Ну а что происходит? если я до начаа программы пишу org 0700h как это влияет на программу, на переменные объявленные? Вся адресация программы будет происходить начиная с 0700h ?
     
  4. Arthur

    Arthur New Member

    Публикаций:
    0
    Регистрация:
    27 янв 2007
    Сообщения:
    494
    Код (Text):
    1. mov ax, [var0]
    2. xor ax, ax
    3. ret
    4.  
    5. var0 dw 0
    HEX: A1 06 00 31 C0 C3 00 00

    Код (Text):
    1. org 0x700
    2.  
    3. mov ax, [var0]
    4. xor ax, ax
    5. ret
    6.  
    7. var0 dw 0
    HEX: A1 06 07 31 C0 C3 00 00

    Директива org автоматически смещает адреса меток. COM фаил загружается с адреса равного 100h, интересно если не использовать org, то к чему приведет обращение к метке ближе 100h адреса?
     
  5. Arthur

    Arthur New Member

    Публикаций:
    0
    Регистрация:
    27 янв 2007
    Сообщения:
    494
    Да вы батенька не зеленый, а голубой мужчина (=BluesMan) :)
     
  6. BluesMan

    BluesMan New Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2008
    Сообщения:
    7
    Ну вообще это значит человек Блюза а не голубой мужчина)
    Ну а насчет директивы что значит смещает адреса меток. то есть как бы смещение считается теперь от адреса заданного в орге?
     
  7. Arthur

    Arthur New Member

    Публикаций:
    0
    Регистрация:
    27 янв 2007
    Сообщения:
    494
    BluesMan
    Да, с английским у меня плоховато :) И вообщем это была шутка :)

    не как бы, а так оно и есть, посмотрите чем отличается два примера приведенных мной. Т. е. в ассемблере чаще мы расставляем метки, дабы легко вычислить адрес, и директива лишь помогает нам в этом. Так как ни какой информации в исполняемом файле (COM) нет кроме чистых бинарных инструкций и данных то DOS отображает такой файл в память сразу за блоком PSP (чей размер 100h). И ответом на мой вопрос, получится что обращение произойдет именно к PSP блоку.
     
  8. BluesMan

    BluesMan New Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2008
    Сообщения:
    7
    Большое спасибо! Разобрался)
     
  9. Semiono

    Semiono Member

    Публикаций:
    0
    Регистрация:
    27 ноя 2005
    Сообщения:
    793
    Ищу микроскопические примеры по fasm, типа чтоб сразу результат... по каждой MFC/API примерчеги, то-есть вызвал то-сё и сразу в голове ясность наступает....
    Ато пока разберёшся с функциональным приложением, забудешь с чего начинал...
    Вот beer мне нарвиться, но всё другое в дистрибутиве, не то чтоб сложно, но всё более далёко от окон и юзер мод win32.
    =)
    explorer/cmd.exe/*.cpl, cd-rom вот что интересует! и придумывание всяких консольных утилит по cmd.exe
     
  10. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.914
    Уроки Iczelion'а на FASM подойдут? :)
     
  11. Semiono

    Semiono Member

    Публикаций:
    0
    Регистрация:
    27 ноя 2005
    Сообщения:
    793
    Mikl___ , спасибо, конечно! Точто надо!