Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Metodicheskie_ukazania.doc
Скачиваний:
13
Добавлен:
03.03.2016
Размер:
6.75 Mб
Скачать

7. Команды безусловного перехода (с относительной адресацией)

0027 EB 1A 90 jmp m_end

002А …..

0043 m_end: …..

Если смотреть по листингу, команда занимает 3 байта, однако в отладчике td эта часть кода будет выглядеть следующим образом:

0027 EB 1A jmp m_end

0029 90 nop

В том случае, когда метка находится после команды безусловного перехода, компилятор на первом проходе формирует внутрисегментный формат команды (т.е. двухбайтное смещение disp16), однако на втором проходе, если относительное смещение помещается в поле памяти один байт, второй байт, выделенный под смещение, заменяется на команду nop (нет операции – ее кор=90). Поэтому расчет относительного смещения следующий:

0043 - адрес метки m_end

- 0029 - адрес команды nop (т.к. именно она следующая за jmp)

EB - код операции jmp.

8. Команда вызова подпрограммы (с относительной адресацией)

0033 E8 0083 call inputnumber

……

00B9 inputnumber proc near

Команда состоит из трех байт.

0033 – смещение самой команды относительно сегмента кода.

Первый байт: 2-3 байты:

Kop disp16

11101000 0083

кор – код операции call.

disp16 – относительное смещение, рассчитанное следующим образом:

00B9 - адрес начала процедуры

- 0036 - адрес команды, следующей за call

0083

9. Команда завершения цикла (с относительной адресацией)

0040 ….. vyvod2: …………..

004F E2 EF loop vyvod2

Команда состоит из двух байт.

004F – смещение самой команды относительно сегмента кода.

Первый байт: Второй байт:

Kop disp8

11100010 EF

кор – код операции loop.

disp8 – относительное смещение, рассчитанное следующим образом:

0040 - адрес метки

- 0051 - адрес команды, следующей за loop

-11 = EF (в доп. коде)

10. Команды с косвенной адресацией

89 9C FFFEr mov x[si-2],bx

Команда состоит из четырех байт.

Первый байт: Второй байт (постбайт) 3-4 байты

kop d w mod reg r/m disp16

100010 0 1. 10 011 100 FFFE

кор – код операции mov.

d=0 – результат сохраняется в память

w=1, определяет размер операндов – слово

mod=10 + r/m=100 – определяют режим адресации (SI)+D16 (по табл.1). Т.е. косвенная адресация с индексированием и с 16-тиразрядным смещением.

disp16= FFFE смещение, полученное суммированием адреса переменной х(0000) и -2, содержащейся в команде. FFFE=-2.

reg=011 задает код регистра bх.

Міністерство освіти і науки

ДОНЕЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ

Кафедра КІ

ЗВІТ

з обчислювальної практики

студента групи _______

_______________________________

Керівник Чередникова О.Ю.

Донецьк 2013

Реферат

стор.42, рис. 5, табл. 2

Освоєні основи мови програмування АСЕМБЛЕР. Виконано 4 лабораторні роботи на теми обчислення арифметичних виразів, програмування розгалужувальних процесів, обробки масивів та матриць.

МАКРОАССЕМБЛЕР, МІКРОПРОЦЕССОР, ШИНА АДРЕСИ, ШИНА ДАНИХ, СЕГМЕНТНИЙ РЕГІСТР

ПЗ 7.091502.XXX.04.00.00.000

Звіт з обчислювальної практики. Вивчення мови програмування ASSEMBLER .

Літер-а

Масса

Масштаб

Ізм

Лист

№ докум

Підпис

Дата

Розроб.

Перев.

Т. контр.

Лист 5

Листів 32

ДонНТУ, ФКНТ

КІ-12б

Н. Конт.

Затв.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]