32 / 32 / 3
Регистрация: 25.05.2014
Сообщений: 1,126
1

Как вывести ASCII-код введенного с клавиатуры символа?

03.11.2014, 20:56. Показов 13975. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вот мой код, как мне сделать, чтобы когда я нажимал клавишу, выводился ее аски-символ? Я так понимаю, в AL лежит сам символ.
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
c_s segment
assume cs:c_s
begin:
mov ah,0h   ;функция установки режима
mov al,3h   ;номер режима
int 10h     ;прерывание
 
m1: 
mov ah,8h ; функция считывания символа с клавиатуры
int 21h ; считывание одного символа с клавиатуры (без эха)
cmp al,27 ;считанный символ помещается в AL
 
mov ah,9h ;функция вывода символа на экран, символ уже в AL
mov bh,0 ;номер дисплейной страницы
mov bl,15 ;цвет символа белый
mov cx,1 ;кол-во символов
int 10h
je m2 ;если была нажата клавиша "Esc", то на m2
 
jmp m1 ;иначе, снова запрашивается ввод символа (на m1)
 
m2: 
mov ah,4ch
int 21h
c_s ends
end begin
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.11.2014, 20:56
Ответы с готовыми решениями:

ввести с клавиатуры 1 символ. вывести на экран ASCII код этого символа
Пример 1 ввод W вывод 87 пример 2 ввод + вывод43 пример 3 ввод L вывод 76

Вычислить ASCII код введенного символа
Написать задачу которая выполняет следующие условия: Программа просит ввести любое число и...

Как вывести ascii код символа в мемо делфи
Мемо вроде символы принимает же, нужно вывести в мемо примерно вот такую елку, при нажатии батона....

Определить код ASCII произвольного символа из введённой с клавиатуры строки
Помогите пожалуйста написать прогу в си вот код паскаля, надо написать её же в си Program P1;...

12
Клюг
7674 / 3189 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
03.11.2014, 21:49 2
Лучший ответ Сообщение было отмечено tezaurismosis как решение

Решение

Дык,[tasm]:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    c_s segment
    assume  cs:c_s
begin:
    mov ah,0h       ;функция установки режима
    mov al,3h       ;номер режима
    int 10h     ;прерывание
 
    mov bx,0Fh      ;BH - номер дисплейной страницы, BL - цвет символа белый
m1: xor ax,ax       ; функция считывания символа с клавиатуры
    int 16h     ; считывание одного символа с клавиатуры (без эха)
    mov ah,0Eh      ;функция вывода символа на экран, символ уже в AL
    int 10h
    cmp al, 27      ;если HE была нажата клавиша "Esc", то на m1
    jne m1
 
    mov ah,4ch
    int 21h
    c_s ends
    end begin
0
32 / 32 / 3
Регистрация: 25.05.2014
Сообщений: 1,126
03.11.2014, 22:02  [ТС] 3
Я перепутал, мне нужно, чтобы выводился Аски код
0
Клюг
7674 / 3189 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
03.11.2014, 22:06 4
Десятичный или шестнадцатеричный?
0
32 / 32 / 3
Регистрация: 25.05.2014
Сообщений: 1,126
04.11.2014, 08:55  [ТС] 5
hex

Добавлено через 15 минут
а если код расширенный, то выводить строку "расширенный код"
0
Клюг
7674 / 3189 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
04.11.2014, 11:00 6
Лучший ответ Сообщение было отмечено tezaurismosis как решение

Решение

Цитата Сообщение от danek130995 Посмотреть сообщение
а если код расширенный
ЯНХНП. Это как?

Добавлено через 53 минуты
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
.model compact
.stack
.code
begin:
    mov ah,0h       ;функция установки режима
    mov al,3h       ;номер режима
    int 10h     ;прерывание
 
    mov bx,0Fh      ;BH - номер дисплейной страницы, BL - цвет символа белый
m1: xor ax,ax       ; функция считывания символа с клавиатуры
    int 16h     ; считывание одного символа с клавиатуры (без эха)
    mov ah,0Eh      ;функция вывода символа на экран, символ уже в AL
    int 10h
    cmp al, 27      ;если HE была нажата клавиша "Esc", то на m1
    pushf
    call    hexen
    mov al,20h
    int 29h
    popf
    jne m1
 
    mov ah,4ch
    int 21h
hexen:  
    aam 16
    mov dx,ax
    xchg    ah,al
    call    nibble
    mov ax,dx
nibble: and al, 0Fh
    Add Al, 90h
    Daa
    Adc Al, 40h
    Daa
    int 29h
    ret
    end begin
Преподу расскажешь сам, как это работает.
1
Ушел с форума
Автор FAQ
16276 / 7601 / 1064
Регистрация: 11.11.2010
Сообщений: 13,616
04.11.2014, 11:21 7
Цитата Сообщение от danek130995 Посмотреть сообщение
а если код расширенный
Charles Kludge,
ТС, вероятно, путает SCAN с ASCII-кодом, поэтому не удивляйся если программу потребуют переписать еще раз
0
Клюг
7674 / 3189 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
04.11.2014, 11:53 8
Цитата Сообщение от Mikl___ Посмотреть сообщение
если программу потребуют переписать еще раз
Это вряд ли. А обработчиков Int 15/AH=4Fh здесь хватает.
0
32 / 32 / 3
Регистрация: 25.05.2014
Сообщений: 1,126
04.11.2014, 12:21  [ТС] 9
Расширенные коды присвоены клавишам или комбинациям клавиш, которые не имеют представляющего их символа ASCII. Расширенные коды имеют длину 2 байта, причём первый байт всегда равен ASCII 0. Второй байт – номер расширенного кода
Например, код 0:30 представляет Alt+A. Начальный ноль позволяет программе определить, принадлежит ли данный код набору ASCII или расширенному набору.

Добавлено через 6 минут
Ваша программа опять что-то не то выводит. Вообщем, я уже сделал, как надо. требовалось сделать следующее:
если к скан коду прибавить 30h это будет аски код, но это робит только для цифр однозначных
у меня дано двузначное. Его надо разбить по разрядам, перевести к ascii, соединить в строку и вести на экран. Двузначное оно в 16 виде, собственно в таком и надо выводить.
Assembler
1
2
3
4
5
6
7
8
9
;преобразование к виде ascii символов
aam 16 ;ascii коррекция
or ax,3030h ;добавляем по 30 для перехода к символам
cmp al,39h ;если код больше 9
jbe correct
add al,7 ;корректируем до A-F
correct:
mov code,ah ;записываем в строку
mov code+1,al ;для удобного вывода
0
Ушел с форума
Автор FAQ
16276 / 7601 / 1064
Регистрация: 11.11.2010
Сообщений: 13,616
04.11.2014, 12:30 10
Charles Kludge,
я предупреждал
Цитата Сообщение от danek130995 Посмотреть сообщение
Ваша программа опять что-то не то выводит
danek130995,
Цитата Сообщение от danek130995 Посмотреть сообщение
если к скан коду прибавить 30h это будет аски код
Я такой пурги еще не слышал, автор пиши еще
0
Клюг
7674 / 3189 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
04.11.2014, 12:43 11
Цитата Сообщение от Mikl___ Посмотреть сообщение
я предупреждал
Дык, там всё элегантно укладывается в 5-10 строк, но это не моя попаболь.
Цитата Сообщение от danek130995 Посмотреть сообщение
Ваша программа опять что-то не то выводит.
Забавно. Посмотрим, что получится у тебя.
Цитата Сообщение от Mikl___ Посмотреть сообщение
автор пиши еще
Это нормально. © Елена Малышева.
1
32 / 32 / 3
Регистрация: 25.05.2014
Сообщений: 1,126
04.11.2014, 15:08  [ТС] 12
Вообщем это знакомый мне подсказывал, не я. Тогда что же имеет разницу в 30h?

Добавлено через 9 минут
Ваша программа все правильно выводит, я извиняюсь. Просто там она с эхом выводила, а я подумал что это какой то код, в котором есть букваD

Добавлено через 6 минут
а вы не могли бы пожалуйста прокомментировать ваш код? Он явно кажется легче, чем тот отрывок кода, что я скинул
0
Клюг
7674 / 3189 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
04.11.2014, 15:28 13
Цитата Сообщение от danek130995 Посмотреть сообщение
Вообщем это знакомый мне подсказывал, не я. Тогда что же имеет разницу в 30h?
Если со скан-кодом клавиши после aam 10h сделать or 3030h, то мы получим символьное представление скан-кода, но ни как не ASCII-код клавиши.
Цитата Сообщение от danek130995 Посмотреть сообщение
я извиняюсь.
Бывает.
Цитата Сообщение от danek130995 Посмотреть сообщение
а вы не могли бы пожалуйста прокомментировать ваш код?
П/п hexen выдрана отсюда, остальной код очевиден сам по себе. Читай Ральфа.
1
04.11.2014, 15:28
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.11.2014, 15:28
Помогаю со студенческими работами здесь

Вывести ascii код символа
На самом деле я немного в ступоре, но почему код выводит число 99, а не 11? #include <iostream>...

Вывести на экран пустой прямоугольник из введенного с клавиатуры символа
Нужно вывести на экран пустой прямоугольник из введенного из клавиатуры символа. Размер...

Вывести код символа ASCII минус 1
Как реализовать чтобы выводил код символа, но с -1, к примеру если я считаю a(97), а должен вывести...

Составить программу, которая для введенного с клавиатуры символа печатает его десятичный код
Составить программу, которая для введенного с клавиатуры символа печатает его десятичный код. в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru