- •4) Пpинципы оpганизации основных аппаpатных сpедств эвм (расслоение памяти, регистр перемещений, прерывания и опрос состояний, буферизация).
- •6) Организация ввода-вывода.
- •7) Методы повышения производительности эвм.
- •9) Микроархитектура современных пэвм. Гиперконвейерная организация процессора.
- •Регистры.
- •Сегментные регистры.
- •17) Основы языка Ассемблер
- •18) Команды логических операций. Сдвиговые команды.
- •19) Цепочечные команды. Префиксы повторения в цепочечных командах.
- •Insb считать из входного порта в приемник по адресу [di]
- •2. Команды умножения (mul, imul)
- •23) Команды условного и безусловного переходов.
- •Формат купу
- •Формат кбпу.
- •Передача параметров в п/п
- •Можно собрать макросы в отдельную библиотеку и писать программы, используя имена макросов в библиотеке.
- •3. Типы класса – имена, фиксированные (code, data, stack).
- •30) Базовая система ввода/вывода bios. Прерывания операционной системы dos. Средства
- •Прерывания ос
23) Команды условного и безусловного переходов.
Команды управления
а) команды условной передачи управления (КУПУ)
б) команды безусловной передачи управления (КБПУ)
Формат купу
КОП смещение от текущего IP. Смещения бывает близкое (однобайтное) в диапазоне ±127 байт. Команды дальнего перехода не существуют, нужно пользоваться КБПУ. Условие, по которому осуществляется условный переход, осуществляется как правило:
а) с отношением между числами (беззнаковые: выше, ниже, по числовой оси; знаковые: не равно, равно, больше, меньше, больше или равно, меньше или равно).
б) с состоянием определённого флага.
JE переход, если равны JZ JNE переход, если не равны JNZ JL переход, если меньше JNGE JNL переход, если не меньше JGE JG переход, если больше JNLE JNG переход, если не больше JLE |
JB ниже JNAE JNB не ниже JAE JA выше JNBE JNA не выше JBE |
Знаковые |
беззнаковые |
Условия, связанные с состоянием флагов.
JS FC=1
JNS FC=0
JC FC=1
JNC FC=0
JP FP=1
JNP FP=0
Формат кбпу.
К командам этой группы относятся
а) JMP адрес
б) вызов подпрограммы [call адрес (имя)]
в) Ret – выход из подпрограммы
24) Подпpогpаммы. Типы вызовов подпpогpамм. Передача паpаметpов в подпpогpаммы.
Для идентификации подпрограмм используется директива
PROC – начало п/п
ENDP – конец п/п
Формат:
Имя PROC Тип перехода
Тело п/п
------------------------------
RET
Имя ENDP
Типы перехода: 1) Near; 2) Far
Переходы бывают короткими и длинными. Короткие – по умолчанию ±127 байт (near). Дальние (far) – переход с учётом сегментного регистра.
Команды возврата не имеют типа перехода. Вызов п/п осуществляется командой CALL (Call <имя> – команда обеспечивает:
1) сохранение адреса возврата в стеке (регистр IP);
2) запуск выполнения вызываемой процедуры, то есть загрузку в IP нового адреса)
RET – осуществляет выборку из стека адреса возврата и загрузку его в IP.
Передача параметров в п/п
- Через регистры
- Через стек
Т.к. в п/п могут быть использованы регистры, которые используются и будут использованы в основной программе, то в п/п надо предусмотреть возможность сохранения регистров в начале п/п и восстановление при выходе из п/п.
Перед входом в п/п в основной программе в стек с помощью push передаются параметры; в начале п/п из стека эти параметры извлекаются в обратном порядке.
25) Макpокоманды. Формальные локальные параметры. Формирование библиотеки макроопределений.
Макрокоманды представляют собой последовательность операторов на языке TASM, неоднократно повторяющуюся в тексте программы. Подобная последовательность операторов описывается в программе отдельно, ей присваивается имя.
Структура:
Имя Macro <список формальных параметров> Local <список локальных меток> ENDM
Список формальных параметров – наименьшие параметры, которые передаются в макрос в виде списка после его имени. В теле макроса эти значения подставляются в соответствии параметрам.
Список локальных меток – имена меток внутри тела программы, эти имена могут иметь те же названия, что и в основной программе и не пересекаться.
Макрос описывается в программе в любом месте, но до начала её использования в теле программы.
TASM в процессе ассемблирования подставляет вместо имени макроса последовательность операторов, которыми она описана.
По сравнению с п/п макросы позволяют:
- обеспечит большую динамичность программе, т.к в п/п можно передать только параметры, а в макросе, за счёт изменения входных параметров, можно изменить и сами действия.
- ускорить выполнение программы, т.к МП не нужно отвечать на вызов п/п.