Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка_СистПрогр_ЛР.DOC
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
2.16 Mб
Скачать

6.3 Завдання на роботу

1 Написати програму на Turbo Assembler, що виводить на екран N-байтне число у M-ній системі числення відповідно до обраного варіанту, табл.6.2.

Таблиця 6.2 – Варіанти завдань

M - на система числення

N-байтне число

N =1

N =2

2

Варіант 1

Варіант 2

4

Варіант 3

Варіант 4

8

Варіант 5

Варіант 6

10

Варіант 7

Варіант 8

16

Варіант 9

Варіант 10

Довільна система числення

Варіант 11

Варіант 12

Unary

Варіант 13

3

Варіант 14

Варіант 15

2 Виконати компіляцію програми.

3 Здійснити трасування програми в Turbo Debugger.

4 Зробити висновки за результатами.

    1. Контрольні запитання

1 В чому перевага використання систем числення з великою основою?

  1. Назвіть різницю між числом один та символом ‘1’.

  2. Назвіть варіанти виводу чисел на екран в двійковій системі числення.

ЛАБОРАТОРНА РОБОТА №7

КОМАНДИ ЗСУВУ. МНОЖЕННЯ НА КОНСТАНТУ

7.1 Мета роботи

Навчитися методом зсуву відтворювати процедуру множення операнду на константу.

    1. Теоретичні відомості

SHR-логічний зсув вправо

(CF) ← (Молодший біт операнда)

(Операнд) ← (Операнд) /2.

По команді SHR виконуються зсуви в байті або слові операнда. При форматі Reg/Mem,l виконується зсув тільки на 1 розряд. Якщо заданий формат Reg/Mem,CL, то число розрядів зсуву задається вмістом регістра CL. Старші розряди результату заповнюються нулями. Якщо після зсуву знаковий біт результату зберігає своє первинне значення, то прапорець OF скидається в 0. При довільному числі зсувів (більшому 1) значення прапорця ОF не визначено. Операнди командии SHR можуть бути задані в регістрах загального призначення або комірках пам'яті. Команда змінює прапорці CF, PF, SF і ZF. Стан прапорця AF не визначено.

Приклад. Нехай регістр BL містить число 77Н, вміст регістру прапорців рівний F046H і виконується команда SHR BL,1. Команда виконується таким чином:

Прапорець CF Вміст регістра BL

0 0111 0111 = 77Н Початковий стан

1 0011 1011 = 3ВН Після зсуву

Після виконання команди SHR BL,1 вміст регістру BL буде рівний 3ВН, прапорець CF встановлений в 1 і в регістрі прапорців буде записано число F003H. Оскільки біт знаку в результаті операції зсуву не змінив свого первинного стану, прапорець OF скидається в 0.

Прапорці, що змінюються після операції: OF, SF, ZF, АF, PF, CF.

SAL/SHL-арифметичний зсув вліво/логічний зсув вліво

(CF) ← (Старший біт операнда)

(Операнд) ← (Операнд) * 2.

Після цих команд виконуються зсуви в байті або слові операнда. При використовуванні формату Reg/Mem, 1 виконується зсув тільки на 1 розряд. Якщо використовується формат Reg/Mem, CL, то число зсувів задається вмістом регістра CL. Молодші розряди байта або слова при зсуві заповнюються нулями. Якщо знаковий біт результуючого операнда не змінює свого значення, прапорець переповнення скидається в 0. Значення прапорця OF після зсуву на довільне число розрядів, більше 1, не визначено. Операнди команд SAL і SHL можуть бути задані в регістрах загального призначення або комірках пам'яті. Формат операндів – байт або слово. Команди впливають на прапорці CF, PF, SF і ZF. Значення прапорця AF не визначено.

Приклад. Нехай вміст регістру ВХ рівний 4231Н, регістру прапорців – F046H, тобто прапорець CF встановлений в 0, Команда SHL ВХ, 1 виконується таким чином:

Прапорець CF Вміст регістру ВХ

0 0100 0010 0011 0001 =4231H Початкове число

0 1000 0100 0110 0010 = 8462H Після зсуву

Після виконання команди вміст регістру прапорців дорівнює F882H, регістру ВХ – 8462Н, прапорець CF скинений в 0, а пра-порець ОF встановлений в 1, оскільки змінився стан знакового бі-та. За допомогою команди SHL можна швидко обчислювати зна-чення ступенів 2n, де n – число розрядів зсуву. Результат остан-нього прикладу може бути отриманий прямим множенням на 2.

Прапорці, що змінюються після операції: OF, SF, ZF, АF, PF, CF.

RCL-циклічний зсув вліво з перенесенням

(Тимчасовий біт) ← (CF)

(CF) ← (Старший біт операнда)

(Операнд) ← (Операнд) * 2 + (Тимчасовий біт)

Після цієї команди виконується циклічний зсув розрядів в байті або слові операнда. При використанні формату Reg/Mem, 1 проводиться зсув тільки на 1 розряд. Якщо використовується формат Reg/Mem,CL, то число зсувів задається вмістом регістра CL. Прапорець CF також бере участь в операціях зсуву, його значення заноситься в молодший значущий біт операнда-приймача, а на його місце заноситься значення самого старшого значущого біта цього операнда. В режимі зсуву на один біт (без регістра CL) прапорець OF встановлюється в 1 в тому випадку, якщо значення прапорця CF відрізняється від самого старшого значущого біта операнда-приймача. Значення прапорця OF не визначено при зсуві на число розрядів, більше одиниці. Операнди в цій команді можуть бути задані в регістрах загального призначення або комірках пам'яті.

Прапорці, що змінюються після операції: OF, CF.

а) б)

в)

Рисунок 7.1 - Схема роботи команд зсуву: а) логічний зсув вправо; б) логічний зсув вліво; в) арифметичний зсув вправо

а) б)

в) г)

Рисунок 7.2 - Схема роботи команд циклічного зсуву: