Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как сохранить нажатую клавишу в память а потом изъять от туда

10K
06 сентября 2009 года
palevo060
144 / / 05.09.2009
Всем сдрасте! Я Только начинаю изучать ассемблер и никак не могу сохранить в память нажатую клавишу и тем более извлечь. В интернете уже смотрел, но бестолку.
сам код выглядит примерно так:

code.
DB "0"
s1 DB "00000000", 0
lea di,s1
.......
.......
mov ah,00
int 10h

mov [di],al; ;Ну вот сохранение. если нужно подругому
inc di
........
........
изъетие:
mov al,[di] ;видимо как то подругому
.........


Кто знает объясните плиз.
10K
06 сентября 2009 года
palevo060
144 / / 05.09.2009
Все разобрался. Три дня мучался. Если что, Компилятор Masm32. Прога ( emu8086 ) очень помогла=)


.model tiny
.code
org 100h
begin:
jmp start
DB "0"
s1 DB "00000000", 0
start:
mov cx,0
LEA DI, s1
MOV SI, OFFSET s1

wait_for_key:

MOV AH,00h ; get pressed key.
INT 16h

jz wait_for_key

CMP AL, 1bh ; 'RETURN' pressed?
Je exit


CMP AL, 0dh ; 'RETURN' pressed?
Je revers1

mov dl,0



add_to_buffer:

MOV [DI], AL
INC DI
INC CX


jmp wait_for_key

print:

; print the key:
MOV al, [DI]
MOV AH, 0Eh
INT 10h
mov ah,02h
mov bh,01h
inc dl
mov dh,00h
int 10h


DEC CX
inc DI

cmp cx,0
jg print
jmp stop

stop:

mov ah,01h
int 16h
jz stop

exit:
ret
revers1: push cx
revers:
dec di
dec cx
cmp cx,0
jge revers
pop cx
jmp print
end begin
18K
06 сентября 2009 года
logree
102 / / 27.09.2008
Ассемблер я так предполагаю tasm?

вот код он сохраняет сканкод клавиши в scan, а ascii код в asymb:
Код:
begin:
    mov    ax,cs
    mov    ds,ax ; настраиваем ds
    ; int 16  функция ah = 0 - читать (ожидать) следующую нажатую клавишу
    xor     ax,ax ; обнуляем ax
    int     16h   ; al -ascii символ ah- scancode
   
    mov   di, offset asymb  ; в di адрес метки asymb
    mov   ptr byte[ds:di],al ; записываем байт по адресу находящемуыя в ds:di
    mov   di, offset scan
    mov   ptr byte[ds:di],al ;аналогично
   
    mov   ah,0eh
    int     10h     ; выводим на экран    

    mov    ah,4ch ;завершить программу
    int     21h

scan    db ?
asymb  db ?


возможно мой код не верен, у ткбя в кодк мне кажется не хватает
 
Код:
mov    ax,cs
    mov    ds,ax ; настраиваем ds

и mov ptr byte[ds:di],al или ptr byte ds:[di]
10K
06 сентября 2009 года
palevo060
144 / / 05.09.2009
Я по всем книгам сразу плюс интернет. Книг много нашел.
Я вообще сижу на Masm. Спасибо за код! попробую.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог