Чему равен физический адрес команды процессора intel 8086 если cs 1234 ip 189a
Ответить на все приведенные ниже вопросы по каждой команде программы LAB1:
а) PUSH DS . PUSH AX:
Для чего необходимо DS и АХ запомнить в стеке?
Для того, чтобы запомнить адрес возврата (обращение по этому адресу происходит после окончания выполнения процедуры.
Б) MOV AX, DSEG и MOV DS, AX ;
Укажите назначение этих команд.
Эти команды выполняют загрузку через регистр AX указателя сегмента данных DSEG
в) MOV ВХ, OFFSET SOURSE :
Какое значение находится в регистре BX? Зачем это значение запоминается в регистре?
В регистре BX находится адрес смещения переменной SOURCE, чтобы по этому адресу [bx]
извлекать данные побайтно из переменной SOURCE.
г) MOV DI, OFFSET DEST :
Kакoe значение содержит регистр DI? КАК используется этот регистр в
В регистре DI находится адрес смещения переменной DEST.
Этот регистр используется в качестве адресной ссылки [di] для сохранения результата
в переменной DEST.
д) MOV AL,[BX] и СМР AL, 0FH :
Почему изменился флажок знака (S)? Вычислите физический адрес команды MOV AL,[BX] и физический адрес операнда,находящегося в памяти.
Регистр al получает значение 01.
Команда cmp для сравнения выполняет вычитает из al значение 0f, получает при этом
е) Почему после выполнения команды JB А выполняется команда ADD AL,0F?
Результат сравнения предыдущей команды cmp дал результат: текущий байт < 0f, а команда
JB A передает управление команде с меткой a: add al,оfh в случае выполнения этого условия.
Вычислите физический адрес этой команды и физический адрес первого операнда. По какому адресу и как меняется содержимое сегмента данных ?
Физический адрес команды 0021.
Физический адрес первого операнда - меняется для каждого цикла.
Содержимое сегмента данных меняется по адресу [dx].
з) Почему в 1-м цикле программы после выполнения команды LOOP AGAIN выполняется команда MOV AL,[BX]?
LOOP - это команда организации цикла, каждая итерация цикла выполняется с начала цикла,
т.е. с команды, следующей за меткой again.
и) Почему во 2-м цикле программы выполняется команда SUB AL,0FH вместо команды ADD AL, 0FH ?
Результат сравнения предыдущей команды cmp дал результат: текущий байт > 0f, а это условие не принято ни одной из команд: je e , jb a, поэтому управление не передалось
какой-либо команде с меткой, и выполняется команда, следующая за командами je и jb.
к) По какому адресу и что содержит сегмент данных (DS:0000) в конце выполнения 2-го цикла программы ?
л) Как меняется значение флага нуля (Z) в 3-м цикле программы и какое число записывается в таблицу DEST ?
Значение флага Z в 3-м цикле программы (при значении регистра-счетчика 0002)
меняется с 0 на 1.
В таблицу dest записывается значение 0F.
м) Какие действия производятся в 4-м цикле программы ?
Регистр cx (счетчик) получает значение 0001.
Регистр al получает значение 08.
Выполняется команда сравнения cmp: значение регистра al сравнивается с 0f.
После выполнения команды флаги меняют значения на: c=1, s=1, p=1, a=1.
Команда je e отработана без передачи управления.
Команда jb a передала управление на метку а: .
Выполнена команда add al,0f
Регистр al получает значение 17.
Записан результат в dest.
Регистр bx получил значение 0004.
Регистр dx получил значение 0008.
Управление передано команде ret.
н) Какие значения содержатся в таблице DEST после выполнения программы? Значением какого регистра определяется количество циклов программы?
После выполнения программы в таблице DEST содержатся следующие значения:
Количество итераций цикла определяется значением регистра CX.
1. Назовите стандартное применение регистров общего назначения: АХ,ВХ,СХ и DХ.
Регистр АХ используется в качестве аккумулятора т.е. регистра, в котором находится один из операндов и в который помещается результат операции;
Регистр ВХ – как базовый регистр, используется при косвенной адресации;
Регистр СХ – как счетчик количества сдвинутых бит в командах сдвига, счетчик числа повторов в командах управления вычислительными циклами и в операциях с цепочками байт;
Регистр DX неявно адресуется в командах умножения и деления, а в некоторых операциях ввода-вывода хранит адрес порта ввода-вывода.
2. Укажите пары регистров , которые однозначно определяют адрес байта во всем адресном пространстве МП I8086.
BH BL, AH AL, DH DL
3. Какие флаги содержит регистр флагов ?
8 флагов состояния, 1 флаг управления, 5 системных флагов
4. Сколько байтов памяти зарезервирует следующая последовательность операторов: varl DB ? /// var2 DW 4 dup(?), 20 /// var3 DB 10 dup(?).
varl DB ? - 1 байт
var2 DW 4 dup(?), 20 - слово (2 байта) из 4-х повторений : 2*4 = 8 байт (значение 20 после запятой - это, по-моему, для инициализации переменной)
var3 DB 10 dup(?) - 10 байт, всего 19 байт
5. Чем различаются следующие операторы: k EOU 1024 и k = 1024.
оператор k EOU 1024 определяет константу с именем k и значением 1024, после определения константы её значение не может меняться, а оператор k = 1024 присваивает
переменной с именем k значение 1024, значение переменной может меняться в программе.
6. Какая ошибка содержится в операторах const DB ? /// mov cоnst,256.
ошибка в команде mov cоnst,256
Для переменной const определен размер памяти в 1 байт,но байт не может принимать значение > чем 255
7. Какими псевдооператорами отмечают начало и конец каждой процедуры.
8. Чем отличается процедура с атрибутом NEAR от процедуры с атрибутом FAR.
Процедура с атрибутом near (ближняя) может вызываться только в том же сегменте, в котором она определена.
Процедура с атрибутом far (дальняя) может вызываться и вне сегмента, в котором она определена.
9. Почему процедура программы, которая исполняется в МП I8086 первой, должна иметь атрибут FAR.
Программа по имени её первой процедуры может вызываться из другого сегмента или из другой программы (напр. из ОС), поэтому она должна иметь атрибут far.
10. Опишите действия следующего оператора: ASSUME CS:CSEG.
Директива ASSUME определяет соответствие между сегментным регистром CS и именем сегмента CSEG.
11. Какой физический адрес генерирует МП I8086, если значение смещения 2 сочетается с содержимым регистра сегмента, равным 4000.
Исполнительный адрес ячейки = Адрес сегмента + Адрес смещения = 4000 + 2 = 4002
12. Если регистр AX содержит 1А2В, то что находится в регистрах АL и АН ?
В регистре AL находится 2B
В регистре AH находится 1A
13. С помощью какого регистра сегмента, в основном , осуществляется доcтуп к переменным рабочей программы.
14. Найдите сумму и состояние флажков AF,SF,ZF,CF,OF,RF после прибавления 62A0 к следующим числам: a) 1234; б) 4321; в) СFA0; г) 9D60.
1234 + 62A0 = 74D4 - SF = 0, ZF = 0, OF = 1
4321 + 62A0 = A5C1 - SF = 0, ZF = 0, OF = 0
CFA0 + 62A0 = 13240 - SF = 0, ZF = 0, OF = 0
9D60 + 62A0 = 10000 - SF = 0, ZF = 0, OF = 1
15. Поясните , почему иногда необходим атрибутный оператор PTR.
Чтобы выбрать из памяти некоторый размер данных, указанный префиксом перед PTR,
напр. BYTE PTR 5 или WORD PTR 7.
16. Какое начальное значение переменной TEMP задает оператор TEMP DB ?.'
17. Каким способом можно зарезервировать память для строки символов.
Например, symb db 224 dup ('*') - зарезервировать для переменной symb строку размером 224 байта памяти.
Тут вы можете оставить комментарий к выбранному абзацу или сообщить об ошибке.
Для доступа к памяти можно использовать следующие четыре регистра: BX, SI, DI, BP.
Комбинируя эти регистры внутри квадратных скобок [ ], мы можем получить доступ к различным местоположениям в памяти. Возможны следующие комбинации (режимы адресации):
d16 - обозначение для 16-ми битовой подстановки.
Подстановка может быть непосредственным значением или смещением переменной, или даже и тем и другим. Она преобразуется компилятором в одиночное непосредственное значение.
Подстановка может быть как внутри так и вне квадратных скобок ([ ]), компилятор генерирует одинаковый машинный код в обоих случаях.
Подстановка - это величина со знаком, поэтому она может быть как положительной, так и отрицательной.
Обычно компилятор различает d8 и d16 и генерирует требуемый машинный код.
Например, представим что DS = 100, BX = 30, SI = 70.
Следующий способ адресации: [BX + SI] + 25
вычисляется процессором для этого физического адреса:
По умолчанию сегментный регистр DS используется для всех способов адресации, кроме способа, который используется с регистром BP. В последнем случае используют сегментный регистр SS.
Легко запомнить все возможные комбинации с помощью таблицы:
Вы можете формировать все имеющие силу комбинации, взяв по одному пункту из каждого столбца, либо пропустить какой-либо столбец и ничего из него не взять. Как вы можете видеть, BX и BP никогда не идут вместе. SI и DI также не могут быть вместе. Здесь приведен пример имеющего силу способа адресации: [BX+5].
Значение в сегментном регистре (CS, DS, SS, ES) называется "segment (сегмент)",
а значение в регистре общего назначения (BX, SI, DI, BP) называется "offset (смещение)".
Если DS содержит значение 1234h, а SI содержит значение 7890h, то это можно записать как 1234:7890. Физический адрес будет таким: 1234h * 10h + 7890h = 19BD0h.
Чтобы указать компилятору тип данных,
должны использоваться эти префиксы:
BYTE PTR - для байта.
WORD PTR - для слова (два байта).
Например:
Emu8086 поддерживает короткие префиксы:
b. - для BYTE PTR
w. - для WORD PTR
иногда компилятор может вычислить тип данных автоматически, но вы не можете и не должны полагаться на это, если один из операндов является непосредственным значением.
-
Копирует второй операнд (источник) в первый операнд (приемник).
MOV регистр, память
MOV память, регистр
MOV регистр, регистр
MOV память, непосредственное значение (число)
MOV регистр, непосредственное значение
регистр: AX, BX, CX, DX, AH, AL, BL, BH, CH, CL, DH, DL, DI, SI, BP, SP.
непосредственное значение: 5, -24, 3Fh, 10001101b, и т.п.
MOV сегментный регистр, память
MOV память, сегментный регистр
MOV регистр, сегментный регистр
MOV сегментный регистр, регистр
сегментный регистр: DS, ES, SS, и только как второй операнд: CS.
регистр: AX, BX, CX, DX, AH, AL, BL, BH, CH, CL, DH, DL, DI, SI, BP, SP.
Вы можете скопировать и вставить вышеописанную программу в редактор кода Emu8086, и нажать кнопку [Compile and Emulate] (или нажать клавишу F5 на клавиатуре).
Окно эмулятора должно открыться с загруженной программой. Щелкните кнопку и наблюдайте за содержимым регистров.
-
Выделите техт программы с помощью мыши: щелкните перед текстом и, не отпуская кнопки, продвигайте мышь, пока не будет выделен нужный текст.
Как вы могли догадаться, точка с запятой (";") используется для комментариев. Все символы, которые следуют за ";", игнорируются компилятором.
Вы должны увидеть нечто подобное, когда программа закончит свою работу:
Фактически, вышеописанная программа записывает данные непосредственно в видеопамять, так что MOV - это очень мощная инструкция.
5.2.1. Способы адресации и форматы команд микропроцессораI8086
Микропроцессор Intel8086(К1810ВМ80) имеет двухадресную систему команд. Ее особенностью является отсутствие команд, использующих оба операнда из оперативной памяти. Исключение составляют лишь команды пересылки и сравнения цепочек байт или слов, которые в данном пособии рассматриваться не будут. Таким образом, в командах допустимы следующие сочетания операндов: RR, RS, RI, SI. Здесь R обозначает операнд, находящийся в одном из регистров регистровой памяти микропроцессора, S– операнд, находящийся в оперативной памяти, адрес которого формируется по одному из допустимых способов адресации, I– непосредственный операнд, закодированный в адресном поле самой команды. Формат команды во многом определяется способом адресации операнда, находящего в оперативной памяти, длиной используемого непосредственного операнда, а также наличием и длиной смещения, используемого при относительных режимах адресации.
Микропроцессор имеет все режимы адресации, общая схема которых была рассмотрена выше. Естественно, они имеют определенные особенности, присущие данному процессору.
Непосредственная адресация предполагает, что операнд занимает одно из полей команды и, следовательно, выбирается из оперативной памяти одновременно с ней. В зависимости от форматов обрабатываемых процессором данных непосредственный операнд может иметь длину 8 или 16 бит, что в дальнейшем будем обозначать data8 и data16 соответственно.
Адресация оперативной памяти имеет свои особенности, связанные с ее разбиением на сегменты и использованием сегментной группы регистров для указания начального адреса сегмента. 16-разрядный адрес, получаемый в блоке формирования адреса операнда на основе указанного режима адресации, называется эффективным адресом (ЭА). Иногда эффективный адрес обозначается как ЕА (effectiveaddress). 20-разрядный адрес, который получается сложением эффективного адреса и увеличенного в 16 раз значения соответствующего сегментного регистра, называется физическим адресом (ФА).
Именно физический адрес передается из микропроцессора по 20-ти адресным линиям, входящим в состав системной шины, в оперативную память и используется при обращении к ее ячейке на физическом уровне. При получении эффективного адреса могут использоваться все основные режимы адресации, рассмотренные выше, а также некоторые их комбинации.
Прямая адресация предполагает, что эффективный адрес является частью команды. Так как ЭА состоит из 16 разрядов, то и соответствующее поле команды должно иметь такую же длину.
При регистровой косвенной адресации эффективный адрес операнда находится в базовом регистре BX или одном из индексных регистров DI либо SI:
Обозначение имени регистра в квадратных скобках указывает на содержимое соответствующего регистра. Фигурные скобки – символ выбора одной из нескольких возможных альтернатив.
При регистровой относительной адресации эффективный адрес равен сумме содержимого базового или индексного регистра и смещения:
Эффективный адрес при базово-индексной адресации равен сумме содержимого базового и индексного регистров, определяемых командой:
Форматы двухоперандных команд представлены на рис. 3.16. Пунктиром показаны поля, которые в зависимости от режима адресации могут отсутствовать в команде.
Рис. 5.16. Форматы двухоперандных команд микропроцессора I808:
Поле КОП содержит код выполняемой операции. Признак w указывает на длину операндов. При w = 1 операция проводится над словами, а при w = 0 – над байтами. Признак d указывает положение приемника результата. Признак d = 1, если результат записывается на место операнда, закодированного в поле reg, и d = 0, если результат записывается по адресу, закодированному полями (md, r/m).
Второй байт команды, называемый постбайтом, определяет операнды, участвующие в операции. Поле reg указывает регистр регистровой памяти согласно табл. 5.1
Во-вторых, обзор разработки микропроцессора серии 8086
1, существительное объяснение
Основные характеристики развития микропроцессоров серии 28086
Все белое Введение Сверток Neural Network (CNN)
Интеллектуальная рекомендация
Шесть, логические адреса и физические адреса
Адрес каждой ячейки памяти может иметь следующие два режима:
1, логический адрес
Адрес ячейки памяти, представленный адресом сегмента и адресом смещения, называется логическим адресом.
2, физический адрес
20-значный адрес, используемый CPU, на самом деле рассматривается при доступе память.
3, формирование физического адреса
Для доступа к физической памяти логические адреса должны быть преобразованы в физические адреса。
Когда адрес смещения и контент регистра сегмента остаются после того, как адрес смещения рассчитывается из 16-битного сегмента устройства адресации по ЕС, а реестр сегмента оставлен (эквивалентно 10 ч). Полученная база сегмента (физическая Адрес первой ячейки памяти) отправляется на адресную сумму в BIU для формирования 20-битного физического адреса, тем самым реализующий доступ к блоку хранения.
Формула физического адреса логическим адресом:Физический адрес = сегментный адрес × 10H + сегмент смещения
Предварительное понимание регулярных выражений Python (4)
Сегодня я продолжу делиться базовыми знаниями о регулярных выражениях Python. В основном я представляю использование специального символа "<>". Ниже приведено конкретное руководство. .
Микрокомпьютер - 8086 Микропроцессорная внутренняя структура
V. Структура структуры памяти терминалов Микрокомпьютерная система
Чтобы встретить высокоскоростную мощность микрокомпьютера, широкую емкость, низкие требования к системам памяти, микрокомпьютерная система использует трехступенчатую организационную структуру памяти, которая отображается, как показано на рисунке.Кэш кеш, основная память и освобождениесостав
В-четвертых, 8086/8088 Внутренние регистры
1, универсальный регистр
(1) Четыре регистры данных
Регистраторы данных обычно используются для хранения операндов или результатов работы участвующих операций.
Каждый регистр данных составляет 16 битов
(3) Два реестра для поиска
2, реестр сегмента
3, Регистр управления
Подписать бит в регистре логотипа
(1) Знак состояния (6)
(2) контрольный маркер (3)
Во-первых, функция микропроцессора
Микропроцессор (CPU) - основной компонент, контроль и координация компьютерной системы, в основном со следующими основными функциями:
5.4 Способы адресации микропроцессора
Регистровая адресация. Операнд (байт или слово) находится в регистре. Этот способ применим ко всем программно адресуемым регистрам микропроцессора.
Непосредственная адресация. Операнд (байт или слово) записывается непосредственно в коде команды.
Прямая адресация к памяти. В команде указывается символическое обозначение ячейки памяти, над содержимым которой требуется выполнить операцию, либо ее адрес, заключенный в квадратные скобки.
Пример:
mov dl,_byte
При использовании прямой адресации к памяти предварительно необходимо настроить какой-либо сегментный регистр на начало того участка памяти, в котором находится адресуемая ячейка.
Базовая и индексная адресация к памяти. В этом случае, относительный адрес ячейки памяти находится в регистре, обозначение которого заключается в квадратные скобки. При использовании регистра BX адресацию называют базовой, при использовании регистров SI или DI – индексной. При адресации через регистры BX, SI или DI в качестве сегментного регистра, по умолчанию, используется сегментный регистр DS. Однако, в случае необходимости можно заменить используемый по умолчанию сегментный регистр посредствам префикса замены регистра.
Пример:
Базовая и индексная адресации к памяти со смещением. Исполнительный адрес операнда определяется суммой содержимого базового или индексного регистра (BX, BP, SI, DI) и смещения, указанного в коде команды.
Пример:
mov dx,[di+12h]
mov [si+3FC0h],al
mov cx,mem[si]
При этом возможно несколько вариантов записи:
Регистр вместе со смещением записывается в квадратных скобках;
Записывается мнемоническое обозначение некоторого массива элементов, после которого в квадратных скобках указывается базовый или индексный регистр;
Записывается числовое смещение, после которого в квадратных скобках базовый или индексный регистр;
При использовании регистра BP необходимо помнить, что в качестве сегментного регистра по умолчанию подразумевается регистр SS.
Базовая и индексная адресация к памяти со смещением использует не физический, а эффективный адрес ячейки памяти.
Для двухоперандных команд возможны 3 варианта размещения операндов:
источник и приемник в регистре;
источник в регистре, приемник в памяти;
источник в памяти, приемник в регистре.
Вариант, когда оба операнда в памяти запрещен!
Базово-индексная адресация к памяти. Исполнительный адрес операнда определяется суммой содержимого базового и индексного регистров. Для микропроцессора i8086 допускается использование следующих пар регистров:
Если в качестве базового регистра выступает BX, то в качестве сегментного регистра по умолчанию подразумевается регистр DS; при использовании в качестве базового регистра BP сегментным регистром по умолчанию считается SS. При необходимости можно явно указать требуемый сегментный регистр.
mov es:[bp+si],ah
Базово-индексная адресация к памяти со смещением. Относительный адрес операнда определяется суммой трех составляющих: содержимого базового и индексного регистров, а также дополнительного смещения. Допускается использование тех же регистровых пар, что и в базово-индексном методе адресации без смещения. Те же правила распространяются и на использование сегментных регистров.
Пример:
mov mem[bx][di],dx
mov 4[bp][si],ch
mov bx,[bx+di+0C21h]
Значительная часть рассмотренных выше способов адресации служит для обращения к ячейкам памяти. Однако, один и тот же результат можно получить, используя различные методы адресации. Например, все три приведенные ниже команды:
mov dl,mem[bx] ;в bx заранее занесено число 3
mov dl,[si][di] ;в bx заранее занесено число 3, а в si – смещение mem приведут к загрузке в регистр DL четвертого элемента массива mem (если выполнятся условия приведенные в комментариях). Но, стоит отметить, что различные методы адресации занимают различный объем памяти и выполняются за различное число тактов микропроцессора. Таким образом, тщательный подбор методов адресации, используемых в вашем коде, может в какой- то степени увеличить скорость выполнения программы или уменьшить объем необходимой памяти, а иногда и то и другое.
Система команд микропроцессора изучается в другой дисциплине и поэтому в данном учебном пособии не приводится.
В-третьих, 8086 микропроцессорная внутренняя структура
8086CPU предназначен для двух отдельных функциональных компонентов для полного использования шины для улучшения скорости выполнения программы.Блок интерфейса шины BIU (блок интерфейса шины) и блока выполнения EU (блок выполнения)。
Блок интерфейса шины BIU
Функции:Отвечает за выполнение передачи данных между CPU и устройством памяти или ввода / вывода.
Блок интерфейса шины включает в себя:
(1) 4 16-битные регистры CS, DS, ES, SS
(2) 16-битная инструкция указатель записи IP (указатель инструкции)
(3) 20-битный адрес по адресу
(4) 6-байтовый буфер очереди обучения
(5) Внутренний регистр и цепь управления шины, которая связывается с общением ЕС.
Исполнительный подразделение ЕС
Основная функция:Выполнить инструкции, анализировать инструкции, временные вычисленные результаты и результаты резервов
Исполнение ЕС включает в себя:
(1) расчет логической единицы (обязательный) ALU
(2) Универсальный регистр
(3) Регистр знака
(4) Регистр программы данных
8086 и 8088 разница
Внутренняя структура 8088CPU по существу аналогична 8086, а модуль исполнения ЕС из них одинаково точно так же, и его система обучения, режим адресации и методы программирования одинаковы, поэтому два процессора полностью совместимы.
Разница только в том, что блок BUS интерфейса шины суммируется, и существует разница в следующих аспектах:
Java.nio.Buffer flip () метод jdk Ошибка перевода на китайский язык
Когда я сегодня читал «Идеи программирования на Java», я столкнулся с методом java.nio.Buffer flip (). Дело в том, что «[color = red] переворачивает этот буфер. Сначала установите ог.
[Код очень подробный] POJ 2492 A Bug's Life (и проверьте коллекцию)
1. Описание заголовка 2. Инструкции по анализу алгоритмов и руководство по написанию кода. Похожие темы:POJ 1182 Решение проблемы пищевой цепи Наблюдается m насекомых и n вязок. Насекомые u и v могут .
Адресное пространство микропроцессора i8086 составляет 1 Мбайт и обеспечивается 20-разрядной шиной адреса. Логически память разбивается на сегменты размером 64 Кбайт. Физический адрес (РА) памяти, поступающий на шину адреса микропроцессора, состоит из двух 16-битных частей - адреса сегмента (Seg) и исполнительного адреса (ЕА), суммируемых со смещением 4 бита. Сдвиг адреса сегмента на 4 бита влево эквивалентен его умножению на 16, т.е. физический адрес вычисляется как РА = 16 X Seg + ЕА. Адрес сегмента может храниться в одном из сегментных регистров: CS, DS, SS или ES.
Рис. 5.5 Формирование физического адреса
Исполнительный адрес, также называемый эффективным адресом, может быть константой, содержимым регистра, ячейки памяти или суммой нескольких величин (например, двух регистров и константы), но эта сумма является 16-разрядной, т.к. перенос игнорируется. Таким образом, физический адрес никогда не перейдет границу 64-килобайтного сегмента, на начало которого указывает текущий сегментный указатель.
8086 микропроцессор
Микропроцессор 80x86 представляет собой серию микропроцессоров, произведенных Соединенными Штатами Intel. Эта глава в основном вводится 16-битный микропроцессорный микропроцессор 8086 с выходом Intel в 1978 году.
Использование внутреннего соединения, левого соединения, правого соединения в оракуле
Левое-правое соединение фактически говорит, какая таблица является результатом нашего совместного запроса ~ 1. Взаимосвязь проста select A.*, B.* from A,B where A.id = B.id select A.*, B.* from.
Читайте также: