Аналог '\n' в асме

Тема в разделе "WASM.BEGINNERS", создана пользователем Encou, 10 авг 2007.

  1. Encou

    Encou New Member

    Публикаций:
    0
    Регистрация:
    10 авг 2007
    Сообщения:
    9
    Здравствуйте!

    Подскажите, пожалуйста, что сделать, чтобы каждое сообщение выводилось в новой строке.
    То что, в С обозначается как printf("бла-бла-бла\n");.
    А то все строки в многочисленных "Message db ..." идут одна за другой - неудобно.

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

    tender_swallow New Member

    Публикаций:
    0
    Регистрация:
    4 май 2007
    Сообщения:
    45
    Если не ошибаюсь то в ANSII байт обозначающий перенос каретки равен 10h.
     
  3. Encou

    Encou New Member

    Публикаций:
    0
    Регистрация:
    10 авг 2007
    Сообщения:
    9
    А в какой регистр записывать 10h? И нужно ли вызывать специальное прерывание для переноса каретки?
    То есть как вообще использовать это значение?
     
  4. Jupiter

    Jupiter Jupiter

    Публикаций:
    0
    Регистрация:
    12 авг 2004
    Сообщения:
    532
    Адрес:
    Russia
    определи в проекте
    Код (Text):
    1. CrLf        equ 13,10
    и сможешь использовать так:
    Код (Text):
    1. szMultiline     db  "First line",CrLf,"Second line",0
    tender_swallow
    ошибаешься. символ h явно лишний
     
  5. Encou

    Encou New Member

    Публикаций:
    0
    Регистрация:
    10 авг 2007
    Сообщения:
    9
    Я новичок в асме, поэтому пока не очень разбираюсь в директивах, лексемах и проч.

    Jupiter
    Код (Text):
    1.  CrLf  equ  13,10
    нужно писать там, где описываются данные, так?
    И как именно использовать
    Код (Text):
    1.  szMultiline    db "First line",CrLf,"Second line",0
     
  6. tender_swallow

    tender_swallow New Member

    Публикаций:
    0
    Регистрация:
    4 май 2007
    Сообщения:
    45
    Верняк. Просто мозг думает в hex, руки пишут это в dec, а мозг гнет свою линию и появляется h:)
     
  7. rain

    rain New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2006
    Сообщения:
    976
    это макро, про макросы можно прочитать очень хорошую статью Эдмонда, но на данном этапе может тебе не стоит сильно в это углубляться просто запомни что макрос подставляется препроцессором ещё до етапа компиляции, в данном случа текст будет CrLf просто заменён на 13,10 - тоже самое что бы ты сделал Ctrl-C Ctrl-V
     
  8. Encou

    Encou New Member

    Публикаций:
    0
    Регистрация:
    10 авг 2007
    Сообщения:
    9
    Спасибо.
    Действительно, для того этапа, на котором я нахожусь, это, наверное, пока ни к чему.
     
  9. rubic_

    rubic_ Женя

    Публикаций:
    0
    Регистрация:
    9 июл 2007
    Сообщения:
    121
    Адрес:
    Омск
    string db "123123123",0Dh,0Ah,'S'
    0Dh,0Ah-аналог '\n'
     
  10. Encou

    Encou New Member

    Публикаций:
    0
    Регистрация:
    10 авг 2007
    Сообщения:
    9
    Не работает. Может это оттого, что я поставил '$' не там, где надо в этом случае?
    Код (Text):
    1.  Mess db "Test message$", 0Dh, 0Ah, 'S'
     
  11. agent007

    agent007 New Member

    Публикаций:
    0
    Регистрация:
    3 фев 2007
    Сообщения:
    166
    offtop: ну нет слов, какие нынче ленивые "новички" пошли... новичком то неназвать. Как трудно открыть пару примеров, из того самого масма, куча туторов там есть.... смотри и кури.... неужели это так сложно и проще назвать себя "новичком" и поспрашивать глупый вопрос пару дней?!
     
  12. Encou

    Encou New Member

    Публикаций:
    0
    Регистрация:
    10 авг 2007
    Сообщения:
    9
    agent007
    Зачем тогда форумы, общение людей, вопросы и ответы, если можно всех отослать к документациям?
    Кроме того стили программирования под DOS, Windows, *nix отличаются друг от друга. Везде есть свои тонкости. И если на вопрос по досовскому асму давать совет в недосовском стиле, то пользы от него будет как от пятого колеса.
     
  13. JAPH

    JAPH New Member

    Публикаций:
    0
    Регистрация:
    23 июн 2007
    Сообщения:
    124
    RusFAQ не вы мучаете?
    Книги для кого пишут? Калашникова сначала почитайте, потом Iczeliona, и только после троекратного прочтения спрашивайте.

    Mess db "Test message", 0Dh, 0Ah, '$'
     
  14. JAPH

    JAPH New Member

    Публикаций:
    0
    Регистрация:
    23 июн 2007
    Сообщения:
    124
    Насчёт как использовать - я так понимаю, под DOS,- см. описание функций 21h-ого прерывания.
    Код (Text):
    1. ; Вывод строки до доллара
    2. mov ah, 9
    3. mov dx, offset Mess ; В сегменте, адресуемом DS
    4. int 21h
    5. ; Вывод символа
    6. mov ah, 02
    7. mov dl, '0'
    8. int 21h
    9. ; Вывод любой строки
    10. mov ah, 40h
    11. xor bx, bx
    12. mov cx, 15 ; длина строки
    13. mov dx, offset Mess ; в сегменте, адресуемом DS
    14. int 21h
     
  15. Encou

    Encou New Member

    Публикаций:
    0
    Регистрация:
    10 авг 2007
    Сообщения:
    9
    JAPH
    Калашникова как раз и читаю.
     
  16. Encou

    Encou New Member

    Публикаций:
    0
    Регистрация:
    10 авг 2007
    Сообщения:
    9
    JAPH
    Помогло, спасибо.
     
  17. JAPH

    JAPH New Member

    Публикаций:
    0
    Регистрация:
    23 июн 2007
    Сообщения:
    124
    tender_swallow
    Приехали. ASCII :)
     
  18. AndNot

    AndNot New Member

    Публикаций:
    0
    Регистрация:
    7 янв 2007
    Сообщения:
    49
    Encou, в сишных примерах можешь встретить так же следующие спецсимволы ASCII:
    в асме это можно заменить на следующее:
    Других вроде не встречал :)
     
  19. Encou

    Encou New Member

    Публикаций:
    0
    Регистрация:
    10 авг 2007
    Сообщения:
    9
    Здорово) Спасибо!)
     
  20. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    3.14здеж и провокация! (С)

    \r = 13
    \n = 10

    Полный перевод строки в DOS/Windows: \r\n
    в *nix: \n