0 / 0 / 0
Регистрация: 04.10.2010
Сообщений: 12
1

Записать символ в буфер клавиатуры, проверить буфер на наличие в нём символов, и вывести данный символ

04.10.2010, 14:57. Показов 4240. Ответов 1
Метки нет (Все метки)

Доброго дня всем. Прошу помочь немного с несложной задачей, на использование прерывания INT 16h.
Суть следущая: надо записать символ в буфер клавиатуры, потом проверить буфер на наличие в нём символов, и вывести данный символ.
Вот собстна то что я написал,опираясь на книги и интернет-ресурсы:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
stseg   segment para    stack
        dw      16      dup(?)
stseg   ends
dseg    segment para
 
dseg    ends
cseg    segment para
lab1    proc    far
        assume  cs:cseg,ds:dseg,ss:stseg
        push    ds
        mov     ax,0
        push    ax
        mov     ax,dseg
        mov     ds,ax
        
 
 
        mov     ah,05h     ;/Пишем символ 
        mov     cl,'D'       ; в буфер
        mov     ch,00h      ; клавиатуры/
        int     16h         ;
 
        mov     ah,11h     ;/проверяем буфер/
        int     16h
 
        mov     ah,10h     ;/Считываем символ
        int     16h        ; из буфера/
       
        ret
lab1    endp
cseg    ends
        end     lab1
Затем с помошью TASM, TLINK, TD компилю,линукую и собираю...
Но результат вот получается не тот, как только TD доходит до первого прерывания он обнуляет весь регистр АХ, и а на втором прерываниии он показывает что буфер клавы ПУСТ!!!!(( и соответственно флаг Z устанавливает в 1, хотя ведь я же записал в буфер до этого символ 'D'!!!!
на последнем прерывании так же выдается что буфер пуст и комп ждёт ввода символоа, хотя должен вывести тот каторый я в буфер записал до этого((
непониамю...что происходит в этой проге,почему работате не так как надо..(((....кто может подскажите причину....
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.10.2010, 14:57
Ответы с готовыми решениями:

Поместить символ в буфер клавиатуры
Доброго времени суток всем! Взываю кого нибудь о помощи!!!Пишу сервер\клиент на Делфях и мне...

Ввести строку и символ с клавиатуры. Проверить есть ли такой символ в строке
Совершенно не понимаю Assembler, помогите пожалуйста с заданием. Задание: Ввести строку и символ...

Считать строку с клавиатуры и вывести на дисплей её 1-й символ - коричневым цветом, а 4-й символ - красным
Здравствуйте, нужна помощь с таким заданием: Единственное, что я смог слепить - это такой код,...

Задан символьный массив. Ввести с клавиатуры символ и вывести на консоль количество таких символов в массиве.
Помогите решить лабораторные: 1,Задан символьный массив. Ввести с клавиатуры символ и вывести...

1
2012 / 1284 / 60
Регистрация: 05.06.2010
Сообщений: 2,213
04.10.2010, 15:24 2
правда не работает... может функция устарела? не поддерживается dios... не знаю - помещаю символ прямо в буфер - все нормально
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.model small
.data
 
.code
start:
        mov     ax,@data
        mov     ds,ax
        
 
 
;        mov     ah,05h     ;/Пишем символ 
;        mov     cl,'D'       ; в буфер
;        mov     ch,00h      ; клавиатуры/
;        int     16h         ;
xor ax, ax
mov es, ax
mov di, 41eh
mov al, 'D'
stosb
 
        mov     ah,1h     ;/проверяем буфер/
        int     16h
 
mov dl, al
mov ah, 2
int 21h
 
        mov     ah,10h     ;/Считываем символ
        int     16h        ; из буфера/
       
        ret
end
Добавлено через 20 секунд
Цитата Сообщение от vital792 Посмотреть сообщение
dios
bios
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.10.2010, 15:24

Поменять в введенном с клавиатуры строке символов подряд заданный символ на другой заданный символ
Поменять в введенном с клавиатуры строке символов подряд заданный символ на другой заданный символ.

Вывести строки, в которых символ «*» встречается не менее 2 раз и заменить символ «*» на символ «_»
День добрый. Имеется условие лабы. Написать программу, в которой с клавиатуры вводится до 10...

вывести символы в следующем порядке: первй символ из входного файла, последний символ, второй символ, предпоследний смвл
Дан файл in.txt, содержащий текст. Требуется вывести в файл out.txt символы в следующем порядке:...

Исключить из введенной строки символ, введенный с клавиатуры. Вывести на экран количество удаленных символов и строку
При вводе строки символ удаляется только из первого слова. Как сделать, чтобы он удалялся из...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.