Разделы:


Best links:

Директивы языка ассемблера asm-86

mov_string     MACRO     dest,src,len

                        mov  cx,len

                        lea     si,src

                  lea     di,dest

rep    movsb       

                        ENDM

Это макроопределение позволит использовать в программе новую «команду» с мнемокодом mov_string и тремя операндами, которые при вызове станут фактическими параметрами. Так вызов макроопределения:

                        mov_string            addrD,addrS,100

осуществит пересылку 100 байтов из адреса addrS по адресу addrD.

Наряду с мнемокодами команд процессора ЦП язык ASM-86 допускает использование мнемокодов команд арифметического процессора. Особенность программы-ассемблера при обработке команд АП заключается в том, что она автоматически вводит в результирующую программу код команды WAIT перед командами АП, которая необходима для синхронизации работы процессоров. Это освобождает составителя программ от необходимости записывать мнемокод WAIT перед каждой командой для АП.

Как было показано, все мнемокоды команд АП начинаются с буквы F, что облегчает отличать их от мнемокодов команд ЦП. Для команд сопроцессора FNCLEX, FNDISI, ENENI, FNINIT, FNOP, FNSAVE, FNSTCW, FNSTSW не требуется наличия перед ними команды WAIT, поэтому мнемокод этих команд снабжается дополнительной буквой N, что также облегчает работу программы-ассемблера.

В качестве примера рассмотрим фрагмент программы на ассемблере, использующий мнемокоды обоих процессоров:

fcomp

fnstsw flags1

mov ah,flags1

sahf

jz ...

Этот фрагмент показывает, как реализуется условный переход по результатам сравнения чисел с плавающей запятой. Поскольку в системе команд АП отсутствуют команды условных переходов, то используется следующий прием. После выполнения команды сравнения (fcomp) результаты сравнения (старший байт регистра состояния) запоминаются в памяти по адресу flags1. Затем они пересылаются в старший байт аккумулятора ah центрального процессора и запоминаются в регистре флагов F по команде sahf. Разряды С0,СЗ регистра состояния АП соответствуют разрядам регистра F, в которых размещены значения флагов CF и ZF, поэтому можно воспользоваться любой из команд условных переходов.

предыдущаяследующая