sinh Можно воспользоваться возможностями int 10h или int 21h .
Позиционирование, а потом вывод.
Пример:
Код:
mov AH, 0Fh ; Получение информации о видеорежиме (функция 0Fh) int 10h ; ради получения номера активной видеостраницы в BH
mov DL, 5 ; Установка нужной строки mov DH, 15 ; и столбца mov AH, 2 ; Позиционирование в заданную позицию int 10h ; (функция 02h)
mov AL, ASCII_symbol ; задание кода символа mov BL, attr_byte ; задание атрибутов символа (можно не задавать для функции 0Ah) mov CX, 1 ; Кол-во выводимых символов mov AH, 9 ; Вывод символа с атрибутами (функция 09h), int 10h ; хотя можно и без атрибутов (функция 0Ah)
Найдите книжку аля "Справочник программиста на персональном компьютере фирмы IBM" Роберта Журдена и вам значительно легче будет решать учебные задачи .
Advanced member
Статус: Не в сети Регистрация: 10.04.2003 Откуда: Москва
Написать сразу несколько строк, а между ними не ставить признак конца строки - 0 Test db "Это тестовая строка номер 1",0Ah, 0Dh db "Это тестовая строка номер 2",0Ah, 0Dh db "Это тестовая строка номер 3",0Ah, 0Dh,0 Выводить строки можно с помощью команды API, приведенной выше. Но это неудобно, лучше использовать сервис DOS - int 21h
pure Asm must die навечно. когда наши корабли бороздят просторы вселенной, а высокоэффективные серверные системы работают на виртуальной машине (JVM ) писать на pure ассемблере... бууууэээээ...
Member
Статус: Не в сети Регистрация: 15.02.2009 Откуда: Лангепас
Sals Не тролли!!! Когда тебе понадобиться простенький драйверок под нестандартное железо - сам прибежишь к ASM-программеру и за 20килострок кода выложишь 20 вечнозелёных килопрезидентов.
Junior
Статус: Не в сети Регистрация: 15.10.2009 Откуда: от туда
Здравствуйте! Будте добры сообщите как использовать взаимодействие ввода с клавы и вывода на экран в TASM. С я языками высшего уровня все было бы проще, а тут чет я никак. Лабу задали в универе как сделать хз, а училка сама нех не знает, спросить неукого в литературе копался тож особо ниче не нашел. А программа следующая: .model small .stack 100h .code start: mov ax,DGROUP mov ds,ax mov dx,offset timeprompt mov ah,9 int 21h cmp al,'Y' jz IsAfternoon cmp al,'y' jnz IsMorning IsAfternoon: mov dx,offset GoodAfternoonMessage jmp DisplayGreeting IsMorning: mov dx,offset GoodMorningMessage DisplayGreeting: mov ah,9 int 21h mov ax,4C00h int 21h .data timeprompt db "What time is it, pm? - [Y/N]",13,10,'$' GoodMorningMessage label byte db 13,10,'Good Morning!',13,10,'$' GoodAfternoonMessage label byte db 13,10,'Good Aftetnoon!',13,10,'$' end start
mov ah,08h ; считать символ с клавиатуры int 21h ; без эха, с ожиданием, с проверкой на Ctrl-Break test al,al ; если AL = 0 jz eASCII_entered ; введен символ расширенного ASCII cmp al,1Bh ; иначе: если введен символ 1Bh (Esc), je key_ESC ; выйти из программы, cmp al,'Z' ; если введен символ Z,
Junior
Статус: Не в сети Регистрация: 15.10.2009 Откуда: от туда
Спасибо большое программа работает. правда пришлось удалить ваши последние 4 строчки
Цитата:
jz eASCII_entered ; введен символ расширенного ASCII cmp al,1Bh ; иначе: если введен символ 1Bh (Esc), je key_ESC ; выйти из программы, cmp al,'Z' ; если введен символ Z,
Теперь программа работает отлично, правда сообщение "С добрым утром" выскакивает при нажатии любой клавиши кроме N ... Можно мне отправить еще несколько исходников подобных программ чтобы я смог лучше разобраться в ф-циях ввода-вывода.
Member
Статус: Не в сети Регистрация: 15.02.2009 Откуда: Лангепас
A1exander писал(а):
Можно мне отправить еще несколько исходников подобных программ чтобы я смог лучше разобраться в ф-циях ввода-вывода.
Вообще-то, есть море ДОСовских функций и БИОСовское int 16h (как самое популярное) Кусок кода был "тупо" выдран из контекста программы. Наилучший вариант - не ждать, когда лабу сделают за тебя, а полистать книжки - там эти функции "разжёваны" до безобразия, описаны их отличия, рассказано, что такое "расширенный" ASCII-код и много другого...
Junior
Статус: Не в сети Регистрация: 15.10.2009 Откуда: от туда
А вот еще такой вопрос: Как сделать чтоб русский язык тоже распознавался? А то когда пишешь в программах сообщение на русском то на экран выводится крякозябра.
Member
Статус: Не в сети Регистрация: 15.02.2009 Откуда: Лангепас
A1exander писал(а):
... Как сделать чтоб русский язык тоже распознавался?...сообщение на русском то на экран выводится крякозябра.
Вопрос 1. - в чём работает твоя ASM-прога, в чистом ДОСе или в Win-консоли (т.е. под виртуальной машиной). Если в чистом ДОСе - поставь keyrus сначала, если под Win запускаешь, настрой сессию машины, чтобы она нормально отображала русский и нормально переключала клаву RUS/ENG.
Вопос 2. - в чём пишешь ASM-прогу? В ДОСе (в большинстве случаев) используется CP-866 кодировка. Сообщения должны быть в ней. Если хочешь с клавы принимать символы и работать с ними в проге, то опять: 2.1 Если пишешь прогу под ДОСом и русский у тебя настроен, то смело можешь юзать в качестве кода символа 'Д', 'н', а также писать текстовые строки для экрана в виде "Привет МИР!!! Я первый раз тебя поимел из ASM`а". 2.2 Если пишешь прогу в каком-либо Виндошном IDE, то нужно иметь перед глазами таблицу ASCII для 866`ой кодировки, и писать символы (и строки) в виде Stroka db 234,54,DFh,ABh,0323,0345,0 (ASCII-Z строка (надеюсь в чтении книг дошёл до прерываний BIOS )).
Member
Статус: Не в сети Регистрация: 13.06.2007 Откуда: UK/Glasgow Фото: 0
oxy Я пишу проги через обычный блокнот, запускаю как обычное приложение. Можно ли всё таки выводить русские буквы таким образом? Может сохранять текстовый файл перед компиляцией в досовской кодировке?
Junior
Статус: Не в сети Регистрация: 15.10.2009 Откуда: от туда
serj Почему FAR не предлагать??? 0_о VC кстати есть, но мне Far не очень то нравится, а VC темболее. А что если в фаре изменить кодировку то прокатит?
serj Все спасибо, Вы реально помогли - самый простой вариант))) SwiPTorrent берем FAR или VC или любой другой менеджер - кому что больше нравицца))) создаем файл переводим кодировку в DOS и наслаждаемся
Последний раз редактировалось A1exander 04.12.2009 21:41, всего редактировалось 1 раз.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения