- •Министерство образования и науки украины
- •2 Анализ структуры микропроцессора прототипа и алгоритмов выполнения заданного подмножества команд
- •3 Постановка задач проекта
- •4 Разработка алу микропроцессора
- •5 Разработка гипотетического микропроцессора
- •Команда inc (Инкремент на 1) Команда inc прибавляет 1 к операнду - приемнику, но в отличие от add не влияет на флаг cf.
- •Команда imul
- •Команда mov
- •6 Разработка структуры центральной части микро эвм на базе микропроцессора
- •Р исунок 6.1 – Структурная схема эвм
- •7 Разработка программы эмуляции работы микро эвм
- •Приложение а
- •Приложение б техническое задание на программу-эмулятор
- •Приложение в руководство пользователя
- •Приложение г
Команда inc (Инкремент на 1) Команда inc прибавляет 1 к операнду - приемнику, но в отличие от add не влияет на флаг cf.
Последовательность команд:
14EB:0100 B8FE00 MOV AX,00FE
14EB:0103 FEC0 INC AL
14EB:0105 FEC0 INC AL
14EB:0107 FEC0 INC AL
Загружаем –2 в регистр AL:
AX=00FF BX=0070 CX=0000 DX=FFFF SP=EA04 BP=0000
SI=0000 DI=0000 DS=14EB ES=14EB SS=14EB CS=14EB
IP=0103
NV UP EI NG NZ AC PO NC
14EB: 0103 FEC0 INC AL
AX=00FF BX=0070 CX=0000 DX=FFFF SP=EA04 BP=0000
SI=0000 DI=0000 DS=14EB ES=14EB SS=14EB CS=14EB
IP=0105
NV UP EI NG NZ NA PE NC
* * *
Выполнили инкремент в регистр AL, получив –1. Флаги, изменяемые арифметическими командами, изменяются также и командой INC.
14EB: 0105 FEC0 INC AL
AX=0000 BX=0070 CX=0000 DX=FFFF SP=EA04 BP=0000
SI=0000 DI=0000 DS=14EB ES=14EB SS=14EB CS=14EB
IP=0107
NV UP EI PL ZR AC PE NC
* * *
Выполнив инкремент от –1 до 0, надо было бы сформировать перенос. В этом отношении – отсутствии влияния на флаг перенос – командой INC отличается от обычных арифметических команд.
14EB: 0107 FEC0 INC AL
AX=0001 BX=0070 CX=0000 DX=FFFF SP=EA04 BP=0000
SI=0000 DI=0000 DS=14EB ES=14EB SS=14EB CS=14EB
IP=0109
NV UP EI PL NZ NA PO NC
* *
При выполнении инкремента от 0 до 1 результат отражается в состоянии флагов.
Исключительные ситуации реального режима:
Такие же, как для команды ADD.
Исключительные ситуации защищенного режима:
Такие же, как для команды ADD.
Команда imul
Команда IMUL выполняет операцию знакового умножения.
Команда имеет 3 варианта:
Однооператорная форма. Операнд может быть байтом, словом или двойным словом в памяти или регистре общего назначения. Команда IMUL, так же как и команда MUL, неявно использует содержимое регистров EAX и EDX в качестве операндов.
Двухоператорная форма. Один из операндов-источников может находиться в любом регистре общего назначения, в то время как другой может быть в регистре общего назначения или в памяти. Произведение размещается на месте операнда в регистре общего назначения.
Трехоперандная форма. Два операнда представляют собой источники и один приемник. Один из операндов-источников является непосредственным значением, записанным в команде. Второй может находиться в памяти или в любом регистре общего назначения. Произведение может быть записано в любой регистр общего назначения. Непосредственный операнд считается знаковым. Если он является байтом, процессор перед выполнением умножения автоматически расширяет его знак до размера второго операнда.
В некоторых случаях в результате выполнения команды IMUL изменяется состояние различных флагов; в этих случаях значение флагов оказывается неопределенным, другими словами, их новое состояние не несет никакой информации.
Последовательность команд:
14EB:0100 B8EEFF MOV AX,FFEE
14EB:0100 B370 MOV BL,70
14EB:0100 F6EB IMUL BL
14EB:0107 B8EEFF MOV AX,FFEE
14EB:010A F7EB IMUL BX
Алгоритм работы команды зависит от используемой формы команды. Форма команды с одним операндом требует явного указания местоположения только одного сомножителя, который может быть расположен в ячейке памяти или регистре. Местоположение второго сомножителя фиксировано и зависит от размера первого сомножителя:
если операнд, указанный в команде, — байт, то второй сомножитель располагается в al;
если операнд, указанный в команде, — слово, то второй сомножитель располагается в ax;
если операнд, указанный в команде, — двойное слово, то второй сомножитель располагается в eax.
Результат умножения для команды с одним операндом также помещается в строго определенное место, определяемое размером сомножителей:
при умножении байтов результат помещается в ax;
при умножении слов результат помещается в пару dx:ax;
при умножении двойных слов результат помещается в пару edx:eax.
Исключительные ситуации реального режима:
Такие же, как для команды ADD.
Исключительные ситуации защищенного режима:
Такие же, как для команды ADD.