3.1.1 Команда PUSH (занесение операнда в стек).

Команда push уменьшает на 2 содержимое указателя стека SP и заносит на эту новую вершину двухбайтовый операнд-источник (проталкивает в стек новое данное). Проталкивать в стек можно только целые слова (не байты). Программа должна строго следить за тем, чтобы каждой команде проталкивания в стек push отвечала обратная команда выталкивания из стека pop. Если стек используется для временного хранения некоторых данных, то извлекать эти данные из стека следует в порядке, обратном их сохранению.

В качестве операнда-источника может использоваться любой 16-разрядный регистр (включая сегментный) или ячейка памяти. Команда push не воздействует на флаги процессора.

Пара команд push - pop часто используется для пересылки данного из регистра в регистр (особенно, в сегментный) через стек.

Пример 1

push ES: mem; Сохранение содержимого

push DS; слова памяти mem из

push BP; дополнительного сегмента, а также регистров DS и ВР

pop PP; Восстановление из стека

pop DS; трех операндов

pop ES: mem; в обратном порядке

Пример 2

push DS; Пересылка DS через стек

pop ES; Теперь ES=DS

Простейший способ решения задачи вывода значения байта в десятеричной системе счисления


Пример № 3.1

. model tiny ; модель памяти, в которой сегменты кода, данных и стека объединены.
. code ; сегмент кода, который содержит данные.
org 100h ; начало СОМ-файла
begin: ; метка начала кода программы
mov dh, 33 ; заносим в регистр dh число 33
mov al, dh ; заносим в регистр al число 33
xor ah, ah ; обнуление ah
mov bl, 10 ; заносим в регистр bl число 10
xor cx, cx ; обнуление сх (счетчик)
@1: ; устанавливаем метку @1
div bl ; делим целое число (регистр ax) без знака, на число (регистр bl)
push ax

; пересылаем ax через стек

inc cx ; увеличиваем на 1 cx (счетчик)
xor ah, ah ; обнуление ah
or ax, ax ; логического (побитового) сложения само на себя
jnz @1 ; если флаг zf не ноль, то переходим на метку @1
@2: ; вызов прерывания DOS - вызов символа;
pop ax ; заносим в регистр al число 10
xchg ah, al ; обмен данными между операндами ah и al
add al, 30h ; прибавляем к al число 30h
int 29h ; вызов прерывания DOS - вызов символа
loop @2 ; реализация цикла - переходим на метку @2
mov al, 13 ; заносим в регистр al число 13
int 29h ; вызов прерывания DOS - вызов символа
mov al, 10 ; заносим в регистр al число 10
int 29h ; вызов прерывания DOS - вызов символа
ret ; функция DOS "завершить программу"
end begin ; метка окончания кода программы

Задание для выполнения.

3.1 C помощью редактора эмулятора EMU 8086 напишите программы, исходный текст которых приводится в примерах данной лабораторной работы.

3.2 Создайте исполняемые файлы типа *.com.

3.3 Изучите работу полученных программ.

3.4 Напишите программу для вывода на экран содержимого регистра DS (на основе примера №2.1). Сравните результат работы своей программы и того, что показывает отладчик.

3.5 Опишите работу команд DIV, PUSH, POP, SHL, TEST.

3.6 Установите (найдите адреса и запишите), где находятся числа, помещенные в стек.

3.7 Напишите программу для вывода на экран содержимого регистра СS (на основе примера №3.1).

3.8 Предложите другие способы решения поставленных задач.

5. Контрольные вопросы

Преимущества использования команды SHL вместо TEST (пример №1.1)?

Чем отличаются команды

SHL dx,1

и

SHL dx, cl

Как переслать содержимое X в стек и получить обратно?

Опишите методику вывода значения байта в десятеричной системе счисления?

Опишите методику вывода значения байта в шестнадцатеричной системе счисления?

Опишите методику вывода двоичного кода числа, записанного в регистр X

Стек. Принцип работы. Команды работы со стеком.

Укажите отличия в работе тандема команд

push DS

pop ES

от

push DS

pop ES


Лабораторная работа № 5, 6

КОМАНДЫ, ОБСЛУЖИВАЮЩИЕ РАБОТУ С КЛАВИАТУРОЙ

Цель работы: Освоить команды считывания данных и управления клавиатурой. Изучить способы работы с процедурами.


Информация о работе «Разработка виртуальных лабораторных работ средствами эмулятора Emu8086»
Раздел: Информатика, программирование
Количество знаков с пробелами: 193894
Количество таблиц: 73
Количество изображений: 12

0 комментариев


Наверх