ассемблер: char to int

Здесь принимаются все самые невообразимые вопросы... Главное - не стесняйтесь. Поверьте, у нас поначалу вопросы были еще глупее :)
Ответить
Первый раз сказал Мяу!
Аватара пользователя
Сообщения: 27
Зарегистрирован: Вс май 29, 2011 16:04:41

Сообщение ascentman »

Добрый вечер форумчане. Помогите реализовать в ассемблере для МК51 или просто алгоритм напомнить преобразования символьного типа в тип integer.
Дело в том что я делаю программку сравнение двух чисел, ввожу их через терминал используя UART. Получив числа нужно их в тип int и сравнить.

Алгоритм примерно такой: в 30h-39h сохраняется 0-9; если введено 1, то я получаю код 0 + смещение. Но дальше-то туго: надо какую двохбайтну переменную или как?
Реклама
Модератор
Аватара пользователя
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Сообщение ploop »

Не понял, в чём проблема. Нужно вводить только числа? Насколько большие?
Реклама
Первый раз сказал Мяу!
Аватара пользователя
Сообщения: 27
Зарегистрирован: Вс май 29, 2011 16:04:41

Сообщение ascentman »

та от 0 до 9
Опытный кот
Аватара пользователя
Сообщения: 848
Зарегистрирован: Ср мар 02, 2011 07:47:39
Откуда: Уфа

Сообщение Psych »

А разве в ассемблере есть тип переменных? У регистров же фиксированная длина.
Реклама
Эиком - электронные компоненты и радиодетали
Модератор
Аватара пользователя
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Сообщение ploop »

Что тянуть-то из всех?
Цифра от 0 до 9 легко приводится к числовому виду вычитанием 30h из кода символа.
А вот число нужно потом из этих цифр высчитывать. Или число не нужно?
Реклама
Первый раз сказал Мяу!
Аватара пользователя
Сообщения: 27
Зарегистрирован: Вс май 29, 2011 16:04:41

Сообщение ascentman »

ploop писал(а): Цифра от 0 до 9 легко приводится к числовому виду вычитанием 30h из кода символа.
Может я немного не так сформулировал вопрос:

Вот маю я полученную цифру с UART в типе char, имею вторую такую цифру. Чтобы их сравнить нужно преобразовать в тип int для выполнения действий и снова вывести в терминале эти цифры, и вывести какое из них больше
Реклама
Первый раз сказал Мяу!
Аватара пользователя
Сообщения: 27
Зарегистрирован: Вс май 29, 2011 16:04:41

Сообщение ascentman »

Psych писал(а):А разве в ассемблере есть тип переменных? У регистров же фиксированная длина.
я получаю '1 ', '2' ... после вызова UART_read. Чтобы ТЕХНОКОНТИНЕНТ числа, нужно выделить двохбайтну переменную (столько имеет тип int) ... и так сказать создать тип int загрузив их в аккумулятор
Модератор
Аватара пользователя
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Сообщение ploop »

ничё не понял. Я пас...
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18783
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

учиться надо было лучше, тогда, может быть, хоть вопрос бы смогли сформулировать правильно.

если вы принимаете символы-цифры, то их можно сравнивать непосредственно, без всяких преобразований: '2' > '1' точно так же, как 2 > 1
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Ответить

Вернуться в «Теория»