Условное ассемблирование

Ассемблер МП Intel 8080 позволяет предусмотреть условное ассемблирование с помощью псевдоопераций IF и ENDIF; в МП Motorola 6800 такая возможность не предусмотрена В псевдооперации IF выражение записывается в соответствии с изложенными правилами. Евли значение соответствующего выражения на этапе ассемблирования оказывается не равным нулю, то ассемблер включит в результирующую программу операторы, заключенные между псевдоопераниями IF и END1F Если выражение оказывается равным нулю, то соответствующие операторы в программу не включаются Приведем несколько характерных примеров. .Пример 1. Обратный или дополнительный код

СМА

IF TWOS

INR А ; Прибавить 1 для получения дополнительного кода ENDIF

Если переменная TWOS = ОД то ассемблер включит в программу только команду СМА, которая формирует обратный код Если TWO^-O, ассемблер включит также команду INR А, выполнение которой превратит обратный код в дополнительный.С помощью одной и той же ассемблерной программы мбжно выполнить арифметические операции в обратном или дополнительном коде. Влбор режима осуществляется с помощью переменной TWOS, значение'которой устанавливается перед ассемблированием.

Пример 2. 8- или 16-битное сложение.

IF L8; 8-битное сложение

LDA ОР1

MOV В,А

LDA ОР2

ADD В

STA R£S

ENDIF

IF L16 ; 16 битное-сложеаие

LHLD ОР1

XCHG

LHLD OP2

DAD

SHLD RES ENDIF

Данная программа позволяет выбрать 8- или 16-битный вариант сложения в зависимости от значений переменных L8 и L16. Если L8 Ф 0 и L16 = 0, ассемблер странслирует команды, реализующие 8-битное сложение. Если L8 = 0 и L16 Ф 0, будут странслированы команды, обеспечивающие сложение 16-битных чисел.

Программистам не рекомендуется злоупотреблять средствами условного ассемблирования. Их использование делает программы более запутанными и усложняет их отладку. Лучше написать две отдельные программы для двух различных случаев, чем прибегать к сложным средствам условного ассемблирования. Средства условного ассемблирования целесообразно использовать для облегчения отладки в первоначальных вариантах программ.