A7B = 1010 0111 1011
A 7 B
Перевод в десятичную систему счисления. Так как перевести числа из двоичной системы в шестнадцатеричную и обратно нетрудно, то для простоты выкладок рассмотрим перевод чисел из шестнадцатеричной системы и обратно.
В качестве примера перевода числа из шестнадцатеричной системы в десятичную систему выберем число 9A5F:
9A5F16 = (9∙163 + 10∙162 + 5∙161 + 15∙160)=(((9∙16+10)∙16+5)∙16+15) = 3951910
9 A 5 F
Здесь путем группировки членов вычисление полиномов представлено в форме так называемой схемы Горнера, обеспечивающей минимальное число выполняемых операций умножения.
Покажем действия по переводу чисел из десятичной системы счисления в шестнадцатеричную на примере преобразования десятичного числа 3951910 в шестнадцатеричную систему счисления
39519 |16
39504 2469 |16
15 2464 154 . |16
F 5 144 9
10
A
Отсюда 3951910 = 9A5F16. Таким образом, последовательно деля на 16 целую часть десятичного числа и образующиеся частные, получаем в последнем частном и остатках цифры всех разрядов шестнадцатеричного представления числа.
Пример 2.5
. Преобразование кодов из одной системы счисления в другую. Преобразование кода из одной позиционной системы счисления в другую осуществляется делением исходного числа на основание новой системы счисления. При этом деление должно выполняться по правилам исходной системы счисления. Например, для преобразования двоичного числа в двоично-десятичное исходное двоичное число должно быть поделено на 10 (10102). Деление должно осуществляться по правилам двоичной арифметики.
Пусть требуется выполнить преобразование 8-битного двоичного числа в двоично-десятичное. Исходный двоичный код хранится в аккумуляторе. Результат преобразования состоит из 12 бит: младшие 4 бита – единицы, представляют собой остаток от деления исходного числа на 10; следующие 4 бита – десятки, представляют собой остаток от деления на 10 полученного частного; старшие 4 бита – сотни, являются частным от второго деления:
BBD: CALL DIV10 ; деление исходного кода на 10
MOV R7,A ; сохранение остатка в R7
MOV A,R1 ; загрузка в аккумулятор частного
CALL DIV10 ; деление частного на 10
SWAP A ; передача остатка в старшую тетраду A
ORL A,R7 ; передача R7 в младшую тетраду A
JMP EXIT ; выход из процедуры
; подпрограмма деления на 10
; исходный двоичный код в аккумуляторе
; результат: в R1 – частное, в аккумуляторе – остаток
DIV10: MOV R1,#0 ; сброс R1
SUB10: ADD A,#(NOT(10)+1) ; вычитание 10 из делимого
INC R1 ; инкремент частного
JC SUB10 ; цикл, если остаток >= 0
DEC R1 ; восстановление частного
ADD A,#10 ; восстановление остатка
RET ; возврат
EXIT: … ;
В результате выполнения процедуры в младшей тетраде R1 хранятся сотни, в аккумуляторе – десятки и единицы двоично-десятичного эквивалента исходного двоичного числа.
3.4.3. Изучение аппаратных и программных средств ввода/вывода информации микроконтроллера ВЕ48
1) Изучить организацию каналов ввода/вывода информации микроконтроллера ВЕ48, интерфейс расширения ввода/вывода;
2) Рассмотреть команды, которые обслуживают пространство ввода/вывода;
3) Ознакомиться с приведенными ниже примерами программ на языке ассемблера;
4) Произвести ввод, отладку и трансляцию в объектный код этих программ;
5) Выполнить программы по шагам с просмотром результатов выполнения в регистрах и оперативной памяти.
Пример 3.1
. Ввести байт из порта 1 и передать его в порт 2:
TRAN: MOV A,#0FF ; настройка порта 1 на ввод
OUTL P1,A ;
IN A,P1 ; ввод байта из порта 1
OUTL P2,A ; вывод байта в порт 2
Пример 3.2 Перейти на страницу: 1 2 3 4 5 6 7
Другое по теме:
Расчет водопотребления на нужды поселка и предприятия Определение водопотребителей Объединенный хозяйственно-питьевой и противопожарный водопровод должен обеспечивать расход воды на хозяйственно-питьевые нужды поселка, хозяйственно-питьевые нужды предприятия, хозяйственно-бытовые нужды обществе ...