Читайте также:
|
|
Формат команды:
LEA <16-битовый регистр>, <имя переменной>
Действие: адрес смещения переменной, хранимой в памяти, загружается в регистр МП (кроме сегментных регистров).
Пример:
LEA SI, tabl;адрес смещения переменной table, хранимой в памяти,
;загружается в регистр (рисунок 2).
Команда MOV SI,offset table выполняется аналогично.
3) Команды ввода/вывода (пересылки в порт)
а) Ввод из порта. Формат команды:
IN <регистр А>,<адрес порта>
б) Вывод в порт. Формат команды:
OUT <адрес порта>,<регистр А>
Пересылка в стек и из стека
Стек – память, организованная определенным образом.
а) Пересылка в стек. Формат команды:
PUSH <источник>
б) Пересылка из стека. Формат команды:
POP <приемник>
Команды PUSH и POP работают с ячейками стека, неявно адресуя через SS:SP.
PUSH AX
PUSH [BX]
PUSH DS
Обе команды работают со словом, т.е. нельзя поместиь в стек или извлечь из него одиночный байт. При выполнении PUSH вначале уменьшается на 2 содержимое указателя SP, а затем операнд помещается по адресу SS:SP. При извлечении из стека сначала читается память по адресу SS:SP, а затем SP увеличивается на 2. Таким образом, при заполнении указатель вершины стека SP смещается к младшим адресам, а при освобождении – к старшим. Нужно помнить, что при выходе из подпрограммы указатель SP должен содержать то же смещение, что и при входе в нее, т.е. подпрограмма не должна забыть в стеке лишнее слово или взять больше нужного.
Дата добавления: 2014-12-19; просмотров: 29 | Поможем написать вашу работу | Нарушение авторских прав |