Главная страница
Навигация по странице:

  • работа 5 РАЗРАБОТКА И ОТЛАДКА 32-РАЗРЯДНЫХ ПРИКЛАДНЫХ ПРОГРАММ НА БАЗЕ МП 80Х86 5.1. Цель работы

  • 5.2. Особенности разработки 32-разрядных программ на языке ас- семблера МП i80x86 для реального режима

  • . 386 . 486 . 37 Для задания сегментов могут быть использованы директивы SEGMENT

  • 5.3. Порядок выполнения работы Порядок формирования ЕХЕ-файла разработанной 32-битной программы с отладочной информацией

  • Порядок работы в отладчике td.exe

  • 5.4. Содержание отчета 1.Исходная программа для заданного варианта. 2.Листинг программы. 3.Результаты выполнения программы. Лабораторная работа № 6

  • КОМАНДЫ ОБРАБОТКИ ЦЕПОЧЕК МП Х86 6.1. Цель работы

  • 6.2. Цепочечные команды

  • Пример 6.1.

  • 6.3. Ввод строковых данных в ПЭВМ

  • 6.5. Порядок выполнения работы

  • 6.5. Содержание отчета 1.Программа для заданного варианта. 2.Результаты выполнения прграммы. 42 Библиографический список

  • Приложение СИСТЕМА КОМАНД МП Intel 8086

  • Чернов Андрей Владимирович Тишина Анджела Викторовна АРХИТЕКТУРА ИНФОРМАЦИОННЫХ СИСТЕМ

  • Архитектура ЭВМ. Архитектура


    Скачать 392.83 Kb.
    НазваниеАрхитектура
    АнкорАрхитектура ЭВМ
    Дата30.09.2021
    Размер392.83 Kb.
    Формат файлаpdf
    Имя файлаchernov_a.v._arkhitektura_inform_sistem_ch.1.pdf
    ТипУчебно-методическое пособие
    #239406
    страница4 из 4
    1   2   3   4
    4.5. Содержание отчета
    1.
    Исходная программа для заданного варианта.
    2.
    Листинг программы.
    3.
    Результаты выполнения программы.

    36
    Лабораторная
    работа 5
    РАЗРАБОТКА
    И ОТЛАДКА 32-РАЗРЯДНЫХ ПРИКЛАДНЫХ
    ПРОГРАММ
    НА БАЗЕ МП 80Х86
    5.1. Цель работы
    Целью работы является изучение этапов разработки и отладки про- грамм на языке ассемблера 32-разрядных МП 80х86 (или Х86) для реаль- ного режима их работы.
    5.2. Особенности разработки 32-разрядных программ на языке ас-
    семблера
    МП i80x86 для реального режима
    Микропроцессоры i80386, i80486, Pentium имеют режимы: реально- го адреса (R-режима) и защищенного (P-режима).
    Только в Р-режиме МП i386, i486, Pentium выполняют 32-битные программы с использованием всех новых возможностей 32-разрядных МП
    (МП-32):
    1) адресное пространство памяти — 4 Гбайт;
    2) использование 32-битной адресации команд;
    3) новые привилегированные команды для защищенного режима;
    4) применение 32-битных РОНов МП (EAX, EBX, ECX и т.д.);
    5) использование масштабированной индексной адресации, напри- мер: MOV EAX, [EBX+ESI*2+200h] — базовая индексная с масштабиро- ванием и смещением (может содержать до 15 байт);
    6) использование режимов 32-битной адресации данных, включая и новые для МП-32 режимы, например, варианты индексной адресации с масштабированием.
    Однако есть возможность использовать преимущества, указанные в пп. 4-6, если МП-32 работает в реальном режиме.
    Единственный минус – все эти программы для R-режима работают только в сегментах емкостью 64 Кбайт и в памяти 1 Мбайт. Это объясняет- ся тем, что старшие биты А31-А16 эффективного адреса, например [EBX] или [ESI], не изменяются.
    Если используются 32-битные адреса и операнды, то команда
    (рис. 5.1) содержит дополнительные байты – атрибуты: 66h — размер опе- ранда 32 бита; 67h — размер адреса 32 бита.
    По умолчанию ассемблер генерирует коды для 16-разрядного МП i8086.
    Если он встретит команду из другого МП, то транслятор сгенерирует ошибку, что указывает на другой тип используемого МП. Поэтому необ- ходимо указывать тип МП: . 386 . 486.

    37
    Для задания сегментов могут быть использованы директивы
    SEGMENT – начало сегмента и ENDS – конец сегмента.
    Префикс коман- ды REP
    0-1 байт
    Префикс размера адреса
    0-1 байт
    Префикс размера операнда
    0-1 байт
    Префикс замены сегмента
    0-1 байт
    67h
    66h
    КОП
    1 или 2 байта mod reg r/m
    0 или 1 байт
    Масштаб
    0 или 1 байт
    Смещение в команде
    0-2, 4 байта
    Непосредств. операнд
    0-2, 4 байта
    Коэф. 1, 2, 4, 8
    Рис. 5.1. Формат команды МП i80x86
    На рис. 5.2 приведена схема формирования эффективного адреса при
    32-битной адресации для командыmov EAX, [EBX+ESI*2+200h].
    База
    Смещение
    Индекс
    1, 2, 4, 8
    *
    +
    +
    31 31 0
    0
    EBX
    200H
    ESI
    2
    ЕЕА
    Рис. 5.2. Схема формирования адреса EЕА=EBX+ESI*2+200h
    Далее приведен пример 5.1 программы для R-режима с использова- нием 32-битных регистров и 32-битных режимов адресации данных.
    Пример
    5.1. Программа на языке ассемблера МП i486 с использованием
    32-битных регистров и режимов адресации данных для R-режима
    .486 stack1 segment stack use16
    ‘stack’ db
    64 dup(0) ;Стек 64 байта
    stack1 ends dseg segment para use16
    ‘data’ k dd
    +60h ;Переменные k
    r dd
    -10h ; r n dd
    +30h ; n m dd
    0 ;Результат m
    dseg ends cseg segment para use16
    ‘code’ assume cs:cseg,ds:dseg,ss:stack1 begin proc far
    ;Дальняя процедура push ds

    38 sub eax,eax push ax mov ax,dseg ;Указание регистру ds mov ds,ax ; на сегмент данных
    ;Команды программы mov ebx,offset k mov esi,2 mov eax,[ebx] ;Вычисление sub eax,[ebx+esi*2] ; выражения add eax,[ebx+esi*4] ; m= add eax,120h ; = n-r+k+120 mov
    [ebx+8+4],eax mov ah,4ch int
    21h begin endp cseg ends end begin
    В программе применяются индексная с масштабированием адреса- ция данных (см. рис. 5.2) и стандартные директивы ассемблера. В частно- сти, директива USE16 используется для R-режима, при котором МП рабо- тает в сегментах емкостью 64 Кбайт, но с использованием 32-битных реги- стров и режимов адресации данных, хотя адреса команд 16-битные.
    Порядок_выполнения_работы_Порядок__формирования_ЕХЕ-файла_разработанной_32-битной_программы__с_отладочной_информацией'>5.3. Порядок выполнения работы
    Порядок
    формирования ЕХЕ-файла разработанной 32-битной
    программы
    с отладочной информацией
    1. Для созданного исходного файла с расширением .asm выполните последовательность программ: tasm /zi <имя файла>.asm,, tlink /3/v <имя файла>.obj td <имя файла>.exe
    Порядок
    работы в отладчике td.exe:
    2. Войдите в окно регистров
    F10, VIEW, REGISTER [ENTER];
    3. Находясь в окне регистров, вызовите локальное меню (Alt-F10) и установите длину регистров 32 бита
    REGISTER 32 bit
    YES
    4. Установите длину данных 4 байта:
    F10, VIEW, DUMP, Ctrl-D, LONG
    5. Последовательно, нажимая F8, выполните все команды до mov ds, ax (включительно).

    39 6. В окне данных установите начальный адрес данных
    Alt-F10, GOTO, DS:0 [ENTER]
    7. Выполните далее программу по шагам (F8), наблюдая за результа- тами.
    8. Просмотрите кодировку программы: F10, CPU.
    9. Разработайте на языке ассемблера МП X86 32-разрядную про- грамму вычисления заданного в работе 1 варианта выражения. Принять длину операндов 32 бита. Пусть все операнды размещены в памяти. По аналогии с пп. 1-8 произведите отладку программы.
    5.4. Содержание отчета
    1.
    Исходная программа для заданного варианта.
    2.
    Листинг программы.
    3.
    Результаты выполнения программы.
    Лабораторная
    работа № 6
    КОМАНДЫ
    ОБРАБОТКИ ЦЕПОЧЕК МП Х86
    6.1. Цель работы
    Изучение цепочечных команд МП Х86 и их использования в про- граммах обработки цепочек (строк) данных.
    6.2. Цепочечные команды
    Под цепочкой понимается последовательность байт или слов, нахо- дящихся в смежных ячейках памяти. Такую связанную структуру данных образует, например, последовательность вводимых с терминала символов.
    В МП Х86 имеется пять однобайтных цепочечных команд- примитивов (см. Приложение), предназначенных для обработки одного элемента цепочки. Если элементом является байт, то в мнемонике команд указывается буква B, если слово, то – W. Например: MOVSB и MOVSW. В общем случае при обработке строк данных:
    - цепочка-приемник находится в дополнительном сегменте данных и ее элемент адресуется регистром DI,
    - цепочка-источник находится в сегменте данных и ее элемент ад- ресуется регистром SI.
    Задание начальных адресов цепочек приемника STRING1 и источни- ка
    STRING2 производится командами
    LEA
    DI,ES:STRING1 и
    LEA SI,STRING2. Однако обе цепочки можно разместить в сегменте дан- ных, если перед их обработкой сделать равными значения сегментных ре- гистров ES и DS.
    В зависимости от состояния признака направления DF регистра F после каждой операции над элементом цепочки выполняется инкремент

    40
    (DF=0) или декремент (DF=1) указателей DI и SI (при обработке байт – на единицу, при обработке слов – на два).
    Цепочечной команде может предшествовать специальный префикс повторения REP, который заставит МП повторить команду и модифициро- вать CX←CX+1. Операции повторяются, пока CX≠0. Перед командами сравнения CMPS и SCAS мнемоника префикса имеет вид REPZ/REPE или
    REPNZ/REPNE. Для REPZ примитив повторяется, покаCX≠0 или признак
    ZF=1, а для REPNZ – пока CX≠0 или ZF=0.
    Программы, приведенные в примерах 6.1 и 6.2 выполняют одно и то же действие – сравнивают строки, пока не будут просмотрены 100 элемен- тов или пока не встретятся совпадающие элементы.
    Пример
    6.1. Найти совпадения mm1: cmpsb
    ;Сравнить [SI]–[DI], SI←SI+1, DI←DI+1 dec cx
    ; CX←CX-1 jnz mm1 ;Повторять, покаCX≠0 или FZ=0
    Пример
    6.2. Найти совпадения. repnz cmpsb
    ;Те же операции, что и в примере 6.1.
    Используя в примере 6.1 вместо JNZ другие команды условного пе- рехода, можно сравнивать элементы и по другим признакам, например по признаку “больше” или “меньше”.
    В примере 6.3 показана процедура копирования 10 элементов из строки STRING2 в строку STRING1.
    Пример
    6.3. Копирование элементов строки
    ;Пусть цепочки находятся в сегменте данных string2 db ‘Петрова Н., Иванов А.’ ;Цепочка-источник string1 db 10 dup(?) ;Цепочка-приемник
    ;Процедура копирования copir proс push ds
    ;Заставить указывать pop es
    ;на сегмент данных cld
    ;Сброс для обработки слева направо lea si,string2
    ;Адрес цепочки STRING2 в SI lea di,string1
    ;Адрес цепочки STRING1 в DI mov cx,10
    ;Число элементов в CX rep movsb
    ;Скопировать байты ret copir endp
    6.3. Ввод строковых данных в ПЭВМ
    Значения элементов в строке можно задать с помощью директивы
    DB или DW.

    41
    При вводе строки с клавиатуры целесообразно пользоваться функци- ей DOS 0AH, вызываемой командой INT 21H. Чтобы воспользоваться ей, необходимо зарезервировать в сегменте данных место для строки. Напри- мер, оператор string db
    64,65 dup(?) резервирует место для строки STRING, содержащей 64 элемента.
    Чтение строки с клавиатуры в память без изображения на экране производится командами, приведенными в примере 6.4.
    Пример
    6.4. Чтение строки с клавиатуры lea dx, string
    ;Сделать DX указателем буфера mov ah,0ah
    ;Прочитать int
    21h
    ;строку. Ввод завершить нажатием <ВК>
    После их выполнения в 1-м байте буфера STRING находится длина буфера 64, во 2-м – число фактически введенных символов. Элементы строки STRING+2 размещаются с 3-го байта.
    6.4. Варианты заданий
    1.
    Скопировать строку в обратном порядке.
    2.
    Найти строку (список) с ключевым словом.
    3.
    Найти в строке символ и заменить его.
    4.
    Найти в строке символ «точка» и после нее заменить все элементы пробелами.
    5.
    Найти в строке справа налево первый символ «;». Элементы, разме- щенные справа от ; , заменить пробелами.
    6.
    Найти две одинаковые строки и одну из них заменить новой.
    7.
    Составить из 3-х строк (слов) предложение.
    8.
    Подсчитать число элементов в строке до символа ВК.
    9.
    Определить в строке число полей, разделенных пробелами. Найти в строке комбинацию двух символов и заменить их.
    6.5. Порядок выполнения работы
    1.
    Изучите форматы цепочечных команд и примеры программ обработ- ки строк (пп. 6.2 - 6.3).
    2.
    Разработайте для заданного варианта (п. 6.4.) программу обработки строк. Для более наглядного выполнения программы используйте проце- дуры ввода и изображения строк, приведенные в примере 6.4.
    3.
    С помощью системных программ (см. работу 4) сформируйте исход- ный объектный и исполняемый модули.
    4.
    Выполните программы в отладчике TD.
    5.
    Выполните программу в DOS.
    6.5. Содержание отчета
    1.
    Программа для заданного варианта.
    2.
    Результаты выполнения прграммы.

    42
    Библиографический
    список
    1.
    Юров, В.И. Assembler [Текст]/ В.И. Юров.- Учебник для вузов.- 2-е издание.- СПб.: Питер, 2006.- 637 с.: ил.- ISBN: 5-94723-581-1 2.
    Юров, В.И. Assembler. Практика [Текст]/ В.И. Юров.- Учебник для вузов.- 2-е издание.- СПб.- Питер, 2006.- 399 с.: ил.- ISBN: 5-94723-671-0 3.
    Абель, П. Язык ассемблера для IBM PC и программирования
    [Текст]/П. Абель/ Пер. с англ. Ю.В. Сальникова.- М.: Высшая школа,
    1992.-447 с., ил.
    4.
    Пирогов, П.Ю.
    ASSEMBLER.
    Учебный курс
    [Текст]/
    П.Ю. Пирогов.- М.: Издатель Молгачева С.В.- Нолидж, 2001.- 848 с.- ил.-
    ISBN: 5-89251-101-4 5.
    Микропроцессоры Intel 80х86. Архитектура и программирование:
    Методические указания к лабораторным работам / Рязан. гос. радиотехн. акад.; Сост. В.Н. Локтюхин. Рязань, 2007. 68 с.

    43
    СОДЕРЖАНИЕ
    Введение……………………………………………………………………….
    1. Лабораторная работа 1………………….………….....................................
    3 3
    2. Лабораторная работа 2..................…...........................................................
    17 3. Лабораторная работа 3..............…...............................................................
    26 4. Лабораторная работа 4........…….................................................................
    31 5. Лабораторная работа 5...…..........................................................................
    36 6. Лабораторная работа 6…………………………………………………….
    Библиографический список ………..………………………………………..
    39 42
    Приложение. Система команд МП Intel 8086…............................................
    44

    44
    Приложение
    СИСТЕМА
    КОМАНД МП Intel 8086
    При описании команд используются следующие обозначения: reg - один из РОН в соответствии со следующей таблицей: reg
    000 010 100 110
    W=1
    AX
    DX
    SP
    SI
    W=0
    AL
    DL
    AH
    DH reg
    001 011 101 111
    W=1
    CX
    BX
    BP
    DI
    W=0
    CL
    BL
    CH
    BH sreg
    00 01 10 11
    Сегм. рег.
    ES
    CS
    SS
    DS
    D - если D=l, то в reg, если D=0, то из reg;
    W - если W=l, то команда оперирует словом, - W=0, то - байтом;
    Х0- один байт данных.
    S:W =
    01 - два байта данных,
    11 - один байт данных, расширенный со знаком до 16 бит;
    V - если V=0, то счетчик равен 1, V=l - счетчик в CL;
    Z - применяется в цепочечных командах для сравнения с ZF; data L, data H - младшая и старшая часть (если W=l) непосредственного операнда; mod - поле режима адресации; r/m - при mod=11 интерпретируется как reg, при mod

    11 определяет эффективный адрес (ЕА) операнда в памяти в соответствии со следующей таблицей, в которой disp
    L, disp H,L - 8- и 16-битные смещения в 3-м или в (3-4)-м бай- тах команды: mod r/m
    00 01 10 000 001 010 011 100 101 110 111
    (BX)+(SI)
    (BX)+(DI)
    (BP)+(SI)
    (BP)+(DI)
    (SI)
    (DI) disp H,L
    (BX)
    (BX)+(SI)+disp L
    (BX)+(DI)+disp L
    (BP)+(SI)+disp L
    (BP)+(DI)+disp L
    (SI)+disp L
    (DI)+disp L
    (BP)+disp L
    (BX)+disp L
    (BX)+(SI)+disp H,L
    (BX)+(DI)+disp H,L
    (BP)+(SI)+disp H,L
    (BP)+(DI)+disp H,L
    (SI)+disp H,L
    (DI)+disp H,L
    (BP)+disp H,L
    (BX)+disp H,L
    Команды передачи данных
    Команды
    1-й байт
    2-й байт
    3-й байт
    4-й байт
    MOV – передать
    Регистр или память в/из ре- гистра
    100010DW mod reg r/m
    Непосредственный операнд в регистр или память
    1100011W mod 000 r/m data L data H
    (W=1)

    45
    Непосредственный операнд в регистр (спецформат)
    1011Wreg data L data H,
    (W=1)
    Память в аккумулятор
    (спецформат)
    1010000W
    Мл. адрес EA ст. адрес
    EA
    Аккумулятор в память
    (спецформат)
    1010001W
    Мл. адрес EA ст. адрес
    EA
    Регистр или память в регистр сегмента
    10001110 mod 0 sreg r/m
    Регистр сегмента в регистр или память
    10001100 mod 0 sreg r/m
    PUSH – включить в стек
    Регистр/память
    11111111 mod 110 r/m
    Регистр (спецформат)
    01010reg
    Регистр сегмента
    000sreg110
    POP – исключить
    Регистр/память из стека
    10001111 mod 000 r/m
    Регистр (спецформат)
    01011reg
    Регистр сегмента
    000sreg111
    XCHG – обменять
    Регистр/память с регистром
    1000011W mod reg r/m
    Регистр с аккумулятором
    10010reg
    IN – ввести из
    Фиксированного порта
    1110010W
    Порт
    Переменного порта
    1110110W
    OUT – вывести в
    Переменный порт
    1110111W
    Фиксированный порт
    1110110W
    Порт
    XLAT – передать байт в AL
    11010111
    LEA – загрузить EA в регистр
    10001101 mod reg r/m
    LDS–загрузить указатель в DS
    11000101 mod reg r/m
    LES–загрузить указатель в ES
    11000100 mod reg r/m
    LAHF – загрузить в AH при- знаки
    10011111
    SAHF – запомнить AH в регистре признаков
    10011110
    PUSHF – включить признаки
    10011100
    POPF – исключить признаки
    10011101
    Команды арифметических операций
    Команды
    1-й байт
    2-й байт
    3-й байт
    4-й байт
    ADD – сложить
    Регистр/память с регистром
    000000DW mod reg r/m

    46
    Непосредственный операнд c регистром/памятью
    100000SW mod 000 r/m data L data H
    (SW=01)
    Непосредственный операнд с аккумулятором
    0000010W data L data H,
    (w=1)
    ADC – сложить с переносом
    Регистр/память с регистром
    000100DW mod reg r/m
    Непосредственный операнд c регистром/памятью
    100000SW mod 010 r/m data L data H
    (SW=01)
    Непосредственный операнд с аккумулятором
    0001010W data L data H,
    (w=1)
    INC – инкремент
    Регистра/памяти
    1111111W mod 000 r/m
    Регистра
    01000reg
    AAA – ASCII – коррекция сложения
    00110111
    DAA – десятичная коррекция сложения
    00100111
    SUB – вычесть
    Регистр/память с регистром
    001010DW mod reg r/m
    Непосредственный операнд из регистра/памяти
    100000SW mod 101 r/m data L data H
    (SW=01)
    Непосредственный операнд из аккумулятора
    0010110W data L data H,
    (w=1)
    SBB – вычесть с заемом
    Регистр/память с регистром
    000110DW mod reg r/m
    Непосредственный операнд из регистра/памяти
    100000SW mod 011 r/m data L data H
    (SW=01)
    Непосредственный операнд из аккумулятора
    0010110W data L data H,
    (w=1)
    DEC – декремент
    Регистр/память
    1111111W mod 001 r/m
    Регистр
    01001reg
    NEG – изменить знак
    1111011W mod 011 r/m
    CMP - сравнить
    Регистр/память и регистр
    001110DW mod reg r/m
    Непосредственный операнд c регистром/памятью
    100000SW mod 111 r/m data L data H
    (SW=01)
    Непосредственный операнд с аккумулятором
    0011110W data L data H,
    (w=1)
    AAS – ASCII коррекция вы- читания
    00111111
    DAS – десятичная коррекция вычитания
    00101111
    IMUL – умножение целых со знаком
    1111011W mod 101 r/m

    47
    MUL – умножение без знака
    1111011W mod 100 r/m
    AAM – ASCII – коррекция умножения
    11010100 00 001 010
    DIV – деление без знака
    1111011W mod 110 r/m
    IDIV – деление со знаком
    1111011W mod 111 r/m
    AAD – ASCII коррекция де- ления
    11010101 00 001 010
    CBW – преобразование байта в слово
    10011000
    CWD – преобразование сло- ва в двойное слово
    10011001
    Команды логических операций и сдвигов
    Команды
    1-й байт
    2-й байт
    3-й байт
    4-й байт
    NOT – инвертирование
    1111011W mod 010 r/m
    SHL/SAL – сдвиг логиче- ский/арифм. влево
    110100VW mod 100 r/m
    SHR – сдвиг логич. вправо
    110100VW mod 101 r/m
    SAR – сдвиг арифм. вправо
    110100VW mod 111 r/m
    ROL – сдвиг цикл. влево
    110100VW mod 000 r/m
    ROR – сдвиг цикл. вправо
    110100VW mod 001 r/m
    RCL – сдвиг цикл. влево
    110100VW mod 010 r/m
    RCR – сдвиг цикл. вправо через перенос
    110100VW mod 011 r/m
    AND – коньюнкция И
    Регистр/память с регистром
    001000DW mod reg r/m
    Непосредственный операнд c регистром/памятью
    1000000W mod 100 r/m data L data H
    (W=1)
    Непосредственный операнд с аккумулятором
    0010010W data L data H
    (W=1)
    TEST – И без записи результ.
    Непосред. операнд с аккум.
    1010100DW data L data H
    Регистр/память с регистром
    1000010W mod reg r/m
    Непосредственный операнд c регистром/памятью
    1111011W mod 000 r/m data L data H
    (W=1)
    OR – дизьюнкция ИЛИ
    Регистр/память с регистром
    000010DW mod reg r/m
    Непосредственный операнд c регистром/памятью
    1000000W mod 001 r/m
    Непосредственный операнд с аккумулятором
    0000110W data L data H
    (W=1)
    XOR – ИЛИ исключающее
    Регистр/память с регистром
    001100DW mod reg r/m
    Непосредственный операнд c регистром/памятью
    1000000W mod 001 r/m data L data H
    (W=1)
    Непосредственный операнд с
    0011010W data L data H

    48 аккумулятором
    (W=1)
    Команды операций с цепочками данных
    Команды
    1-й байт
    REP - повторить
    1111001Z
    MOVS – передать байт/слово: [DI]

    [SI]
    1010010W
    CMPS – сравнить байт/слово: [DI]

    [SI]
    1010011W
    SCAS – сканировать байт/слово: асс

    [DI]
    1010111W
    LODS – загрузить байт/слово из [SI] в AL/AX
    1010110W
    STOS – запомнить байт/слово из AL/AX в[DI]
    1010101W
    Команды передачи управления (безусловные)
    Команды
    1-й байт
    2-й байт
    3-й байт
    CALL – ВЫЗОВ
    Прямой в сегменте
    11101000
    Мл. смещ.
    Ст. смещ.
    Косвенный в сегменте
    11111111 mod 010 r/m
    Прямой межсегментный
    10011010
    Мл. смещ.
    Ст. смещ.
    Мл. сег. (4-й байт)
    Мл.сег.(5-й байт)
    Косвенный межсегментный
    (mod

    11)
    11111111 mod 011 r/m
    JMP – БЕЗУСЛ. ПЕРЕХОД
    Прямой в сегменте
    11101001
    Мл. смещ.
    Ст. смещ.
    Прямой в сегменте короткий
    11101011
    Смещение
    Косвенный в сегменте
    11111111 mod 100 r/m
    Прямой межсегментный
    11101010
    Мл. смещ.
    Ст. смещ.
    Мл. сег.(4-й байт)
    Мл.сег.(5-й байт)
    Косвенный межсегментный
    (mod

    11)
    11111111 mod 101 r/m
    RET – ВОЗВРАТ
    В сегменте со слож. непо- средст. операнда с SP
    11000010 data L data H
    В сегменте
    11000010
    Межсегментный
    11001011
    Межсегментный со слож. непосредст. операнда с SP
    11001010 data L data H
    Команды условных переходов и циклов
    Команды
    Условие
    JA/JNBE
    CF

    ZF=0
    >
    77 Смещ.
    Перейти, если выше
    *
    /не ниже или равно
    JNC/JAE/JNB
    CF=0
    >=
    73 Смещ.
    Выше или равно/ не ниже
    (нет переноса)
    JC/JB/JNAE
    CF=1
    <
    72 Смещ.
    Ниже/не выше или равно
    (есть перенос)
    JBE/JNA
    CF

    ZF=1
    <=
    76 Смещ.
    Ниже или равно/не выше

    49
    JE/JZ
    ZF=1
    =
    74 Смещ.
    Равно/нуль
    JG/JNLE
    (SF+OF)ZF=0
    >
    7F Смещ.
    Больше
    *
    /не меньше и =
    JGE/JNL
    SF+OF=0
    >=
    7D Смещ.
    Больше или равно/не меньше
    JL/JNGE
    SF+OF=1
    <
    7C Смещ.
    Меньше/не больше или равно
    JLE/JNG
    (SF+OF)ZF=1
    <=
    7E Смещ.
    Меньше или равно/не рав- но
    JNZ/JNE
    ZF=0 75 Смещ.
    Не равно/не нуль
    JNO
    OF=0 71 Смещ.
    Нет переполнения
    JNP/JPO
    PF=0 7B Смещ.
    Нет паритета/паритет не- четный
    JNS
    SF=0 79 Смещ.
    Нет знака (отрицание)
    JO
    OF=1 70 Смещ.
    Есть переполнение
    JP/JPE
    PF=1 7A Смещ.
    Есть паритет/паритет чет- ный
    JS
    SF=1 78 Смещ.
    Есть знак (отрицательный)
    JCNX
    (CX)=0
    E3 Смещ.
    Содержение регистра
    CX=0
    LOOP
    (CX)

    0
    E2 Смещ.
    Зациклить CX раз
    LOOPZ/LOOPE
    (CX)

    0, ZF=1
    E1 Смещ.
    Зациклить до нуля/равно
    LOOPNZ/LOOPNE (CX)

    0, ZF=0
    E0 Смещ.
    Зацикл. до нуля/не равно
    * Термины “больше”, “меньше” относятся к знаковым числам, представленным в ДК, а
    “выше”, “ниже” – к беззнаковым.
    Команды прерывания
    Команды
    1-й байт
    2-й байт
    INT - прерывание
    11001101
    Тип
    INT 3 – прерывание типа 3 11001100
    INTO – прерывание по переп.
    11001110
    IRET – возврат из прерывания
    11001111
    Команды управления микропроцессором
    Команды
    1-й байт
    2-й байт
    CLC – сброс переноса
    11111000
    CMC – дополнение переноса
    11110101
    STC – установка переноса
    11111001
    STD – установка направления
    11111101
    CLD – сброс направления
    11111100
    CLI – брос прерываний
    11111010
    STI – установка прерываний
    11111011
    HLT – останов
    11110100
    WAIT – ожидание
    10011011
    ESC – обращение к сопроцес.
    11011xxx mod yyy r/m
    LOCK – префикс блокировки
    11110000
    Префикс замены сегмента:
    001sreg110

    50
    Учебное издание
    Чернов
    Андрей Владимирович
    Тишина
    Анджела Викторовна
    АРХИТЕКТУРА
    ИНФОРМАЦИОННЫХ СИСТЕМ
    Учебно-методическое пособие для выполнения лабораторных и практических работ
    Часть 1
    Микропроцессоры INTEL 80X86
    «Электронный университет» ФГБОУ ВО РГУПС
    Адрес университета:
    344038, Ростов н/Д, пл. Ростовского Стрелкового Полка Народного
    Ополчения, 2.
    1   2   3   4


    написать администратору сайта