Одним из методов вычисления логических функций в микропроцессорах на языках ассемблера является — метод таблиц истинности. При этом в памяти МП размещается полная таблица истинности данной логической функции, после чего зная входные данные можно вычислить результат.
В микропроцессорах x86 делается это так.
В памяти размещаем данные.
Я использую обычный виндовский дебагер (Пуск — Выполнить — debug).
Вводим данные с 100 ячейки текущего сегмента:
a 100
Для ввода таблици истинности используется директива db :
db 0 0 1 0 1 1 1 1 0 0 1 0 0 0 1 0
Таким образом мы перечислили результаты вычисления функции 4ех переменных.
Обратите внимание на то, что выбрать место размещения таблици вым необходимо при помощи директивы ORG.
У меня вот так:
org 200 ; будем хранить таблицу истинности в ячейках начиная с 200 db 0 0 1 0 1 1 1 1 0 0 1 0 0 0 1 0 ; вводим таблицу истинности
org 100 ; продолжаем вводить программу с 100 ячейки памяти
Теперь таблица расположена в памяти дело за вычислением.
Используем косвенную адресацию при помощи регистар BX.
mov bx, 200 ; у меня таблица начинается с 200 ячейки mov al, 2 ; вычисляем набор 0010 add bl,al ; добавляем к адресу начала таблици смещение mov al,[bx] ; заносим значение логической функции в ax hlt ; конец программы
Теперь можно запустить программу. В дебагере это команда:
g =100 10b
В регистре AX видим еденицу, всё вычислено верно.