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 ?
Как сохранить нажатую клавишу в память а потом изъять от туда
сам код выглядит примерно так:
code.
DB "0"
s1 DB "00000000", 0
lea di,s1
.......
.......
mov ah,00
int 10h
mov [di],al; ;Ну вот сохранение. если нужно подругому
inc di
........
........
изъетие:
mov al,[di] ;видимо как то подругому
.........
Кто знает объясните плиз.
.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
вот код он сохраняет сканкод клавиши в scan, а ascii код в asymb:
Код:
возможно мой код не верен, у ткбя в кодк мне кажется не хватает
Код:
mov ax,cs
mov ds,ax ; настраиваем ds
mov ds,ax ; настраиваем ds
и mov ptr byte[ds:di],al или ptr byte ds:[di]
Я вообще сижу на Masm. Спасибо за код! попробую.