С Новым годом! Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
8 / 8 / 13
Регистрация: 03.02.2013
Сообщений: 159

[К1816ВЕ35] Составление программы y=sin(x)

17.10.2017, 02:18. Показов 2869. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
У меня возникла проблема с составлением программы на ассемблере.
Имеется <ПЗУ Команд(256 байт)> и <ПЗУ Данных(256 байт>.

листинг изначальной программы
Функция y = sin(x)
Принимает значение X, выдаёт Y.
в <ПЗУ Данных> по адресу X лежит значение Y которое и выдаётся.

Assembler
1
2
3
M1: INS A,BUS ; в А посылаем данные с порта BUS
OUTL P1,A ; на порт М1 выводим содержимое А
JMP M1 ; безусловный переход на метку М1
Возникла необходимость засунуть программу и данные в одно ПЗУ (256 байт)
Можно освободить немного места с краёв, т.к. там значения одинаковые
Всего 13 байт на программу.
Мои наброски:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
INS A,BUS
; если А предельно маленькая
if(A<09)
выдать FF
jmp m1
; если А предельно большая
if(A>7A)
A := 22
jmp m1
 
; если не сработали условия значит не предельные значения
add a,#d ; увеличить адрес на <длину программы>
out p1,a
jmp m1
; 243 байта данных
Разумеется я понимаю что это занимает куда больше чем 13 байт, но я не шарю в ассемблере
p.s. Все команды одно/двух-байтные. (ins(1), add(2), outl(1), jmp(2) грубо 6 байт занято, осталось всего 7) ...)

Что скажете?

Добавлено через 9 минут
Можно не укладываться в рамки 13 байт

Добавлено через 13 минут
в общем я нашёл область в памяти на 32 байта, которая выдаёт одно и то же значение.
тогда остаётся вопрос как писать условия, чтобы программа работала наиболее эффективно.

p.s. Я конечно понимаю что идеальным вариантом было бы сделать память 512 байт и не париться, но это слишком просто.
p.p.s. Время велосипедить/костылить на Ассемблере!!!

Добавлено через 1 минуту
Подскажите как правильно писать сравнения с числом на ассембреле для знака > и < а дальше я сам разберусь)
заранее спасибо
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.10.2017, 02:18
Ответы с готовыми решениями:

Даны натуральное п, действительное x. Вычислить: sinx + sin sin x + sin sin sin x +…+ sin sin sin … sin x
Даны натуральное п, действительное x. Вычислить: sinx + sin sin x + sin sin sin x +…+ sin sin sin … sin x.

Для заданного числа x распечатать числовую последовательность: sin(x), sin(sin(x), sin(sin(sin(x), …
var x,z:integer; y:real; begin readln(x); y:=abs(sin(x)); while y&gt;0.01 do begin y:=abs(sin(x)) ; // write(y); ...

Вычислить первое из чисел sin(x), sin(sin(x)), sin(sin(sin(x))), ... , меньшее по модулю 10^-4
1)Вычислить y - первое из чисел sinx, sin sinx,sin sin sinx,..., меньшее по модулю 10^-4 Заранее огромное спасибо!

4
 Аватар для Ethereal
6773 / 2741 / 385
Регистрация: 17.02.2013
Сообщений: 4,048
17.10.2017, 04:23
Цитата Сообщение от legozaur Посмотреть сообщение
p.p.s. Время велосипедить/костылить на Ассемблере!!!
На ассеблере ЧЕГО ?????????????????????!!!!!!!!!!!!!!!!!!!
Что за процессор такой, что в нем инструкции INS и OUTL ?
Из ассемблерных фрагментов ясно, что процессор одноадресный.
Но какой ?

Добавлено через 11 минут
З.Ы. Наличие аккамулятора a и отдельного адресного пространства для портов ввода-вывода, это Интеловская тема.
Но здесь не Intel 80x86 , не Intel 8080 , не Intel 8096 , не Intel 8051 и не Intel 8035/8048. А тогда что ?

З.Ы.
Блин вот только что увидел комплект INS+OUTL в одной из кучи PDF-ок, но тут-же запутался в какой и снова не выходит ее найти. Было это дело из числа PDF на Intel 8035/8048/8042 , вот на какой-то вариант из этих.

Добавлено через 11 минут
Короче понятно. Это семейство MCS-48. Странно только, что в некоторых PDF-ках на чипы из этого семейства есть только инструкция IN , а в некоторых и IN и INS. Что меня и запутало. Видимо инструкция INS не в каждом чипе семейства есть.

Добавлено через 28 минут
Цитата Сообщение от legozaur Посмотреть сообщение
Подскажите как правильно писать сравнения с числом на ассембреле для знака > и < а дальше я сам разберусь)
На этой архитектуре это делается так. Пусть тебе надо определить меньше число 7-и или больше или равно.
Делаешь так.
- Получаешь число в аккамулятор
- Если после сравнения с 7-ю оно тебе еше понадобится, то сохраняешь его MOV в регистре Rx
- Прибавляешь ADD к аккамулятору #100h-7 ( что есть #0F9h ) . При этом число в аккамуляторе испортилось
- Ветвишься JC или JNC . Если флаг переноса при сложении выставился, то число было больше или равно 7-и. Если не выставился, то оно было меньше 7-и.

Добавлено через 2 минуты
З.Ы. Это я описал беззнаковое сравнение. То есть числа понимаются как беззнаковые 0..255
1
8 / 8 / 13
Регистрация: 03.02.2013
Сообщений: 159
17.10.2017, 09:49  [ТС]
Однокристальная микроЭВМ К1816ВЕ35
http://portal23.sibadi.org/plu... i_MPSU.pdf

Добавлено через 37 минут
Если кому интересно, вот краткое описание первоначальной схемы:
- кристалл микроЭВМ SMC - куда без него то)
- шинные формирователи BD1/BD2 (580ва86)
BD1[однонаправленный] - передаёт данные с SMC в PROM1
BD2[двунаправленный] - передаёт данные с SMC на шину и обратно
- много буферные регистр RG1/RG2 (к1533ир22)
RG1 - принимает данные с ВНУ и выдаёт на шину
RG2 - что делает не знаю (наверное хранит адрес команды)
- память PROM1/PROM2 (556рт17)
PROM1(данные) - принимает адрес данных от BD1 и выдаёт значение на ВЫХОД
PROM2(команды) - как работает без понятия, скорее всего принимает адрес команды из SMC и передаёт следующую команду на исполнение в SMC.

Мне же предстоит оставить одну PROM в которой будет и программа и данные)

Схематично:
<-> - соединение
порт-устройство-порт

вход <-> D-RG1-Q <-> шина
шина <-> D-PROM2-A <-> Q-RG2-D <-> шина
шина <-> B-BD2-A <-> P0-SMC-P1 <-> A-BD1-B <-> A-PROM1-D <-> выход
0
 Аватар для Ethereal
6773 / 2741 / 385
Регистрация: 17.02.2013
Сообщений: 4,048
20.10.2017, 23:14
Лучший ответ Сообщение было отмечено legozaur как решение

Решение

Стер что написал. Надо подумать.

Добавлено через 22 минуты
Цитата Сообщение от legozaur Посмотреть сообщение
Мне же предстоит оставить одну PROM в которой будет и программа и данные)
Именно PROM ? Т.е. пережигаемые нихромовые гвозди из серии 556РТ это обязательное условие ?
Или все равно какая память программ - с ультрафиолетовым стиранием, с электрическим ?
Просто к этому МК без проблем цепляется ультрафиолетовая 2716, она-же КР537РФ2/КР537РФ5, и можно даже что-то более современное, электрически стираемое прямо в программаторе, например от DALLAS, только маркировку забыл. Да и в той-же серии 556 есть более емкие микросхемы
КР556РТ16—программируемое постоянное запоминающее устройство емкостью 64 кбит (8кх8) с тремя состояниями на выходе;
КР556РТ18—программируемое постоянное запоминающее устройство емкостью 16 кбит (2кх8) с тремя состояниями на выходе;
КР556РТ20 — программируемое постоянное запоминающее устройство емкостью 8 кбит (1кх8) с тремя состояниями на выходе;

В общем надо больше памяти - поставь более емкую микросхему. Страшие разряды адреса 8..10, насколько помню, идут прямо на ПЗУ без шинного формирователя.с битов порта P2 а именно с P2.0...P2.2. Так-что подцепить более емкую микросхему будет очень легко.
1
8 / 8 / 13
Регистрация: 03.02.2013
Сообщений: 159
23.10.2017, 06:40  [ТС]
Спасибо за ответы, я уже сдал курсовую, точнее не я сдал а у меня её приняли...

В общем то там на PROM был один вход с 0 по 8 биты, так что скорее всего 8-ой бит отвечал за первую/вторую страницы (по 256 байт).
Можно было программу засунуть в 1 страницу, а данные во вторую.
А я просто написал программу в которой принимал адрес, увеличивал его на длину программы, и по изменённому адресу брал информацию. (хотя тут будет косяк с последними числами)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.10.2017, 06:40
Помогаю со студенческими работами здесь

Вычислить у - первое из чисел sin х, sin sin x, sin sin sin x, ., меньшее по модулю 10-4
Вычислить у - первое из чисел sin х, sin sin x, sin sin sin x, ..., меньшее по модулю 10-4 Видел код на паскале, перенес его на Java. Не...

Вычислить y – первое из чисел sin x, sin sin x, sin sin sin x, …, меньшее по модулю 10-4
Вычислить y – первое из чисел sin x, sin sin x, sin sin sin x, …, меньшее по модулю 10-4. Добавлено через 12 минут double x; ...

Для заданных n и x посчитать выражение s=sin x+sin sin x+...+sin sin sin...sin x
Для заданных n и x посчитать выражение s=sin x+sin sin x+...+sin sin sin...sin x (n раз).

Рассчитать функцию y=sin(sin(sin(…(sin(x))))), в которой имя функции «sin» повторяется n раз.
1. Вычислить элементы последовательности, используя рекурсию. L0(x)=1, L1(x)= +1-x, kLk(x)=(-x+2k+ -1)Lk-1(x)-(k+ -1)Lk-2(x) ...

Циклом «пока» вычислить сумму ряда 1/sin 1+1/sin 1+sin 2+...+1/sin 1+...sin n
1/sin 1+1/sin 1+sin 2+...+1/sin 1+...sin n


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru