Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 641 • Страница 24 из 33<  1 ... 21  22  23  24  25  26  27 ... 33  >
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

Member
Статус: Не в сети
Регистрация: 04.10.2004
sinh писал(а):
пока не представляю для чего надо для стэка резервировать область отдельную
Привычка :). При наличии вызовов прерываний/процедур предпочитаю знать расположение стека относительно кода и данных.
sinh писал(а):
каким образом сделать, чтобы вторые сообще выводились на сл строчке?
db "Text", 0Dh, 0Ah, "$"



Партнер
 

Junior
Статус: Не в сети
Регистрация: 24.06.2008
Откуда: Пятигорск
подскажите пожалуйста, каким образом можно вывести асци код клавиши, в указанной позиции курсора.


 

Member
Статус: Не в сети
Регистрация: 04.10.2004
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" Роберта Журдена и вам значительно легче будет решать учебные задачи :).


 

Junior
Статус: Не в сети
Регистрация: 24.06.2008
Откуда: Пятигорск
так вот в том-то и проблема..мне нужно сам асци код. а с помощью 10аш он выведет символ, соотв данному асци коду)

я просто вывел средствами си, получилось две лабы, вместо одной) так и не нашел решения в этом прерывании.
спасибо большое за помощь!


 

Member
Статус: Не в сети
Регистрация: 04.10.2004
sinh
Дык никто не мешает преобразовать сначала ASCII-код (т.е. однобайтную цифру) в набор символов (2 символа - hex, 3 символа - dec) :).


 

Member
Статус: Не в сети
Регистрация: 13.06.2007
Откуда: UK/Glasgow
Фото: 0
Есть вопросик, как за один раз выводить на экран не одну строку, а сразу несколько? По нажатию клавиши

_________________
-=AMD POWER FAN CLUB=-


 

Advanced member
Статус: Не в сети
Регистрация: 10.04.2003
Откуда: Москва
Написать сразу несколько строк, а между ними не ставить признак конца строки - 0
Test db "Это тестовая строка номер 1",0Ah, 0Dh
db "Это тестовая строка номер 2",0Ah, 0Dh
db "Это тестовая строка номер 3",0Ah, 0Dh,0
Выводить строки можно с помощью команды API, приведенной выше. Но это неудобно, лучше использовать сервис DOS - int 21h


 

Junior
Статус: Не в сети
Регистрация: 27.10.2009
pure Asm must die навечно. :D когда наши корабли бороздят просторы вселенной, а высокоэффективные серверные системы работают на виртуальной машине (JVM :D) писать на pure ассемблере... бууууэээээ... :D


 

Member
Статус: Не в сети
Регистрация: 15.02.2009
Откуда: Лангепас
Sals
Не тролли!!! :-x
Когда тебе понадобиться простенький драйверок под нестандартное железо - сам прибежишь к ASM-программеру и за 20килострок кода выложишь 20 вечнозелёных килопрезидентов. :lol:


 

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

Где сдесь ошибка? Подскажите пожалуйсто.


 

Member
Статус: Не в сети
Регистрация: 15.02.2009
Откуда: Лангепас
Учим прерывания DOS и BIOS: http://forum.arthacking.net/showthread.php?t=9
Код:
     
                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
Статус: Не в сети
Регистрация: 04.10.2004
A1exander писал(а):
Как сделать чтоб русский язык тоже распознавался?
Читать о работе со знакогенератором. Если лень, то можно просто обеспечить поддержку нужной кодовой страницы.


 

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 ;) )).


 

Junior
Статус: Не в сети
Регистрация: 15.10.2009
Откуда: от туда
Спасибо большое за помощь
oxy писал(а):
Вопрос 1. - в чём работает твоя ASM-прога, в чистом ДОСе или в Win-консоли (т.е. под виртуальной машиной).

oxy писал(а):
Вопос 2. - в чём пишешь ASM-прогу?

Пишу в блокноте, запускаю через cmd))
:gun: <<< Давно хотел поставить этот смайл


 

Advanced member
Статус: Не в сети
Регистрация: 10.04.2003
Откуда: Москва
В древние времена была программа Volkov Commander. Возьми ее и набирай текст в ней.
(чур FAR не предлагать!)


 

Member
Статус: Не в сети
Регистрация: 13.06.2007
Откуда: UK/Glasgow
Фото: 0
oxy
Я пишу проги через обычный блокнот, запускаю как обычное приложение. Можно ли всё таки выводить русские буквы таким образом? Может сохранять текстовый файл перед компиляцией в досовской кодировке?
:grob:

_________________
-=AMD POWER FAN CLUB=-


 

Junior
Статус: Не в сети
Регистрация: 15.10.2009
Откуда: от туда
serj Почему FAR не предлагать??? 0_о
VC кстати есть, но мне Far не очень то нравится, а VC темболее. А что если в фаре изменить кодировку то прокатит?

serj
Все спасибо, Вы реально помогли - самый простой вариант))) :beer:
SwiPTorrent
берем FAR или VC или любой другой менеджер - кому что больше нравицца)))
создаем файл переводим кодировку в DOS и наслаждаемся :beer:


Последний раз редактировалось A1exander 04.12.2009 21:41, всего редактировалось 1 раз.

Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 641 • Страница 24 из 33<  1 ... 21  22  23  24  25  26  27 ... 33  >
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan