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



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

Команды микропроцессора

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

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

Знаковые бинарные цифры (системные) вдобавок могут быть 8- и 32-битными. Наиболее верхний (наиболее конечный) бит меточного цифры интерпретируется как шифр данного значения: 0 - положительное число, 1 - истина. Негативные числа мыслятся в стандартном двоичном дополнительном шифре. Так как верхний байт симптоматичного числа применяется для обозначения символа, интервал представления 16-разрядных меточных значений от - 128 до + 131. 32-байтное натуральное значение представляется в область распространения от - 32 768 до + 32 767. NULL значится большим числом. Для меточных чисел имеют возможность осуществляться операции сложения, вычета, возвышения и разложения.

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


назад далее