Изучение программы перевода чисел из шестнадцатеричной системы счисления в десятичную.
Цель работы:
Изучение программы и основных команд, по переводу чисел из различных систем счисления, на примере перевода шестнадцатеричных чисел в десятичные
Краткая теоретическая часть
Для перевода числа из одной системы счисления в другую необходимо производить многократное деление на число, соответствующее основанию той системы, в которую мы переводим. В нашем случае производится перевод из двоичной системы, в которой работает микроконтроллер, в десятичную, поэтому надо делить на 10.
Для анализа результатов двоичных вычислений компьютера широко используют шестнадцатеричную систему, которая более понятна человеку. Перевод из двоичной системы в шестнадцатеричную осуществляется весьма просто, т.к. одна шестнадцатеричная цифра заменяет 4 двоичных в соответствии с таблицей.
Hex | Bin |
Hex | Bin |
A | |
B | |
C | |
D | |
E | |
F |
Таким образом микроконтроллер работает в двоичной системе счисления, а результаты его работы человек рассматривает в шестнадцатеричной системе счисления. Исходные значения также обычно вводятся в шестнадцатеричной или десятичной системе счисления и переводятся в двоичную для дальнейшей обработки.
Для того чтобы зафиксировать результат в десятичной системе исчисления помимо результата деления фиксируется и остаток деления. А процесс деления продолжают до тех пор, пока последний результат деления станет меньше 10.
Искомое число в десятичной системе получают приписывая к последнему результату деления все остатки от последнего до первого.
Поскольку команда деления отсутствует, то можно воспользоваться приёмом умножения и затем деления на число кратное 2n.
Дело в том, что для того чтобы разделить на 2 регистр сдвигается на 1 разряд вправо, для того чтобы разделить на 4 регистр сдвигается на 2 разряда вправо, для того чтобы разделить на 8 регистр сдвигается на 3 разряда вправо и т.д.
Команда умножения сохраняет результат умножения в двух регистрах: старший PRODH и младший PRODL.Поэтому совсем просто произвести на 28, для этого достаточно отбросить и не рассматривать содержимое регистра PRODL. Однако на практике было установлено, что правильный результат получается при делении на 211, поэтому регистр PRODL не рассматривается, а содержимое регистра PRODH сдвигается на 3 разряда вправо, а умножать в этом случае надо на шестнадцатеричное число CD.Таким образом удаётся избавиться от команды деления на 10.