Незнаю, взял на свою голову курсовой называется так "Разработка алгоритма и программы тестирования АЛУ микропроцессора". Препод мне сказал, что есть запасной (пожарный) вариант: тестировать АЛУ одними командами через другие (допустим для результат известен для результата умножения на 2, и этого же результата можно добится сдвигом влево на 2 разряд, и так же 2 раза сложить, вобщем все команды должны дать один результат). Но говорит: "Но тогда работа студента будет Х - вот так". Мне нужно несколько своих способов придумать. Препод говорит исходя из того, что я прочитал про устройство АЛУ, и говорит во 2 главе нет сигналов, которые посылаются АЛУ, и както их можно использовать. Вобщем не знаю, и в интернете и в парламентке был, находил по большей части аппаратное тестирование, да и вариант через другие команды. (Неплохо конечно может кто видел устройство АЛУ именно i8086)
В смысле нет сигналов посылаемых в АЛУ?, если все управление опереционного автомата( в частном случае АЛУ) построенно на сигналах.
Да, и надо сигналы эти найти а у меня их нет, потому что препод говорит что надо про сигналы написать а из этого следующая глава будет строится как логический вывод о тестировании АЛУ (ну наверное спомощью этих посылаемых командами сигналов).
Сорри, я сначала не понял вопроса. Можно попытатся вычислить сигналы. Допустим есть АЛУ, в нем есть пара-тройка регисторов, есть набор операций выполняемых АЛУ, тогда к АЛУ подходят три шины( шина управления -сигналы, шина данных - через которую загружаются и выгружаются данные, шина флагов, сообщающая состояние АЛУ). Шину управления может быть реализоватна либо на каждый сигнал(линию) по одной опереции, либо кодированный код операции бинарно(что сыкономит линии на входе, но будет присутствовать дешефратор в АЛУ). Из соображения удобства проектирования скорее всего реализован второй вариант, но никакой в принципе разници нет - так или иниче все сводится к первому варианту. Тогда сигналов будет количество операций(+,-,>>,<<... умножение не известно реализованно как оделная опереция или реализована через сложение и сдвиг, в смысле управляющий автомат может сам посылает необходимую последовательность эллементарных опереций АЛУ чтобы получить необходимый результат) плюс загрузка и выгрузка данных. В принципе - темный лес, можно с достоверностью сказать о примитивных оперециях, таких как <<,>>, add что на них присутствует сигнальная линия, а что другие опереции не основанны на них... Опят же можно предположить что реализация всех сложных опереций реализована в самом АЛУ для удобства проектирования и ускорения его работы => тогда есть все опереции реализованные в асемблере для этого процессора. Вообще интересный парадокс получается - что бы проверить АЛУ надо сравнить два результата, а так как сравнение тоже реализовано в АЛУ, то может получиться лаже при поломке там, такая же лажа может случиться если опереция загрузки не работает коректно.
Все вобщем мне нужно тестировать АЛУ через другие команды, надо написать эту прогу! Хочу проверить исправность таких команд: Mov Int Lea Cmp Jmp Push Rep Ret Естественно, зная результат к которому они приводят и сравнивая этот эталон с тем к чему они привели.
Проверка mov: может командой mov загрузить одно число в два разных регистра потом вычесть один из другого сравнить командой cmp с нолём.
А вот ещё прогу написал тестировать команды push и ret: Код (Text): .586 .model flat,stdcall option casemap:none .code fuck: sub eax, ecx ret start: mov eax, 0BEAFBEAFh mov ecx, eax push $+11 push fuck ret cmp eax, ecx jne error jmp good ret error: ret good: ret end start