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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.10.2008, 23:02   #1
StudentBTI
 
Регистрация: 06.10.2008
Сообщений: 5
По умолчанию Вывести ASCII и SCAN -коды клавиш...

Итак,Assembler i8086/88
Задание:Написать программу,которая выводит аски и скан -коды
нажатой клавиши в 16-й системе.
Т.е. прога пишет: Нажмите любую клавишу
При нажатии,например,А,выводит:
A 41H 1EH
и т.д. ,ESC-выход
Вот даже есть начало,только выводит немного не то,
что тут можно поправить?...

Код:
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,dsseg,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

Последний раз редактировалось rpy3uH; 07.10.2008 в 10:23.
StudentBTI вне форума Ответить с цитированием
Старый 07.10.2008, 10:46   #2
airyashov
Форумчанин
 
Регистрация: 02.04.2008
Сообщений: 358
По умолчанию

учтите, что
Код:
mov AH,6
mov DL,' '
int 21h
в al последний выведенный символ возвратит
неплохо пишу на ассемблере для 80х86
icq: 3(один)7748666
mail: airyashov(а)inbox.ru

Последний раз редактировалось airyashov; 07.10.2008 в 15:35.
airyashov вне форума Ответить с цитированием
Старый 07.10.2008, 10:49   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию мысли по поводу..

1) в строке 11 (assume) должно быть
Код:
assume ss:sseg,ds:dseg,cs:cseg
это результат замены : D на рожицу...

2) у меня это не компилируется ни в TASM 1.0 ни в MASM8
Цитата:
Turbo Assembler Version 1.0 Copyright (c) 1988 by Borland International

Assembling file: W22.ASM
**Error** W22.ASM(30) Rotate count out of range
**Error** W22.ASM(39) Rotate count out of range
**Error** W22.ASM(40) Rotate count out of range
**Error** W22.ASM(58) Rotate count out of range
**Error** W22.ASM(67) Rotate count out of range
**Error** W22.ASM(68) Rotate count out of range
3) прикрепляю маленький пример scan.asm
он, конечно, на другом принципе построен (садится резидентом) - но вдруг чем поможет ;-)
Вложения
Тип файла: rar YAKOVLEV_BOSS_SCAN.rar (3.9 Кб, 31 просмотров)
Serge_Bliznykov вне форума Ответить с цитированием
Старый 07.10.2008, 11:10   #4
StudentBTI
 
Регистрация: 06.10.2008
Сообщений: 5
По умолчанию

Да уж,врядли он может чемто помочь мне- недалёкому в асемблере)))
StudentBTI вне форума Ответить с цитированием
Старый 07.10.2008, 11:48   #5
StudentBTI
 
Регистрация: 06.10.2008
Сообщений: 5
По умолчанию

Вот тасм и тлинк ,с которыми работаю- хз какой версии-всё компилируется...
Вложения
Тип файла: rar Архитектура ЭВМ и систем.rar (127.0 Кб, 23 просмотров)
StudentBTI вне форума Ответить с цитированием
Старый 07.10.2008, 15:33   #6
airyashov
Форумчанин
 
Регистрация: 02.04.2008
Сообщений: 358
По умолчанию

тебе уже указали ошибку
Код:
shl AL,4
- появилась в 80186, так что директиву
Код:
.186
нужно использовать для tasm
в
Код:
assume
пропущено двоеточие
неплохо пишу на ассемблере для 80х86
icq: 3(один)7748666
mail: airyashov(а)inbox.ru
airyashov вне форума Ответить с цитированием
Старый 07.10.2008, 19:55   #7
StudentBTI
 
Регистрация: 06.10.2008
Сообщений: 5
По умолчанию

В строке асьюм всё понятно- это я при копировании накосячил,
а чего еще то где заменять не пойму- обясните в какой строке....
StudentBTI вне форума Ответить с цитированием
Старый 07.10.2008, 22:01   #8
StudentBTI
 
Регистрация: 06.10.2008
Сообщений: 5
По умолчанию

Вот другой немного вариант- всё работает,
одна просьба-пояснить что какой блок выполняет...
Код:
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
StudentBTI вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Коды клавиш valerij Microsoft Office Excel 0 20.08.2008 07:49
ASCII в ANSI JRcoker Общие вопросы Delphi 5 03.08.2008 15:49
Что такое коды ASCII и зачем они?? Ларик Помощь студентам 2 27.01.2008 19:41
Коды клавиш KAMASUTR Gamedev - cоздание игр: Unity, OpenGL, DirectX 11 09.08.2007 22:25