Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.05.2010, 13:59   #1
Dzef
 
Аватар для Dzef
 
Регистрация: 12.05.2010
Сообщений: 8
Восклицание вывести нажатую клавишу при каждом сканировании клавиатуры

Ребята помогите написать програму на асемблере которая визначает нажатую клавишу при каждом сканировании клавиатури
Dzef вне форума Ответить с цитированием
Старый 12.05.2010, 14:02   #2
danekne
Форумчанин
 
Регистрация: 12.02.2007
Сообщений: 360
По умолчанию

В смысле? Выводит на экран?
danekne вне форума Ответить с цитированием
Старый 12.05.2010, 14:04   #3
Dzef
 
Аватар для Dzef
 
Регистрация: 12.05.2010
Сообщений: 8
Радость !!!

ДА виводить!
Dzef вне форума Ответить с цитированием
Старый 12.05.2010, 14:07   #4
danekne
Форумчанин
 
Регистрация: 12.02.2007
Сообщений: 360
По умолчанию

Пишите по русски, если не трудно. Все же портал в зоне ru
danekne вне форума Ответить с цитированием
Старый 12.05.2010, 14:12   #5
Dzef
 
Аватар для Dzef
 
Регистрация: 12.05.2010
Сообщений: 8
По умолчанию

Хорошо! На русском да к на русском!
Dzef вне форума Ответить с цитированием
Старый 12.05.2010, 14:12   #6
danekne
Форумчанин
 
Регистрация: 12.02.2007
Сообщений: 360
По умолчанию

Код:
MODEL tiny	;модель памяти
STACK 100h	;размер стека
;-----------------------------------------
delay macro time
local	ext, iter
	push cx
	mov  cx,time	;число итераций внешнего цикла

ext:	
	push cx
	mov  cx,5000	;цисло итераций внутреннего цикла

iter:
	loop iter	;внутренний цикл
	pop  cx
	loop ext	;внешний цикл
	pop  cx
endm
;---------------------------------------------------
.data
tone	   dw  100
author     db  'Разработчик программы: Кравченко Даниил', 0Dh, 0Ah
	   db  'Тема работы: Assembler', 0Dh, 0Ah, '$' 
;------------------------------------------------

.code
main:
	mov ax, @data
	mov ds,ax

	mov ax,0003h	;очистка экрана
	int 10h

	lea dx,author	;адрес строки информации в DX
	mov ax,0900h	;функция вывода строки
	int 21h		;вывод строки
	mov ax,0700h	;функция ожидания нажатия клавиши
	int 21h		;ожидание нажатия любой клавиши

	mov ax,0003h	;очистка экрана
	int 10h


Begin:
	call Wait_key   ;Вызываем процедуру ожидания нажатия клавиши

	cmp al,27       ;Пользователь нажал ESC?
	je Quit_prog    ;Если так, то на метку Quit_prog  

	cmp al,0        ;Это расширенный код клавиши?
	je Begin        ;Если так, то ждем нажатия следующей клавиши  

	call Out_char   ;Иначе выводим символ на экран
	jmp Begin       ;И ожидаем нажатия следующей клавиши  


			;Пользователь нажал ESC
Quit_prog:
	mov ax,4c00h
	int 21h        ;Выходим из программы



; === Подпрограммы ===

; --- Wait_key ---
Wait_key proc
	mov ah,10h 	;Функция 10h прерывания 16h - ожидание нажатия клавиши
	int 16h
	ret
Wait_key endp


; --- Out_char ---
Out_char proc
			;Выводим символ на экран путем прямого отображения в видеобуфер

	push cx        ;Сохраним в стеке изменяемые данной процедурой регистры
	push ax
	push es

	push ax
	mov ax,0B800h  ;Готовим регистры к выводу символа на экран
	mov es,ax
	mov di, bx
	mov cx,1       ;Будем выводить 1 раз
	pop ax
	mov ah,31      ;Атрибуты выводимого символа

Next_sym:
	mov  es:[di],ax
	add  bx,2       ;Увеличиваем указатель вывода символа на 2
	loop Next_sym  	;Следующий символ  

	pop es         	;Восстановим сохраненные в стеке регистры
	pop ax
	pop cx
	ret
Out_char endp
ends
end main		;конец программы
danekne вне форума Ответить с цитированием
Старый 12.05.2010, 14:14   #7
Dzef
 
Аватар для Dzef
 
Регистрация: 12.05.2010
Сообщений: 8
По умолчанию

СПС, очень благодарный!
Dzef вне форума Ответить с цитированием
Старый 26.02.2011, 23:03   #8
minato91
 
Регистрация: 26.02.2011
Сообщений: 4
По умолчанию

Помогите мне нужна программа на ассемблере.
Программа просит вести символ, если символ это бува "S" то программа выполнена, если нет то программа снова просит вести символ, ну и процес повторяется, пока не вели символ "S" программа будет повторятся
minato91 вне форума Ответить с цитированием
Старый 27.02.2011, 21:17   #9
Ant1971on
Пользователь
 
Регистрация: 20.07.2010
Сообщений: 52
По умолчанию

Код:
cseg segment
org 100h

start:	mov ah,9
	mov dx,offset prmt
	int 21h
	mov ah,1
	int 21h
	cmp al,'S'
	jne start
	mov ah,9
	mov dx,offset rslt
	int 21h
	ret

prmt db 13,10,'Введите символ:',13,10,'$'
rslt db 13,10,'Вы ввели S$'

cseg ends
end start

Последний раз редактировалось Ant1971on; 27.02.2011 в 21:53.
Ant1971on вне форума Ответить с цитированием
Старый 28.02.2011, 20:40   #10
minato91
 
Регистрация: 26.02.2011
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Ant1971on Посмотреть сообщение
Код:
cseg segment
org 100h

start:	mov ah,9
	mov dx,offset prmt
	int 21h
	mov ah,1
	int 21h
	cmp al,'S'
	jne start
	mov ah,9
	mov dx,offset rslt
	int 21h
	ret

prmt db 13,10,'Введите символ:',13,10,'$'
rslt db 13,10,'Вы ввели S$'

cseg ends
end start

Прога работает но почемуто рядом с виденым символом появляются какието каракули и при нажатии на "S" не выводит строчку "вы ввели S" а просто заканчивается. Может я сам накасячил посмотрите


ssg segment para stack 'stack'
dw 32 dup(?)
org 100h
ssg ends

datasg segment para 'data'

string db 'Введите символ:',13,10,'$'
string1 db 'Вы ввели S',13,10,'$'

ends

codesg segment para 'code'
begin proc far

assume cs:codesg,dsatasg,ss:ssg
push ds
sub ax,ax
push ax
mov ax,datasg
mov ds,ax

mov ax,0600h
mov bh,02
mov cx,0
mov dx,184fh
int 10h


start:

lea dx,string
mov ah,09
int 21h
mov ah,01
int 21h
cmp al,'S'
jne start
lea dx,string1
mov ah,09
int 21h

ret
codesg ends
begin endp
end start

Последний раз редактировалось minato91; 28.02.2011 в 20:54.
minato91 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Счетчик при каждом открытии Excel в ячейке Йогурт Microsoft Office Excel 9 11.05.2010 06:48
Определить нажатую клавишу средствами Windows k1r1ch Win Api 3 13.09.2009 18:36
Как при нажатии на строку в Listbox передавать нажатую строку в переменную Михаил Юрьевич Общие вопросы Delphi 5 16.03.2009 12:59
Событие нажатия на клавишу клавиатуры Bayazet Общие вопросы Delphi 2 03.02.2009 16:17
У знаём нажатую клавишу... Altera Общие вопросы Delphi 2 10.02.2008 11:30