Навеяно историей об одном байте…
А способны ли современные программисты на создание кода как искусства? Попробуйте решить эти задачки :)
Ну например, попробуйте решить такие задачи, как писалось — про однокристалки
Итак, пусть есть 2 однобайтовых регистра A и B, которые образуют двухбайтный AB, стек, условный переход в длинее +- 127 команд от текущей точки, безусловный — 255. 128 команд в оперативной памяти, 8K банк памяти.
Команды работы с регистрами — битовые сдвиги, сложение
Условный переход может быть если стоит флаг выхода за границу регистра?
Что такое выход за границу? Это если к 200 прибавить 100. Будет выход за границу разрядности байта. Это тот, который 8 бит
Допустим первая задача. Реализовать вычитание. У нас есть только сложение.
Сделать A-B, резултьат поместить в A.
Решим задачу для значений до 127. Старший байт будет у нас знаком
Соответственно, выставив старший бит для A, мы получим -A
(-A)+B=A-B
Задача решена
А сможете сделать решение для 255? А для 0xFFFFh?
Предположим с первой задачей справились.
А как поменять между собой значения A и B?
А сможете сделать умножение? А деление? Для облегчения работы — беззнаковое + добавлено еще пара регистров — DE
А знаете как делать процесс ветвления с возвратом в одну точку с использованием стека?
А как реализовать cos() и sin()? :)
А способны ли современные программисты на создание кода как искусства? Попробуйте решить эти задачки :)
Ну например, попробуйте решить такие задачи, как писалось — про однокристалки
Итак, пусть есть 2 однобайтовых регистра A и B, которые образуют двухбайтный AB, стек, условный переход в длинее +- 127 команд от текущей точки, безусловный — 255. 128 команд в оперативной памяти, 8K банк памяти.
Команды работы с регистрами — битовые сдвиги, сложение
Условный переход может быть если стоит флаг выхода за границу регистра?
Что такое выход за границу? Это если к 200 прибавить 100. Будет выход за границу разрядности байта. Это тот, который 8 бит
Допустим первая задача. Реализовать вычитание. У нас есть только сложение.
Сделать A-B, резултьат поместить в A.
Решим задачу для значений до 127. Старший байт будет у нас знаком
Соответственно, выставив старший бит для A, мы получим -A
(-A)+B=A-B
Задача решена
А сможете сделать решение для 255? А для 0xFFFFh?
Предположим с первой задачей справились.
А как поменять между собой значения A и B?
А сможете сделать умножение? А деление? Для облегчения работы — беззнаковое + добавлено еще пара регистров — DE
А знаете как делать процесс ветвления с возвратом в одну точку с использованием стека?
А как реализовать cos() и sin()? :)