- •Федеральное агентство по образованию
- •В.Н. ЛОКТЮХИН
- •Рязань 2008
- •Печатается по решению редакционно-издательского совета Государственного образовательного учреждения высшего профессионального образования «Рязанский государственный университет имени С.А. Есенина» в соответствии с планом изданий на 2008 год.
- •ВВЕДЕНИЕ
- •1.1. Системы счисления, применяемые в ЭВМ
- •1. Двоичная система счисления
- •2. Шестнадцатеричная система счисления
- •1.5. Кодирование алфавитно-цифровой информации
- •Представление чисел в ЭВМ
- •Форматы (формы представления) числовых данных в МП
- •3. Представление многобайтовых двоичных чисел
- •4. Представление чисел с плавающей точкой (ПТ)
- •1.7.2. Сложение двоичных чисел в ЭВМ
- •Рис. 2.2. Формат регистра признаков
- •2.1.2. Модели доступа к памяти в реальном и защищенном режимах работы процессора, поддержка многозадачности
- •Формат команды и способ адресации как элементы программной архитектуры и ассемблера
- •3. ОСНОВЫ РАЗРАБОТКИ И ОТЛАДКИ ПРОГРАММ НА ЯЗЫКЕ АССЕМБЛЕРА IBM PC
- •В таблице 3.1 приведены примеры записи в программах директив ассемблера tasm.exe фирмы Borland.
- •Таблица 3.1
- •Примеры записи директив ассемблера tasm
- •Пример 3.4
- •Пример 3.5
- •.MODEL
- •3.3.1. Разновидности программного обеспечения для разработки программ на языке ассемблера
- •3.3.3. Порядок ввода и отладки программы (пример 3.4) с исполняемым com-модулем
- •Создание исполняемого модуля
- •Порядок разработки программы
- •Пример 3.6
- •Ассемблирование
- •Создание исполняемого модуля
- •Выполнение и отладка программы
- •3.8. Программирование обработки цепочек данных
- •ПРИЛОЖЕНИЯ
- •Приложение 1
- •Варианты заданий к практическим занятиям по представлению данных и выполнению арифметико-логических операций в ЭВМ
- •Приложение 2
- •Приложение 3
- •Приложение 4
- •Приложение 6
- •Таблица сложения 16-ричных цифр (символов)
- •Приложение 8
- •Базовая система команд МП 80Х86 (или 8086)
- •ОГЛАВЛЕНИЕ
- •ВВЕДЕНИЕ………………………...………...……………………......
- •Системы счисления, применяемые в ЭВМ……...………………
- •Перевод из десятичной в q-ичную систему счисления.....……
- •Перевод из q-ичной в десятичную систему счисления….....…
- •ПРИНЦИПЫ ДОСТУПА К ПАМЯТИ. ФОРМАТЫ КОМАНД И РЕЖИМЫ АДРЕСАЦИИ В МП 80Х86…………………...….....
- •Регистры и модели доступа к памяти. Поддержка многозадачности в защищенном режиме работы МП………..
- •Приложение 1. Варианты практических заданий по представлению данных и выполнению арифметико-логических операций в ЭВМ..
- •Приложение 5. Варианты заданий по обработке цепочек…………..
- •Приложение 6. Таблица сложения 16-ричных цифр (символов)……
- •Приложение 7. Темы практических занятий и лабораторных работ
- •Приложение 8. Базовая система команд МП 80х86 (или 8086)….....
- •архитектура
- •Книга 2
Приложение 6
Таблица сложения 16-ричных цифр (символов)
+ |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
A |
B |
C |
D |
E |
F |
0 |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
A B C D E |
F |
||||
1 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
A B C D E |
F |
10 |
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
A B C D E |
F |
10 |
11 |
||||
3 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
A B C D E |
F |
10 |
11 |
12 |
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4 |
4 |
5 |
6 |
7 |
8 |
9 |
A B C D E |
F |
10 |
11 |
12 |
13 |
||||
5 |
5 |
6 |
7 |
8 |
9 |
A B C D E |
F |
10 |
11 |
12 |
13 |
14 |
||||
6 |
6 |
7 |
8 |
9 |
A |
B |
C |
D |
E |
F |
10 |
11 |
12 |
13 |
14 |
15 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7 |
7 |
8 |
9 |
A |
B |
C |
D |
E |
F |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
8 |
8 |
9 |
A |
B |
C |
D |
E |
F |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9 |
9 |
A |
B |
C |
D |
E |
F |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
A |
A |
B |
C |
D |
E |
F |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
B |
B |
C |
D |
E |
F |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
1A |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
C |
C |
D |
E |
F |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
1A |
1B |
D |
D |
E |
F |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
1A |
1B |
1C |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
E |
E |
F |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
1A |
1B |
1C |
1D |
F |
F |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
1A |
1B |
1C |
1D |
1E |
87
Примечание. При сложении двух 16-ричных чисел последовательно складываются соответствующие i-е цифры слагаемых. Получаемая при этом единица переноса прибавляется к сумме цифр слагаемых, получаемой в следующем (i + 1)-м разряде.
Приложение 7
Темы практических занятий
илабораторных работ
1.Представление данных. Машинные коды (ПЗ, приложение 1,
п. 1.1–1.5, КР).
2.Выполнение арифметических операций в ЭВМ, формирование физического адреса (ПЗ, приложение 1, п. 1.7, 2.1.2, КР).
3.Изучение состава автоматизированной обучающей системы (АОС) «Микропроцессоры 80х86». Принципы работы с АОС при проведении тестирования (ЛР).
4.Кодирование последовательности команд МП 80х86 для заданного варианта выполняемой операции (ПЗ, затем их проверка в ходе ЛР по теме 6, приложение 2, п. 2.1–2.5, О, Т).
5.Форматы и режимы адресаций МП 80х86. Формирование кодов команд для различных режимов адресации данных (ПЗ, ЛР по аналогии с темой 4, приложение 3, п. 2.6–2.7, О, Т).
6.Элементы программирования на ассемблере IBM PC, разработка фрагментов программ с использованием команд и директив ассемблера (ПЗ, п. 3.1, О, Т).
7.Разработка и отладка линейных программ для создания исполняемых модулей с расширением .СОМ (ПЗ – разработка программы, ЛР – ее отладка, приложение 3, п. 3.2–3.3, О, Т).
88
8.Разработка и отладка циклических программ для создания исполняемых модулей с расширением .EXE (ПЗ и ЛР по аналогии с п. 7, приложение 4, варианты 1–10, п. 3.4–3.5, О).
9.Разработка и отладка 32-разрядных программ, их отладка (ЛР, приложение 2, п. 3.6, О).
10.Разработка программы с использованием процедуры, а затем с макроопределением вывода на экран, например, фамилий известных футболистов (ЛР, п. 3.7, О).
11.Разработка программ с использованием цепочечных команд, их отладка (ЛР, приложение 5, п. 3.8, О).
Примечания. 1. Принятые сокращения: ЛР – лабораторная работа, ПЗ – практические занятия, Т – тестирование, КР – контрольная работа, О – отчет,
п.– разделы учебного пособия.
2.При выполнении тем 4 и 5 для правильности кодирования команд можно также применять транслятор trans.exe. При этом следует воспользоваться порядком работы (п. 3.3.3), в котором исключить п. 5–7, а в п. 4. вместо команды tasm.exe и расширения .asm задавать trans.exe и .txt – как последовательность кодов команд таблицы 2.2.
Приложение 8
Базовая система команд МП 80Х86 (или 8086)
При описании команд используются следующие обозначения: reg – один из РОН в соответствии со следующей таблицей:
reg |
W = 1 |
W = 0 |
reg |
W = 1 |
W = 0 |
sreg |
Сегментный регистр |
000 |
AX |
AL |
001 |
CX |
CL |
00 |
ES |
010 |
DX |
DL |
011 |
BX |
BL |
01 |
CS |
100 |
SP |
AH |
101 |
BP |
CH |
10 |
SS |
110 |
SI |
DH |
111 |
DI |
BH |
11 |
DS |
D – если D = l, то в reg, если D = 0, то из reg;
W – если W = l, то команда оперирует словом, если W = 0, то – байтом;
S:W = Х0 – один байт данных, 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-битовые смещения в третьем или в третьем-четвертом байтах команды:
mod |
00 |
01 |
10 |
r/m |
|
|
|
89
000 |
|
(BX) + (SI) |
|
(BX) + (SI) + disp L |
|
(BX) + (SI) + disp H,L |
|
||||
001 |
|
(BX) + (DI) |
|
(BX) + (DI) + disp L |
|
(BX) + (DI) + disp H,L |
|
||||
010 |
|
(BP) + (SI) |
|
(BP) + (SI) + disp L |
|
(BP) + (SI) + disp H,L |
|
||||
011 |
|
(BP) + (DI) |
|
(BP) + (DI) + disp L |
|
(BP) + (DI) + disp H,L |
|
||||
100 |
|
(SI) |
|
(SI) + disp L |
|
|
(SI) + disp H,L |
|
|
||
101 |
|
(DI) |
|
(DI) + disp L |
|
|
(DI) + disp H,L |
|
|
||
110 |
|
disp H,L |
|
(BP) + disp L |
|
|
(BP) + disp H,L |
|
|
||
111 |
|
(BX) |
|
(BX) + disp L |
|
|
(BX) + disp H,L |
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Команды передачи данных |
|
|
|||||
Команды |
|
|
1-й байт |
2-й байт |
|
3-й байт |
|
4-й байт |
|||
|
|
1 |
2 |
3 |
|
|
4 |
|
5 |
||
MOV – передать |
|
|
|
|
|
|
|
|
|
||
Регистр или память |
100010DW |
mod reg r/m |
|
|
|
|
|||||
в/из регистра |
|
|
|
|
|
|
|
|
|
||
Непосредственный |
1100011W |
mod 000 r/m |
data L |
|
data H |
||||||
операнд в регистр |
|
|
|
|
|
|
|
(w = 1) |
|||
или в память |
|
|
|
|
|
|
|
|
|
||
Непосредственный |
1011Wreg |
data L |
|
data H, |
|
|
|
||||
операнд в регистр |
|
|
|
|
|
(w = 1) |
|
|
|
||
|
|
|
|
|
|
|
|
Продолжение таблицы |
|||
|
|
1 |
2 |
3 |
|
|
4 |
|
5 |
||
Память в |
|
1010000W |
Мл адрес EA |
Ст адрес EA |
|
|
|
||||
аккумулятор |
|
|
|
|
|
|
|
|
|
||
(спецформат) |
|
|
|
|
|
|
|
|
|
||
Аккумулятор в |
1010001W |
Мл. адрес |
|
Cт адрес EA |
|
|
|
||||
память |
|
|
|
EA |
|
|
|
|
|
||
(спецформат) |
|
|
|
|
|
|
|
|
|
||
Регистр или память |
10001110 |
mod0sreg r/m |
|
|
|
|
|||||
в регистр сегмента |
|
|
|
|
|
|
|
|
|
||
Регистр сегмента |
10001100 |
mod0sreg 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 |
|
|
|
|
|
|
|
|
90
с аккумулятором |
|
|
|
|
IN – ввести из |
|
|
|
|
Фиксирован. порта |
1110010W |
Порт |
|
|
Переменного порта |
1110110W |
|
|
|
OUT – вывести в |
|
|
|
|
Переменный порт |
1110111W |
|
|
|
Фиксир. порт |
1110110W |
Порт |
|
|
XLAT – передать |
11010111 |
|
|
|
байт в AL |
|
|
|
|
LEA – загрузить EA |
10001101 |
mod reg r/m |
|
|
в регистр |
|
|
|
|
LDS – загрузить |
11000101 |
mod reg r/m |
|
|
указатель в DS |
|
|
|
|
LES – загрузить |
11000100 |
mod reg r/m |
|
|
указатель в ES |
|
|
|
|
LAHF – загрузить |
10011111 |
|
|
|
в AH признаки |
|
|
|
|
SAHF – запомнить |
10011110 |
|
|
|
AH в регистре F |
|
|
|
|
PUSHF – включить |
10011100 |
|
|
|
признаки |
|
|
|
|
POPF – исключить |
10011101 |
|
|
|
признаки |
|
|
|
|
|
Команды арифметических операций |
|
||
Команды |
1-й байт |
2-й байт |
3-й байт |
4-й байт |
1 |
2 |
3 |
4 |
5 |
ADD – сложить |
|
|
|
|
Регистр/память |
000000DW |
mod reg r/m |
|
|
с регистром |
|
|
|
|
Непосредственный |
100000SW |
mod 000 r/m |
data L |
data H |
операнд c |
|
|
|
(SW = 01) |
регистром/памятью |
|
|
|
|
Непосредственный |
0000010W |
data L |
data H, |
|
операнд с аккум. |
|
|
(w = 1) |
|
ADC – сложить |
|
|
|
|
с переносом |
|
|
|
|
Регистр/память |
000100DW |
mod reg r/m |
|
|
с регистром |
|
|
|
|
Непосредственный |
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 |
|
|
|
91
AAA – ASCII – |
00110111 |
|
|
|
|
коррекция сложения |
|
|
|
|
|
DA – десятичная |
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) |
|
из аккумулятора |
|
|
|
|
|
|
|
|
|
Продолжение таблицы |
|
1 |
2 |
3 |
|
4 |
5 |
DEC – декремент |
|
|
|
|
|
Регистр/память |
1111111W |
mod 001 r/m |
|
|
|
Регистр |
01001reg |
|
|
|
|
NEG – изменить |
1111011W |
mod 011 r/m |
|
|
|
знак |
|
|
|
|
|
CMP – сравнить |
|
|
|
|
|
Регистр/память |
001110DW |
mod reg r/m |
|
|
|
и регистр |
|
|
|
|
|
Непосредственный |
100000SW |
mod 111 r/m |
|
data L |
data H |
операнд |
|
|
|
|
(SW = 01) |
c регистром/памятью |
|
|
|
|
|
Непосредственный |
0011110W |
data L |
|
data H, |
|
операнд с аккум. |
|
|
|
(w = 1) |
|
AAS – ASCII |
00111111 |
|
|
|
|
коррекция |
|
|
|
|
|
вычитания |
|
|
|
|
|
DAS – десятичная |
00101111 |
|
|
|
|
коррекция |
|
|
|
|
|
вычитания |
|
|
|
|
|
IMUL – умножение |
1111011W |
mod 101 r/m |
|
|
|
целых со знаком |
|
|
|
|
|
MUL – умножение |
1111011W |
mod 100 r/m |
|
|
|
|
|
|
|
|
|
92
без знака |
|
|
|
|
AAM –АSCII |
11010100 |
|
|
|
коррекция |
|
|
|
|
умножения |
|
|
|
|
DIV – деление |
1111011W |
mod 110 r/m |
|
|
без знака |
|
|
|
|
IDIV – деление |
1111011W |
mod 111 r/m |
|
|
со знаком |
|
|
|
|
AAD – ASCII |
11010101 |
|
|
|
коррекция деления |
|
|
|
|
CBW – |
10011000 |
|
|
|
преобразование |
|
|
|
|
байта в слово |
|
|
|
|
CWD – |
10011001 |
|
|
|
преобразование |
|
|
|
|
слова |
|
|
|
|
в двойное слово |
|
|
|
|
|
Команды логических операций и сдвигов |
|
||
Команды |
1-й байт |
2-й байт |
3-й байт |
4-й байт |
1 |
2 |
3 |
4 |
5 |
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 |
|
|
арифметический |
|
|
|
|
вправо |
|
|
Продолжение таблицы |
|
|
|
|
||
1 |
2 |
3 |
4 |
5 |
ROL – сдвиг |
110100VW |
mod 000 r/m |
|
|
циклический влево |
|
|
|
|
ROR – сдвиг |
110100VW |
mod 001 r/m |
|
|
циклический вправо |
|
|
|
|
RCL – сдвиг |
110100VW |
mod 010 r/m |
|
|
циклический влево |
|
|
|
|
через перенос |
|
|
|
|
RCR – сдвиг цикл. |
110100VW |
mod 011r/m |
|
|
впр. через перенос |
|
|
|
|
AND – коньюнкция |
|
|
|
|
Регистр/память |
001000DW |
mod reg r/m |
|
|
с регистром |
|
|
|
|
Непосредственный |
1000000W |
mod 100 r/m |
data L |
data H (w = 1) |
операнд c |
|
|
|
|
регистром/памятью |
|
|
|
|
с аккумулятором |
0010010W |
data L |
data H (w = 1) |
|
93
TEST – И без записи |
|
|
|
|
результата |
|
|
|
|
Непосред. операнд |
101010DW |
data L |
data H |
|
с аккумулятором |
|
|
|
|
Регистр/память |
1000010W |
mod reg r/m |
|
|
с регистром |
|
|
|
|
Непосредственный |
1111011W |
mod 000r/m |
data L |
data H (w = 1) |
операнд |
|
|
|
|
c регистром/памятью |
|
|
|
|
OR – дизьюнкция |
|
|
|
|
ИЛИ |
|
|
|
|
Регистр/память |
000010DW |
mod reg r/m |
|
|
с регистром |
|
|
|
|
Непосредственный |
1000000W |
mod 001r/m |
|
|
операнд |
|
|
|
|
c регистром/памятью |
|
|
|
|
с аккумулятором |
0000110W |
data L |
data H (w = 1) |
|
XOR – ИЛИ |
|
|
|
|
исключающее |
|
|
|
|
Регистр/память |
001100DW |
mod reg r/m |
|
|
с регистром |
|
|
|
|
Непосредственный |
1000000W |
mod 001r/m |
data L |
data H (w = 1) |
операнд c |
|
|
|
|
регистром/памятью |
|
|
|
|
с аккумулятором |
0011010W |
data L |
data H (w = 1) |
|
Команды операций с цепочками данных |
|
|
|
|
||
Команды |
|
|
|
1-й байт |
|
|
REP – повторить |
|
|
|
1111001Z |
|
|
MOVS – передать байт/слово: [DI] ← [SI] |
|
1010010W |
|
|
||
CMPS – сравнить байт/слово: [DI] ← [SI] |
|
1010011W |
|
|
||
SCAS – сканировать байт/слово: асс ← [DI] |
|
1010111W |
|
|
||
LODS – загрузить байт/слово из |
|
1010110W |
|
|
||
[SI] в AL/AX |
|
|
|
|
|
|
STOS – запомнить байт/слово из AL/AX в [DI] |
|
1010101W |
|
|
||
Команды передачи управления (безусловные) |
|
|||||
Команды |
1-й байт |
|
|
2-й байт |
3-й байт |
|
CALL – ВЫЗОВ |
|
|
|
|
|
|
Прямой в сегменте |
11101000 |
|
|
Мл смещение |
Ст смещение |
|
Косвенный в сегменте |
11111111 |
|
|
mod 010 r/m |
|
|
Прямой межсегментный |
10011010 |
|
|
Мл смещение |
Ст смещение |
|
|
|
|
сегмент (4-й байт) |
сег (5-й байт) |
||
Косвенный межсегментный |
11111111 |
|
|
mod 011 r/m |
|
|
94
(mod ¹ 11) |
|
|
|
|
|
|
JMP – БЕЗУСЛ ПЕРЕХОД |
|
|
|
|
|
|
Прямой в сегменте |
|
11101001 |
Мл смещение |
Ст смещение |
||
Прямой в сегменте короткий |
11101011 |
Смещение |
|
|||
Косвенный в сегменте |
|
11111111 |
mod 100 r/m |
|
||
Прямой межсегментный |
|
11101010 |
Мл смещение |
Ст смещение |
||
|
|
|
|
сегмент (4-й байт) |
сегм (5-й байт) |
|
Косвенный межсегментный |
|
11111111 |
mod 101 r/m |
|
||
mod ¹ 11 |
|
|
|
|
|
|
RET – ВОЗВРАТ |
|
|
|
|
|
|
В сегменте со сложением |
|
11000010 |
data L |
data H |
||
непосредст операнда с SP |
|
|
|
|
|
|
В сегменте |
|
|
11000010 |
|
|
|
Межсегментный |
|
11001011 |
|
|
||
Межсегментный со |
|
11001010 |
data L |
data H |
||
сложением |
|
|
|
|
|
|
непосредственного операнда |
|
|
|
|
||
с SP |
|
|
|
|
|
|
|
Команды условных переходов и циклов |
|
||||
Команды |
Условие |
|
1-й |
2-й |
Условие |
|
|
|
|
байт |
байт |
|
|
JA/JNBE |
CF È ZF = 0 |
> |
77 |
Смещ |
Перейти, если выше /не |
|
|
|
|
|
|
ниже или равно |
|
JNC/JAE/ |
CF = 0 |
>= |
73 |
Смещ |
Выше или равно/не ниже |
|
JNB |
|
|
|
|
(нет переноса) |
|
JC/JB/ |
CF = 1 |
< |
72 |
Смещ |
Ниже/не выше или равно |
|
JNAE |
|
|
|
|
(есть перенос) |
|
JBE/JNA |
CF È ZF = 1 |
<= |
76 |
Смещ |
Ниже или равно/не выше |
|
JE/JZ |
ZF = 1 |
= |
74 |
Смещ |
Равно/нуль |
|
JG/JNLE |
(SF+OF)ZF= |
> |
7F |
Смещ |
Больше /не меньше и = |
|
|
=0 |
|
|
|
Продолжение таблицы |
|
|
|
|
|
|
||
1 |
2 |
3 |
4 |
5 |
6 |
|
JGE/JNL |
SF + OF = 0 |
>= |
7D |
Смещ |
Больше или =/не меньше |
|
JL/JNGE |
SF + OF = 1 |
< |
7C |
Смещ |
Меньше/не больше или = |
|
JLE/JNG |
(SF+OF)ZF= |
<= |
7E |
Смещ |
Меньше или равно/не равно |
|
|
=1 |
|
|
|
|
|
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 |
|
95
LOOP |
(CX) ¹ 0 |
E2 |
Смещ |
Зациклить CX раз |
LOOPZ/ |
(CX) ¹ 0, |
E1 |
Смещ |
Зациклить до нуля/равно |
LOOPE |
ZF = 1 |
|
|
|
LOOPNZ/ |
(CX) ¹ 0, |
E0 |
Смещ |
Зациклить до нуля/не равно |
LOOPNE |
ZF = 0 |
|
|
|
Примечание. Термины больше, меньше относятся к знаковым числам, представленным в ДК, а выше, ниже – к беззнаковым.
Команды прерывания |
|
|
Команды |
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 m |
|
LOCK – префикс блокировки11110000 |
|
|
Префикс замены сегмента: 001sreg110
СПИСОК РЕКОМЕНДУЕМОЙ ЛИТЕРАТУРЫ
1.Григорьев, В.Л. Микропроцессор i486. Архитектура и программирование : в 4 кн. – Кн. 1 : Программная архитектура. – М. : ГРАНАЛ, 1993. – 346 с.
2.Григорьев, В.Л. Программирование однокристальных микропроцессоров. – М. : Энергоатомиздат, 1987. – 288 с.
3.Зубков, С.В. Assembler для DOS, Windows и UNIX. – М. : ДМК Пресс, 2000. – 608 с.
4.Локтюхин, В.Н. Основы программирования на ассемблере IBM PC. – М. : Горячая линия–Телеком, 2007. – 88 с.
96
5.Локтюхин, В.Н. Структура персональных компьютеров : учебное пособие. – Рязань : Сервис, 1999. –140 с.
6.Локтюхин, В.Н. Микропроцессорные системы. Проектирование аппаратных и программных средств : учебное пособие. – Рязань : Сервис, 1998. – 100 с.
7.Локтюхин, В.Н. Микропроцессорные системы. Организация и проектирование интерфейса ввода-вывода : учебное пособие. – Рязань : Сервис, 1998. – 72 с.
8.Локтюхин, В.Н. Микропроцессоры Intel 80x86. Архитектура и программирование : методические указания к лабораторным работам
/РГРТА. – Рязань, 2003. – 48 с.
9.Локтюхин, В.Н. Проектирование микропроцессорных систем ввода и преобразования биосигналов / В.Н. Локтюхин, С.И. Мальченко ; РГРТУ. – Рязань, 2007. – 76 с.
10.Майко, Г.В. Ассемблер для IBM PC. – М. : Бизнес–Информ ; Сирин, 1997. – 212 с.
11.Скэнлон, Л. Персональные ЭВМ IBM PC и ХТ. Программирование на языке ассемблера / пер. с англ. – М. : Радио и связь, 1989. – 136 с.
12.Уокерли, Дж. Архитектура и программирование микро-ЭВМ : в 2 кн. / пер. с англ. – М. : Мир, 1984. – Кн. 1. – 486 с.
13.Финогенов, К.Г. Использование языка Ассемблера : учебное пособие для вузов. – М. : Горячая линия–Телеком, 2004. – 438 с.
97
