Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вопрос про int21H 
:(
    Опции темы
neutrino
Дата 14.4.2002, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

Репутация: нет
Всего: 62



Я только начал что-то делать в АСМе, и вот такой у меня вопрос: чтобы считать символ с клавиатуры, надо загнать в аx 0100h и вызвать прерывание 21h, правильно? Потом код полученного символа запишется в al. Так вот, будет ли это работать так:
Код

xor ax, ax
inc ah
int 21h


Заранее спасибо! :)


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
Chingachguk
Дата 14.4.2002, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1232
Регистрация: 25.3.2002
Где: Москва

Репутация: нет
Всего: 18



Все будет работать -  а вообще, чего проще - проверь и увидишь :)

ЗЫ: Не увлекайся прерываниями ДОС в этом случае: гораздо лучше использовать прерывание int 16h(BIOS) - они даеют больше возможностей:

xor ax,ax
int 16
; Ждем, пока не нажали клавишу
; Когда нажмем, в al вернется код символа, в ah - его скен-код

mov ah,1
int 16
; Проверим, не нажата ли клавиша ?
; Если нажали, то флаг ZF сброшен и в al вернется код символа, в ah - его
; скен-код

Напрмер:

Код

.286
Esc_Key equ 27
text segment byte public
assume cs:text,ds:text
org   100h
begin:
@@Wait_Key:
 mov  ah,1
 int  16h
 jz   @@Wait_Key
 xor  ax,ax
 int  16h
 push ax
 mov  ah,0
 mov  di,offset WhatKey+21
 call DecChar
 mov  di,offset WhatKey+33
 call HexChar
 pop  ax
 push ax
 mov  al,ah
 mov  ah,0
 mov  di,offset WhatKey+45
 call DecChar
 mov  di,offset WhatKey+57
 call HexChar
 pop  ax
 mov  dx,offset WhatKey
 call @@Message
 cmp  al,Esc_Key
 jnz  @@Wait_Key
@@Exit:
 mov  ax,4C00h
 int  21H ; BACK TO DOS
HexChar proc near
 pusha
 mov  cx,4
 mov  bx,offset TabHex
@GetHex:
 rol  ax,4
 push ax
 and  al,0fh
 xlat
 mov  [di],al
 inc  di
 pop  ax
 loop @GetHex
 popa
 retn
TabHex  db '0123456789abcdef'
HexChar endp
DecChar proc near
 pusha
 mov  cx,5
 mov  bx,10000
@GetDec:
 xor  dx,dx
 div  bx
 add  al,'0'
 mov  [di],al
 inc  di
 push dx
 xor  dx,dx
 mov  ax,bx
 mov  bx,10
 div  bx
 mov  bx,ax
 pop  ax
 loop @GetDec
 popa
 retn
DecChar endp
@@Message:
 pusha
 mov   ah,09h
 int   21h
 popa
 retn
WhatKey db 'Key Pressed ! Ascii: ????? (Hex: ????) Scan: ????? (Hex: ????)',13,10,'$'
Text Ends
end begin



--------------------
I don't like the drugs (but the drugs like me). M.Manson.
PM MAIL ICQ   Вверх
neutrino
Дата 14.4.2002, 15:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

Репутация: нет
Всего: 62



Спасибо, Chingachguk!!!  :)


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
tor
Дата 21.6.2002, 20:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 21.6.2002

Репутация: нет
Всего: нет



:thumbs-up
А как реализовать тоже самое в Дельфях 5.5???
PM MAIL   Вверх
tor
Дата 21.6.2002, 20:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 21.6.2002

Репутация: нет
Всего: нет



Уточню вопрос. Как использовать прерывания 10h 21h и т.д. в дельфи
Нужно вызвать ф.BIOS 4f00 или 4f01 для теста в\карты, поддерживаемых режимах и т.д.
PM MAIL   Вверх
Baa
Дата 21.6.2002, 21:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2639
Регистрация: 12.4.2002
Где: Москва

Репутация: нет
Всего: 12



Цитата(tor @ 22.6.2002, 00:59)
Уточню вопрос. Как использовать прерывания 10h 21h и т.д. в дельфи
Нужно вызвать ф.BIOS 4f00 или 4f01 для теста в\карты, поддерживаемых режимах и т.д.

Да никак...пишешь под винды - забудь о прерываниях. Для проверки видюхи есть свои АПИ


--------------------
"Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande
PM ICQ   Вверх
Chingachguk
Дата 21.6.2002, 23:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1232
Регистрация: 25.3.2002
Где: Москва

Репутация: нет
Всего: 18



Это не совсем так ... См., например, мой код по чтению секторов под вин98 в разделе "виндовс" - вызывается фактически ф-ция ax=7305h прерывания int 21h...Это есть "DeviceIOControl" Есть и другие "байки из склепа"...
Но вообще-то это было переходным периодом в истории виндов - сейчас действительно лучше писать на апи, если нет стандартной дельфи-функции...


--------------------
I don't like the drugs (but the drugs like me). M.Manson.
PM MAIL ICQ   Вверх
tor
Дата 22.6.2002, 08:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 21.6.2002

Репутация: нет
Всего: нет



:rolleyes
               Спасибо!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm: Общие вопросы"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0509 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.