КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Ассемблер
Косвенный доступ к данным по адресу через адрес-указатель
#include <reg51.h> unsigned char x,i; //переменная в Data char code * y="125"; //указатель на текстовую константу, имя переменной обозначает адрес char xdata * yy; //указатель на текстовую переменную
main() { for (i=0; i<3; i++) x=x*10+(*y++&0x0f);
for(i=7;i>=0; i--) { *yy++= (x&0x01)? ‘1’: ‘0’; x=x>>1; } while(1); //динамический останов }
Dseg at 8;сегмент данных в Data X: ds 1 Xseg at 0;сегмент данных в Xdata Yy: ds 8;char xdata yy[8]; //результат преобразования во внешней памяти Cseg at 0;начало программного сегмента, после сброса или включения питания Jmp start;подразумевается команда старта на начало программы Y: db “123”;текстовая константа в ASCII-коде ;for (i=0; i<3; i++) - комментарии из программы на С start: clr a;подготовка параметров цикла Mov x,a Mov r0,#3 Mov DPL,#yy;ограничимся младшим байтом адреса – старший DPH=0
Cikl:; x=x*10+(y[i]&0x0f); Mov a,x Mov b.#10 Mul ab Mov b,a Clr a movc a,@a+dptr Inc dptr Anl a,#0x0f Add a,b Mov x,a Djnz r0,cikl
Mov r0,#8 Cikl2:;yy[i]= (x&0x01)? ‘1’: ‘0’; Mov dpl,r0 Mov a,x Anl a,#01 Orl a,#0x30 Movx @dptr,a ;x>>1 Mov a,x; x=x>>1; Rr a Mov x,a Djnz r0,cikl2 Nop end Задания
1. Упорядочить текст лексикографически, в порядке возрастания ASCII- кода “This programmator” à “aaghimmootTrrs”
2. Вставить пробелы после символа “r” “This programmator” à ”r” à “This pr ogr ammator”
3. Заменить прописную букву “x” на заглавную в тексте “This programmator” à”a” à “This progrAmmAtor”
4. Символьное (в ASCII) преобразование двоичного числа в шестнадцатеричное “01001001110” à “0x24e”
5. Символьное (в ASCII) преобразование шестнадцатеричного числа в двоичное “01001001110” ß “0x24e”
6. Символьное двоичное число преобразовать в символьное десятичное. “123” ß (“01110101“)2
7.Символьное (в ASCII) преобразование десятичного числа в шестнадцатеричное “ 590 ” à “0x24e”
8.Символьное (в ASCII) преобразование шестнадцатеричного числа в десятичное “590” ß “0x24e”
9.Преобразовать число с естественной запятой в полулогарифмическую форму в десятичной системе с учетом знака порядка и знака мантиссы “-25,023” à “e+2 - 0.25023”
10. Десятичное сложение (вычитание) в неупакованных форматах, положение запятой фиксировано “256,54” +” 75, 56” =” 332,10”
11. Преобразовать символьный двоичный код в символьный Манчестерский код и восстановить исходный двоичный “01011010” à 00 11 00 11 11 00 11 00 (+) 10 10 10 10 10 10 10 10 синхросигнал à “10 01 10 01 01 10 01 10 “ Манчестерский код Восстановление символьного двоичного кода из Манчестерского
“1001100101100110” Манчестерский код à “ 0 1 0 1 1 0 1 0” двоичный код
12. Сформировать сдачу минимальным количеством монет достоинством 50, 10, 5, 1 копеек и проверить обратным преобразованием “132” à “2,3,0, 2”
13. Шифрование и дешифрование Гронсфельда таблица символов {a,b,c,d,e,f, …} нумерация 0 1 2 3 4 5 6 ключ {3,1,2,0,6, …} Пример “cadda” ßà “ cdaad”
14. Преобразование двоичной импульсной последовательности в 3-значный код, перепад 0/1 обозначается 1, 1/0 обозначается 2, отсутствие перепада – 0 и обратно “0 1 0 0 0 1 0 1 1“ ßà “2 1 0 0 2 1 2 0”
15. Байты данных разбиваются на 2 тетрады, каждая тетрада заменяется HEX-цифрой и преобразуется в ASCII-код, подсчет контрольной суммы байтов по модулю 0x100 в конце строки HEX-кода A0, B1, 0C, 1D à HEX-код строки “ A 0 B 1 0 C 1 D 8 A”
16.Обратное преобразование HEX-кода в строку байтов данных и проверить контрольную сумму - последний байт в строке A0, B1, 0C, 1D à “ A 0 B 1 0 C 1 D 8 A” HEX-код строки
17. Регистр граничного сканирования n-контактов в JTAG-интерфейсе имеет длину 3n бит. Выбрать 3-хбитную j-ую ячейку в регистре. Нумерация битов регистра справа налево 3n,…2,1,0 “1 0 1 1 0 0 1 1 0 1 0 1 1 1 1 0 1 0 1” à “110” o c i i c o
Дата добавления: 2014-12-27; Просмотров: 630; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |