Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LR_4N.DOC
Скачиваний:
1
Добавлен:
27.08.2019
Размер:
64 Кб
Скачать

3. Порядок виконання роботи

Лабораторна робота виконується на ЕОМ і проходить в інтерактивному режимі.

  1. Почергово ввести тексти програм з використанням будь якого текстового редактора;

  2. Записати файли програм з розширенням .asm

  3. Створити об’єктні файли за допомогою програми tasm.

  4. При наявності в програмах помилок, виправити їх та повторити пп. 2-3.

  5. Створити виконувані файли за допомогою tlink.

  6. Завантажте виконувану програму 1 у Turbo Debugger.

  7. Відкрийте вікно CPU. Виконуючи програму покроково, намагайтесь передбачити значення регістрів і в пам’яті перед виконанням відповідних команд.

Рядки 19-21 показують, як додати значення регістрів ax i bx i записати результат в ax. Спробуйте змінити початкові значення (4 і 2) і перезапустити програму. В рядках 23-26 додаються значення регістра cx i змінної [count]. Для експериментів з командою sub, замініть всі add на sub, знов виконайте асемблювання і компоновку і запустіть програму під Turbo Debugger.

В рядках 28-31 показано, як з допомогою команд INC та DEC збільшувати і зменшувати на 1 значення змінних і регістрів. Спостерігайте в верхній частині вікна CPU за зміною значень пам’яті. Ви повинні побачити там значення, записане в [count]. Після виконання 29 рядка це значення зникає, бо наступна команда не посилається на адресу count.

Інший спосіб перегляду змінних пам’яті такий: завантажити програму у TurboDebugger, але не відкривати вікно CPU, а натиснути <Ctrl+F7>, набрати count і натиснути <Enter>. TD знайде в пам’яті змінну і покаже її початкове значення в нижній частині екрану у вікні перегляду.

  1. Завантажте програму 2 у Turbo Debugger;

Через деякий час ви побачите вікно Turbo Debugger з вихідним текстом програми. Крім exitCode, в рядках 11-14 програми 1 описані 4 тестові змінні. Помістіть ці змінні у вікно перегляду TurboDebugger. (Найшвидше це зробити натисненням клавіші <F6> і набрати імена змінних). Потім відкрити або вікно регістів, або вікно CPU. З допомогою <F7> виконайте покроково кожну команду. Для повторного запуску натисніть <Ctrl+F2>. Поекспериментуйте з різними значеннями, приймаючи до уваги такі нюанси:

В рядках 22-23 множаться два беззнакових байти. Один з байтів має знаходитися в регістрі al. Інший може бути або в пам’яті, або в іншому 8-ми бітовому регістрі. Результат множення записується у 16-ти бітовий регістр ax. Переповнення при цьому неможливе, бо 255*255 рівно 65025, що поміщається у 16-ти бітове слово. Переконайтесь в цьому, змінивши opByte i sourceByte на 0ffh і знову запустивши програму на виконання.

Аналогічні дії виконуються в рядках 25-26, але тут множаться два 16-ти бітових слова. Результат, який може досягати довжини 32 біт, міститься в двох регістрах: dx i ax, при цьому в dx знаходиться старша значуща частина результату, в ax – молодша. Так як і в випадку з множенням байтів, переповнення тут неможливе.

У рядках 28-29 значення регістра підноситься до квадрату, шляхом перемноження ax на самого себе. Таким же чином ви можете піднести до квадрату 8-ми бітове значення, помноживши al на самого себе.

Рядки 31-32 демонструють ділення беззнакових значень. Вміст операнда-джерела команди div ділиться на 16-ти бітовий дільник, який міститься в регістрі ax.Ціла частина від ділення поміщається в регістр al, залишок – в ah.

Аналогічне ділення виконується в рядках 34-36, але в цьому випадку 32-бітове значення, які містяться в dx i ax ділиться на 16-ти бітове значення sourceWord. В регістрі dx міститься старше значуще слово першопочаткового значення, в ax – молодші. Після ділення ціла частина записується в ax, а залишок – в dx.

  1. Оформити звіт, даючи відповідь на контрольні запитання згідно варіанту, та захистити роботу.

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