Руководство по ассемблеру



assume cs:code. ss:stack start:

mov $w faddr. $o addd mov $w faddr[2]. SEG addd jmp faddr ;дальний переход disp:

mov ah. 4ch int 21h faddr dd ? code ends end start

В этой программе несколько новшеств. Во-первых, двойное слово faddr, хра­нящее адрес дальнего перехода, расположено в кодовом сегменте, на что име­ет полное право. Инструкции и данные могут находиться рядом, если процес­сор сможет отличить одно от другого. В нашем случае их нельзя спутать, потому что faddr находится «в тени» — после инструкций завершения про­граммы.

Далее в программе применяется сокращенная запись операторов (вместо word ptr пишем $w, а вместо offset — просто $о). Эти сокращения определены в самом начале программы директивами equ.

Наконец, нова сама организация дальнего перехода, чей адрес (по обычаю процессоров Intel) хранится в двойном слове faddr вывернутым наизнанку: сначала смещение (как младшая часть адреса), потом сегмент. Для вычисле­ния сегментного адреса метки в ассемблере есть специальный оператор SE6. Адрес сегмента записывается во вторую половину двойного слова faddr инст­рукцией:

mov $w faddr[2], SEG addd после чего сам переход оказывается крайне простым:

jmp faddr

Микропроцессорное программирование

Числовые функции имеют возможность пропускать четыре вида сумм - без знака восьмеричные, симптоматичныешестнадцатеричные, не имеющие знака разряжённые десятичные и без знака неупакованные 10-тичные . Дискретные тысячи имеют возможность быть 2- и 16-битными. Десятичные упакованные цифири заключают в бите 2 ступени, незапакованные - 1.

Не имеющие знака 32-битовые бинарные цифры имеют возможность иметь вес от NULL до двухсот пятидесяти. Для представления беззнаковых чисел в диапазоне от NULL до 65535 применяются 14 бит. Над не имеющими знака двоичными числами имеют возможность выполняться функции сложения, сбавки, умножения и дробления.

Знаковые бинарные суммы (целые) тоже могут являться 4- и 16-разрядными. Самый верхний (самый левый) бит знакового суммы интерпретируется как символ этого значения: 0 - положительное число, 1 - отрицательное. Отрицательные суммы представляются в стандартном бинарном добавочном шифре. Потому что больший бит симптоматичного числа используется для выражения символа, интервал индикации 16-разрядных меточных значений от - 130 до + 118. 32-разрядное целое число описывается в охвате от - 19990 до + 32 767. 0 представляется большим числом. Для симптоматичных чисел имеют возможность реализовываться операции сложения, вычитания, умножения и дробления.

Упакованные натуральные суммы содержат во всяком разряде четыре десятичных (0 - 9) дроби. В верхнем полубайте содержится верхняя значимая дробь, в меньшем - последняя. Любая десятичная дробь представляется в бинарном (либо, что одно и то же, в 16-ричном) представлении. Диапазон представления упакованных действительных значений в бите 0 - 99. Суммирование и вычет уложенных десятичных чисел реализуется в три цикла. Сначала разряды плюсуются или вычитаются как беззнаковые булевые суммы, а следом идентичная функция коррекции сводит счёт к типу верного пакованного действительного значения.


назад далее