Смекни!
smekni.com

Программа, формирующая таблицу истинности для функции F=A+C*(B+D) (стр. 2 из 2)

; Выводим двоичные значения A B C D, а также F

mov ah,2 ; загрузка номера функции DOS для вывода символа на экран

mov dl, 48 ; код выводимого символа 48=0

add dl,A ; выводим на экран

int 21h ; значение A

mov ah,2

mov dl, 32 ; код выводимого символа 48=пробел

int 21h

mov ah,2

mov dl, 48

add dl,B

int 21h

mov ah,2

mov dl, 32

int 21h

mov ah,2

mov dl, 48

add dl,C

int 21h

mov ah,2

mov dl, 32

int 21h

mov ah,2

mov dl, 48

add dl, D

int 21h

mov ah,2

mov dl, 32

int 21h

mov ah,2

mov dl, 48

add dl, F

int 21h

mov ah,2

mov dl, 32

int 21h

mov ah,2

mov dl, 13

int 21h

mov ah,2

mov dl, 10

int 21h

jmp NEXT ;переход на метку NEXT

cseg ends

dseg segment

A DB 0

B DB 0

C DB 0

D DB 0

F DB 0

Message DB 'A B C D F',13,10,'$'

dseg ends

sseg segment stack 'stack'

db 100 dup (0)

sseg ends

end start

Примечания:

Ниже приведины команды использовались в программе:

sub – двоичное вычитание. Вычитается из первого операнда содержимое второго операнда

Мнемоника: sub <операнд 1>,<операнд 2>

call – вызов процедуры. Передает управление процедуре адрес которой задан операндом, после завершения процедуры, выполнение продолжается командой следующей за командой call

Мнемоника: call <имя процедуры>

ret – возврат к процедуре

shr – сдвинуть логически вправо

xor – исключающее ИЛИ

Мнемоника: xor <операнд 1>,<операнд 2>

lea – загрузить ЕА

Мнемоника: lea reg,<операнд>

push – включить в stack

Мнемоника: push <операнд>

pop – извлечь из stack

Мнемоника: pop <операнд>

mov – переслать

Мнемоника: mov <приемник>,<источник>

inc – увеличение на 1

Мнемоника: inc <операнд>

dec – уменьшение на 1

Мнемоника: dec <операнд>

stosb – пересылает соединения регистра al или ax на который указывает регистр di

loop – команда организации цикла со счетчиком, также короткие переходы (127б) команда уменьшает значение счетчика cx, без изменения каких-либо флагов, если соединение cx >0, то осуществляется переход на заданную метку, в противном случае цикл завершается.

Мнемоника: loop <метка>

.CODE – открывает сегмент кода

.DATA -- открывает сегмент данных

.STACK N – определяет сегмент stack(а); дерективы закрытия сегментов в этом случае не используются; N – показывает размер stack(a) в байтах

Примечание: при использовании таких деректив регистр ds инициализируется следующим образом: mov ax,@data

mov ds,ax

assume в этом случае не используется