Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ввод информации с клавиатуры 
:(
    Опции темы
klepik
Дата 24.5.2007, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



1) У кого небудь есть примерчик програмки, чтоб можно было вводить данные с клавиатуры и выводить на екран. 
Желательно через порт в/в или прерывания int 09h и 16h

2) программа, управляющея светодиодами на лицевой панели компьютера
Исправте пожалуйста ошибку с outp

Код

#include <stdio.h>
void main(void);
void main(void) {
        int i;
/* Посылаем процессору клавиатуры  команду управления светодиодами */
         outp(0x60,0xed);

/* Перед посылкой второго байта команды  выполняем небольшую задержку */
        for(i=0; i<4000; i++);
/* Выводим второй байт команды,  младшие три бита которого определяют  состояние светодиодов на лицевой панели  клавиатуры. */
        outp(0x60,7);
/* Ожидаем нажатия на любую клавишу. */
        getch();
/* Выключаем все светодиоды.*/
        outp(0x60,0xed);
        for(i=0; i<4000; i++);
        outp(0x60,0);
        exit(0);
}


Всем спасибо


Это сообщение отредактировал(а) klepik - 24.5.2007, 16:24
PM MAIL   Вверх
jonie
Дата 24.5.2007, 22:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

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



Код

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;ReadKey-reading 1 key from stdin
;;in=-
;;out=    al-charecter
;;    ah-scancode
;;note:
;; if Press Any Special key (F1,F3,etc.) then
;; you must cmp al with 0 and if it`s true 
;; take ah=scancode,else see beloow
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ReadKey PROC Near
    mov ah,00h
    int 16h
    ret
ReadKey ENDP

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Readln using int 21h
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;Readln -read 1 string from file to buffer.String now NULL-terminate!
;;in =bx   -hadle
;;    ds:dx-buffer
;;     ah=0 if EOF
;;     al=1 if not EOF
;;out=CF set on Error
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Readln PROC NEAR
;    mov dx,offset buffer ;already
;    mov bx,handle        ;already
    mov si,dx
 readstart:
    mov ah,3Fh
    mov cx,01
    int 21h
    jc ErrorRead
    test ax,ax    ;maby EOF already
    jz  EndReadEOF
    cmp [si],byte ptr 0Dh
    jz  EndRead
    inc si
    mov dx,si
    jmp short readstart
 EndReadEOF:
    mov [si],byte ptr 00
    jmp short errorread  ;go to exit
 EndRead:
  ;read 0Ah byte....
    mov [si],byte ptr 00

    mov ah,42h
    mov al,01h
; mov bx,handle ;already set
    xor cx,cx
    mov dx,01h
    int 21h
    mov ah,01
 ErrorRead:
    ret
Readln ENDP

ну и вывод собсна...
Код

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;Length  - return length of ASCIZ string -WITHOUT 00 BYTE!!!
;;in-      bp - offset string ASCIZ
;;out-     cx - length of that string
;;modif. - cx,al,si
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
LengthW PROC Near
    xor cx,cx
    mov si,bp
 calcul:
    mov al,[si]
    test al,al
    jz endcalc
    inc si
    jmp short calcul
endcalc:
    sub si,bp
    mov cx,si
    ret
LengthW ENDP
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;Writeln - show string which terminate by zero byte.
;;          use color.
;;          cursor will after string
;;in=    bp - offset string
;;       bl - atribute
;;out-   ???
;;modif. ah,al,bl,bh,dl,dh,cx
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Writeln PROC Near
  call WhereXY
  mov ah,13h
  mov al,01    ;{must be 0 if cursor must be stand after string}
; mov bl,14    ;{<--atribut!}   ;already set
  mov bh,00    ;{video page}
  call LengthW
; mov cx,len   {length of string}          ;set by Length
; mov bp,offset string  {offset of string} ;<already set
  int 10h
Writeln ENDP

писалось очень давно под определенные нужды...посему мб ошибки.. ну и общий стиль никакой)...так что AS IS )


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
student0511
Дата 13.5.2008, 01:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



А какие есть функции в Win API для заполнения переменных определенного типа, например, мне нужно определить значение переменной A типа int: в С++ - это cin>>A, в С scanf(...), а в WinAPI? 
PM MAIL   Вверх
586
Дата 13.5.2008, 04:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

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



Цитата(student0511 @  13.5.2008,  02:33 Найти цитируемый пост)
какие есть функции в Win API для заполнения переменных определенного типа

Есть функция для чтения ввода.
Код
char buff[260];
DWORD dwRead;
int i;
ReadConsole(GetStdHandle(STD_INPUT_HANDLE), buff, 260, &dwRead, 0);
i = atoi(buff);


Это сообщение отредактировал(а) 586 - 13.5.2008, 04:19
PM   Вверх
xvr
Дата 13.5.2008, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

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



Цитата(klepik @ 24.5.2007,  16:22)
1) У кого небудь есть примерчик програмки, чтоб можно было вводить данные с клавиатуры и выводить на екран. 
Желательно через порт в/в или прерывания int 09h и 16h

2) программа, управляющея светодиодами на лицевой панели компьютера
Исправте пожалуйста ошибку с outp

В Windows никакие int xx, in и out не работают, только в голом ДОСе, увы  smile 
В ДОС программах, запущенных из ДОС бокса Windows они тоже могут не работать (все int/in/out перехватываются специальной подсистемой в Windows и эмулируются на уровне Win32 прикладной программы)

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


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

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




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


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

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