MOV SS,CS б) Сегментный регистр DS используется при сложении.
в) Непосредственный операнд переда ется в регистр ES
г) Оба операнда являются сегментными регистрами
Ниже приведена правильная запись предыдущего примера
ADD AX,DX
PUSH ВХ
MOV СХ,100
ADD DX,CX
MOV CX, 200
MOV ES,CX
MOV CX,CS
MOV SS,CX
Выход из диапазона адресов
Все команды условного перехода используют режим относительной адресации с 8-битовым смещением. Если относительный адрес символа, используемого в качестве операнда-адреса перехода, выходит за диапазон + 127 байт —128 байт от конца команды условного перехода, выдается сообщение об ошибке
AND AL,7FH Неверные записи
JE NEXT_PROC
END_PROC: RET Более 127 байт между
DATA DW 300 DUP(?) символическим адресом
NEXT_PROC: NEXT_PROC и
END_PROC
CLC
Ниже приведена правильная запись предыдущего примера
AND AL,7FH
JNE END_PROC
JMP NEXT_PROG END_PROC: RET DATA DW 300 DUP(?)
NEXT_PROC:
CLC
Использование операндов
В языке ассемблера для микропроцессора МП 8083 первый операнд всегда используется в качестве приемника. Операнд может быть записан в регистре
125
общего назначения, регистре сегмента или ячейке памяти. При использовании непосредственных данных в качестве операнда-приемника макроассемблер генерирует сообщение об ошибке, как это показано в следующем примере,
CMP 3,AL Неправильная запись CMPAL,3 Правильная запись
Макрокоманды
В большой программе на языке ассемблера существуют определенные последовательности команд, которые часто повторяются с небольшими отклонениями друг от друга. Основные части этих последовательностей определяются как макрокоманды; упомянутые небольшие отличия последовательностей могут быть заданы соответствующими параметрами. Во время трансляции ассемблерной программы макрокоманды преобразуются в последовательности действительных команд языка ассемблера. Таким образом, макрокоманды являются удобным средством для генерации последовательности утверждений языка ассемблера в различных местах программы, даже если в каждый момент, когда вызывается последовательность, используются различные параметры. В макрокоманду обычно входят следующие элементы:
• входное имя, определяющее имя макрокоманды. После определения макрокоманды она может быть вызвана в любом месте ассемблерной программы, так же как и обычная машинная команда или псевдокод;
• список параметров, который включает специальные данные, необходимые при вызове макрокоманды. Спи сок может состоять из одного и более параметров, включаемых в последовательность утверждений, ко торая расширяется макрокомандой в процессе транс ляции программы;
• тело макрокоманды, определяющее основную после довательность утверждений языка ассемблера, кото рую генерирует макрокоманда;
• конечное утверждение, которое ограничивает мак рокоманду
126
Следующий пример является типичным макроопределением:
SAMPLE MACRO P1,P2,P3
MOV AX,PI
ADD AX,P2
MOV P3,AX ENDM
Входное имя в этом макроопределении — SAMPLE, Список параметров состоит из трех аргументов: Р1, Р2, РЗ. Тело макрокоманды включает три утверждения языка ассемблера. Конечным утверждением явля-: ется ENDM (End Macro — конец макрокоманды),; Программа, написанная на языке ассемблера, вызывает макрокоманду с помощью следующего утверждения: SAMPLE CASE1,TEST_LOCATION,FLAG
Макроассемблер генерирует следующую последовательность утверждений макрорасширения SAMPLE:
MOV AX,CASEl
ADD AX,TEST_LOCATION
MOV FLAG,AX
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.