0 / 0 / 0
Регистрация: 12.09.2020
Сообщений: 25
1

перевод цифры в ASCII код

25.11.2021, 02:04. Показов 1242. Ответов 6
Метки нет (Все метки)

Здравствуйте!
объясните, пожалуйста, почему для перевода цифры в ASCII код выполняют следующее? можно ли это чем-то заменить? (с помощью других функций)

Assembler
1
subi r16, 0xD0
в r16 лежит 0x05 например
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.11.2021, 02:04
Ответы с готовыми решениями:

Перевод db в ascii код
Вычисляю разность упакованных чисел, не пойму как работает код с 20 по 27 строчки (перевод в...

Перевод строки в ASCII код
Нужна помощь, есть массив символов, char *str = {"a", "h", "w"}; нужно перевести каждый символ в...

Перевод десятичного числа в код ASCII
С клавиатуры вводится десятичное число. Вывести его в кодах ASCII. Вот что у меня получилось: ...

Перевод Hex в ASCII десятичный код
Добрый день!! Помогите решить задачу. Необходимо перевести из шестьнадцатиричного (8CCCF0B6) в...

Перевод символов в код таблицы ascii
помогите перевести элементы символьного массива в код таблицы ascii

6
3370 / 1925 / 370
Регистрация: 09.09.2017
Сообщений: 7,869
25.11.2021, 07:56 2
Лучший ответ Сообщение было отмечено Urcaserem как решение

Решение

На самом деле для перевода используют r16 = r16+'0'. На ассемблере это лучше записать как subi r16, -'0'. Ну что поделать, в AVR вычитание константы удобнее сложения.
0
0 / 0 / 0
Регистрация: 12.09.2020
Сообщений: 25
25.11.2021, 09:17  [ТС] 3
COKPOWEHEU а почему именно этот символ - '0' ? и почему в моей записи тоже работает? что за d0 волшебная такая.
0
Эксперт .NET
7714 / 5178 / 1233
Регистрация: 25.05.2015
Сообщений: 15,748
Записей в блоге: 14
25.11.2021, 09:39 4
Лучший ответ Сообщение было отмечено Urcaserem как решение

Решение

Urcaserem,
Цифры 0...9 имеют ascii коды 0x30...0x39 или 48...57.
Цифру перевести в ascii код - надо добавить 48, или '0' чтобы за вас это число получил компилятор.

А 0xD0 в первом посте : 0xD0 + 0x30 = 0x100.

Добавлено через 3 минуты
Добавляя 0xD0 в однобайтовому значению, вы вычитаете 0x30.
И наоборот, вычитая 0xD0, вы добавляете 0x30.
Только ещё флаги меняются, типа переполнения или переноса, если они у вас есть.
1
3370 / 1925 / 370
Регистрация: 09.09.2017
Сообщений: 7,869
25.11.2021, 09:43 5
Цитата Сообщение от Urcaserem Посмотреть сообщение
COKPOWEHEU а почему именно этот символ - '0' ?
Ну вам же нужно число 0x00 перевести в ASCII-код нуля, число 0x01 в код единицы и так далее. В ASCII (как и в остальных кодировках, про которые я слышал) коды цифр идут последовательно от '0' до '9'. То есть достаточно отсчитать от символа '0' заданное число и получите его код.
Цитата Сообщение от Urcaserem Посмотреть сообщение
и почему в моей записи тоже работает? что за d0 волшебная такая.
А посчитайте чему равно -'0': код '0' равен 0x30 = 48. Поскольку нам нужно это число вычесть, возьмем его с обратным знаком: -48. В МК отрицательные числа хранятся в дополнительном коде, то есть -48 = 0xD0, вот и все.
Просто запись subi r16,-'0' или, что тоже самое, r16 = r16 - (-'0') более наглядна. Сразу видно, что оперируем мы с ASCII-кодами цифр, а не просто с магическими числами.
1
28 / 23 / 8
Регистрация: 26.06.2020
Сообщений: 92
25.11.2021, 13:06 6
Лучший ответ Сообщение было отмечено Urcaserem как решение

Решение

В системе команд AVR нет инструкции сложить однобайтный регистр с константой поэтому нельзя сделать r16 = r16 + '0'.
Код символа '0' равен 48.
0
0 / 0 / 0
Регистрация: 12.09.2020
Сообщений: 25
25.11.2021, 14:53  [ТС] 7
COKPOWEHEU спасибо большое, Вы глаза мне открыли))
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.11.2021, 14:53

Перевод строки в двоичный код. Кодировка ASCII
Вводится строка, выводится двоичный код. Вход: "pascal ." Выход:...

Перевод массива данных в десятичный код ASCII(Delphi)
Долго бился с этим - ничего путнего не получилось. Итак, имеем что-то вроде: ... var text: array...

Массив. Перевод в код ASCII. Не работает как надо
Даны числа в массиве,их надо преобразовать в ASCII код и записать в память. Преобразование делается...

Перевод положительного 6-разрядного восьмеричного ASCII-числа из буфера в 16-разрядный двоичный код в АХ (ассемблер)
Здравствуйте. Помогите пожалуйста написать программу: Перевести положительное 6-разрядное...

Перевод букв в цифры.(Поправить код)
Само задание выглядит так: В заданной строке заменить все прописные латинские буквы десятичными...

Перевод буквы char в цифры (код)
Есть алфавит забитый и распределенный посимвольно. Нужно в этот же массив занести цифру...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.