Как тестировать АЛУ на ассемблере.

Тема в разделе "WASM.ZEN", создана пользователем Gitlerr, 22 янв 2007.

  1. Gitlerr

    Gitlerr New Member

    Публикаций:
    0
    Регистрация:
    22 янв 2007
    Сообщения:
    6
    Незнаю, взял на свою голову курсовой называется так "Разработка алгоритма и программы тестирования АЛУ микропроцессора". Препод мне сказал, что есть запасной (пожарный) вариант: тестировать АЛУ одними командами через другие (допустим для результат известен для результата умножения на 2, и этого же результата можно добится сдвигом влево на 2 разряд, и так же 2 раза сложить, вобщем все команды должны дать один результат). Но говорит: "Но тогда работа студента будет Х - вот так".
    Мне нужно несколько своих способов придумать. Препод говорит исходя из того, что я прочитал про устройство АЛУ, и говорит во 2 главе нет сигналов, которые посылаются АЛУ, и както их можно использовать.
    Вобщем не знаю, и в интернете и в парламентке был, находил по большей части аппаратное тестирование, да и вариант через другие команды.
    (Неплохо конечно может кто видел устройство АЛУ именно i8086)
     
  2. CodeTao

    CodeTao Евгений

    Публикаций:
    0
    Регистрация:
    31 окт 2006
    Сообщения:
    177
    Адрес:
    штаты
    В смысле нет сигналов посылаемых в АЛУ?, если все управление опереционного автомата( в частном случае АЛУ) построенно на сигналах.
     
  3. Gitlerr

    Gitlerr New Member

    Публикаций:
    0
    Регистрация:
    22 янв 2007
    Сообщения:
    6
    Да, и надо сигналы эти найти а у меня их нет, потому что препод говорит что надо про сигналы написать а из этого следующая глава будет строится как логический вывод о тестировании АЛУ (ну наверное спомощью этих посылаемых командами сигналов).
     
  4. CodeTao

    CodeTao Евгений

    Публикаций:
    0
    Регистрация:
    31 окт 2006
    Сообщения:
    177
    Адрес:
    штаты
    Сорри, я сначала не понял вопроса. Можно попытатся вычислить сигналы. Допустим есть АЛУ, в нем есть пара-тройка регисторов, есть набор операций выполняемых АЛУ, тогда к АЛУ подходят три шины( шина управления -сигналы, шина данных - через которую загружаются и выгружаются данные, шина флагов, сообщающая состояние АЛУ). Шину управления может быть реализоватна либо на каждый сигнал(линию) по одной опереции, либо кодированный код операции бинарно(что сыкономит линии на входе, но будет присутствовать дешефратор в АЛУ). Из соображения удобства проектирования скорее всего реализован второй вариант, но никакой в принципе разници нет - так или иниче все сводится к первому варианту. Тогда сигналов будет количество операций(+,-,>>,<<... умножение не известно реализованно как оделная опереция или реализована через сложение и сдвиг, в смысле управляющий автомат может сам посылает необходимую последовательность эллементарных опереций АЛУ чтобы получить необходимый результат) плюс загрузка и выгрузка данных. В принципе - темный лес, можно с достоверностью сказать о примитивных оперециях, таких как <<,>>, add что на них присутствует сигнальная линия, а что другие опереции не основанны на них... Опят же можно предположить что реализация всех сложных опереций реализована в самом АЛУ для удобства проектирования и ускорения его работы => тогда есть все опереции реализованные в асемблере для этого процессора. Вообще интересный парадокс получается - что бы проверить АЛУ надо сравнить два результата, а так как сравнение тоже реализовано в АЛУ, то может получиться лаже при поломке там, такая же лажа может случиться если опереция загрузки не работает коректно.
     
  5. Gitlerr

    Gitlerr New Member

    Публикаций:
    0
    Регистрация:
    22 янв 2007
    Сообщения:
    6
    Все вобщем мне нужно тестировать АЛУ через другие команды, надо написать эту прогу!
    Хочу проверить исправность таких команд:
    Mov Int Lea Cmp Jmp Push Rep Ret
    Естественно, зная результат к которому они приводят и сравнивая этот эталон с тем к чему они привели.
     
  6. Terminator

    Terminator New Member

    Публикаций:
    0
    Регистрация:
    6 янв 2007
    Сообщения:
    19
    Проверка mov:
    может командой mov загрузить одно число в два разных регистра потом вычесть один из другого сравнить командой cmp с нолём.
     
  7. Terminator

    Terminator New Member

    Публикаций:
    0
    Регистрация:
    6 янв 2007
    Сообщения:
    19
    А вот ещё прогу написал тестировать команды push и ret:
    Код (Text):
    1. .586
    2. .model flat,stdcall
    3. option casemap:none
    4.  
    5. .code
    6. fuck:
    7.     sub eax, ecx   
    8.     ret
    9. start: 
    10.     mov eax, 0BEAFBEAFh
    11.     mov ecx, eax
    12.     push    $+11
    13.     push    fuck
    14.     ret
    15.  
    16.     cmp eax, ecx
    17.     jne error
    18.     jmp good
    19.     ret
    20. error:
    21.     ret
    22. good:
    23.     ret
    24. end start
     
  8. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    Terminator
    je error