Загрузка...

Выбор основания по умолчанию


Чаще всего вы, вероятно, захотите использовать по умолчанию десятичные значения, просто потому, что это наиболее знакомое представление. Однако, иногда удобно использовать числа без суф-фиксов, в которых по умолчанию используется другое основание. В этом случае необходима директива .RADIX.

Директива .RADIX выбирает основание, которое будет по умол-чанию использоваться для спецификации чисел. Например, директива:

.RADIX 16

в качестве используемого по умолчанию выбирает основание 16 (шестнадцатиричное). Действие директивы .RADIX показано в следую-щем фрагменте программы:

RADIX 16 ; выбрать в качестве используемо-

; го по умолчанию основание 16

mov ax,100 ; =100h или 256 в десятичном

; виде

RADIX 10 ; выбрать в качестве используемо-

; го по умолчанию основание 10

sub ax,100 ; -100 в десятичном виде,

; результат равен 256-100=156

; в десятичном виде

RADIX 2 ; выбрать по умолчанию основание

; 2 (двоичное)

add ax,100 ; +100b (4 в десятичном виде)

; результат = 156+4=160 (дес.)

С помощью директивы .RADIX можно выбрать основание 2, 8, 10 или 16. Операнд директивы .RADIX всегда указывается в десятичном виде, независимо от того, какое основание выбрано по умолчанию. Другими словами одна директива .RADIX не влияет на операнд следу-ющей директивы .RADIX.

При использовании директивы .RADIX может возникнуть потенци-альная проблема. Независимо от выбранного по умолчанию основания системы счисления подразумевается, что значения, задаваемые в ди-рективах DD, DQ или DT — это десятичные значения (если не исполь-зуется суффикс). Это значит, что в директиве:

.RADIX 16

DD 1E7

1E будет равно 1 * 10 в седьмой степени, а не 1Eh. Фактически, на практике всегда лучше указывать во всех шестнадцатиричных значе-ниях суффикс h (даже после директивы .RADIX 16). Почему? Вспомни-те о том, что b и d допускается использовать в качестве суффик-сов, что определяет соответственно двоичное и шестнадцатиричное представление. К сожалению, b и d могут также использоваться в качестве шестнадцатиричных цифр. Если действует директива .RADIX 16, как Турбо Ассемблер будет воспринимать числа 129D и 101B?

В этом случае Турбо Ассемблер всегда обращает внимание на допустимые суффиксы, поэтому 129D — это 129 в десятичном виде, а 101B — это 101 в двоичном виде (или 5 в десятичном). Это означа-ет, что даже при действии директивы .RADIX 16 все шестнадцатирич-ные числа, заканчивающиеся на b и d, должны иметь суффикс h. Учи-тывая это, проще всего указывать этот суффикс во всех шестнадцатиричных числах. Отсюда ясно, что пользы от директивы .RADIX 16 мало.

Загрузка...