Вопрос по первому примеру из книги Калашникова

Тема в разделе "WASM.BEGINNERS", создана пользователем Nextor, 7 мар 2009.

  1. Nextor

    Nextor New Member

    Публикаций:
    0
    Регистрация:
    4 окт 2008
    Сообщения:
    122
    CSEG segment
    org 100h

    Begin:

    mov ah,9
    mov dx,offset Message
    int 21h

    int 20h

    Message db 'Hello, world!$'

    CSEG ends
    end Begin

    Ребята подскажите, тут разбираться не в чем, а подскажите, для чего строка "mov ah,9"

    Зарание спасибо.
     
  2. mupsy

    mupsy New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2008
    Сообщения:
    55
    mov ah,09h помещает в регистр ah номер функции,в данном случае 9,которая вызывается после прерывания int 21h, для вывода строки на экран...Ну вроде так,ассемблером под дос давно не увлекался...
    А так параллельно с калашниковым читай ассемблер под дос,WINODWS,UNIX,автора только не помню,но там вроде описывается все это...
     
  3. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    Не после прерывания, а во время обработки прерывания.
     
  4. Nextor

    Nextor New Member

    Публикаций:
    0
    Регистрация:
    4 окт 2008
    Сообщения:
    122
    Т.е. как я понял, что-бы вызвть "int 21" нужно засунуть в ah - 9, подругому данное прерывание не вызвать... !?
     
  5. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    Nextor
    Неправильно. В помощью вызова int 21 можно делать много чего. Что именно хочется сделать, определяется значением регистра AH. В данном случае значение 09 означает, что вам хочется вывести строку на экран.
     
  6. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    А что у Калаша не написано зачем это? В ah записывается номер прерывания. Например 9h - вывод на экран, 2h - ввод с клавы и т.д. _http://www.kulichki.com/inkwell/comp/msdos.htm
     
  7. ZEVSIK

    ZEVSIK New Member

    Публикаций:
    0
    Регистрация:
    4 мар 2009
    Сообщения:
    13
    9H это собственно функция DOS, вывода строки.

    INT 21H - interrupt-прерыванте, одно из прерываний зарезервированных DOS-ом для своих нужд.

    MOV AH, 9H помешает в регистр процессора AH, функцию вывода строк 9H, а прерывание INT 21H выполняет эту функцию.

    Функция 9H, кстати берет данные из регистра DX(значит их надо туда сперва поместить).

    Об этом рассказывается в книге Калашникова.
     
  8. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    Nextor
    mov ah,<func_number> - вот как надо трактовать эту строчку.

    прерываание 21h - это аналог Win32API, но для DOS и чтобы вызвать функцию в DOS тебе надо заюзать это прерывание и передать номер функции. Также это походит syscall в Win NT(и выше) там тоже в регистр номер функции закидываается. Т.е. это распространенная практика по вызову из какого либа нобора функций конкретной функции.
     
  9. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    Booster
    Номер прерывания - 21h, а 9 в данном случае - номер функции.
     
  10. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Partner
    >Номер прерывания - 21h, а 9 в данном случае - номер функции.
    Да хрен с ним.
     
  11. Nextor

    Nextor New Member

    Публикаций:
    0
    Регистрация:
    4 окт 2008
    Сообщения:
    122
    Всем спасибо теперь понял. Просто у Калашникова в некоторых главах расплывчато написано. :)
    mupsy
    Спасибо за подсказку о книге, автор - Зубков.

    Думаю данную тему можно закрыть...
     
  12. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    Booster
    Уговорил.
     
  13. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    Калашникова ? Имхо, не стоит. А вот Зубкова можно, достойно пишет. Но ни один учебник не заменит бессоных ночей и воскликов "Блин, второй день трахаюсь, а это в 15-й строке ошибка-то была" ))) Эти возгласы лучше всего формируют понимание асма )
     
  14. Phuntik

    Phuntik New Member

    Публикаций:
    0
    Регистрация:
    4 фев 2008
    Сообщения:
    318
    Nextor
    Мне кажется, не стоит с таким вопросом) Так ты по любому чиху на форум лезть будешь. По ассембелру море литературы в сети есть. Посмотри вот здесь: _http://ebdb.ru/Search.aspx?p=1&s=%D0%B0%D1%81%D1%81%D0%B5%D0%BC%D0%B1%D0%BB%D0%B5%D1%80&x=0&y=0
     
  15. Nextor

    Nextor New Member

    Публикаций:
    0
    Регистрация:
    4 окт 2008
    Сообщения:
    122
    Phuntik
    Теперь я понимю, что вопрос ламерский но когда не можешь найти решение - сгодиться все. По моему, форум - для того что-бы коллективно решать проблему, тем более в первом уроке описания данной команды небыло.

    Буду стараться с подобными вопросами на форум не лезть... :)