Вывести аски и скан коды клавиш...
07.10.2008, 22:03. Показов 7839. Ответов 0
Итак,Assembler i8086/88
Задание:Написать программу,которая выводит аски и скан -коды
нажатой клавиши в 16-й системе.
Т.е. прога пишет: Нажмите любую клавишу
При нажатии,например,А,выводит:
A 41H 1EH
и т.д. ,ESC-выход
Вот даже есть начало,только выводит немного не то,
что тут можно поправить?...
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
| sseg segment stack
db 128 dup(?)
sseg ends
dseg segment
msg1 db 'Najmite klavishu',10,13,'$'
hex db '0123456789abcdefghijklmnopqrstuvwxyz',10,13,'$'
dseg ends
cseg segment
assume ss:sseg,ds:dseg,cs:cseg
start:
mov AX,dseg
mov DS,AX
mov AH,9
mov DX,offset msg1
int 21h
mov AH,0
int 22
push AX
mov AH,6
mov DL,AL
int 21h
mov AH,6
mov DL,' '
int 21h
shr AL,4
mov AH,0
mov SI,AX
mov AH,6
mov DL,[SI+hex]
int 21h
pop AX
push AX
shl AL,4
shr AL,4
mov AH,0
mov SI,AX
mov AH,6
mov DL,[SI+hex]
int 21h
pop AX
push AX
mov AH,6
mov DL,'h'
int 21h
mov AH,6
mov DL,' '
int 21h
mov AL,AH
shr AL,4
mov AH,0
mov SI,AX
mov AH,6
mov DL,[SI+hex]
int 21h
pop AX
push AX
shl AL,4
shr AL,4
mov AH,0
mov SI,AX
mov AH,6
mov DL,[SI+hex]
int 21h
pop AX
mov AH,6
mov DL,'h'
int 21h
mov AH,6
mov DL,' '
int 21h
mov AH,4Ch
int 21h
cseg ends
end start |
|
Добавлено через 10 часов 38 минут 9 секунд
Вот другой немного вариант- всё работает,
одна просьба-пояснить что какой блок выполняет...
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
| sseg segment stack
db 128 dup(?)
sseg ends
dseg segment
msg db 'Najmite klavishu',10,13,'$'
txt db 10,13,'$'
hex db '0123456789ABCDEF'
dseg ends
cseg segment
assume ss:sseg,ds:dseg,cs:cseg
start:
mov ax,dseg
mov ds,ax
mov ah,9
mov dx,offset msg
int 21h
nachalo:
mov ah,0
int 22
cmp al,1bh
je konec
push ax
mov dl,al
mov ah,6
int 21h
mov ah,6
mov dl,' '
int 21h
pop ax
push ax
shr al,4
mov ah,0
mov si,ax
mov dl,[si+hex]
mov ah,6
int 21h
pop ax
push ax
and al,00001111b
mov ah,0
mov si,ax
mov dl,[si+hex]
mov ah,6
int 21h
mov ah,6
mov dl,'h'
int 21h
mov ah,6
mov dl,' '
int 21h
pop ax
push ax
shr ah,4
mov al,ah
mov ah,0
mov si,ax
mov dl,[si+hex]
mov ah,6
int 21h
pop ax
mov al,ah
mov ah,0
and al,00001111b
mov si,ax
mov dl,[si+hex]
mov ah,6
int 21h
mov ah,6
mov dl,'h'
int 21h
mov ah,9
mov dx,offset txt
int 21h
jmp nachalo
konec:
mov ah,4ch
int 21h
cseg ends
end start |
|
|