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

Арифметична обробка різнотипних даних

Ціль роботи:

1.Вивчити арифметичні дії над числами, приведеними до одного типу

2.Вивести строку (ім`я та #варіанту) на екран.

Арифметичні інструкції (операнди D- приймач, S – джерело)

ADD D, S

D= D+ S

ADC D, S

Ця команда анологічна ADD, крім того, що вона виконує арифметичне додавання приймача , джерела та прапорця СF. Пара команд ADD/ADC використовуються для додавання чисел підвищеної точності.

SUB D, S

D= D- S

SBB D, S

Ця команда анологічна SUB, крім того, що вона віднімає з приймача не тільки значення джерела, а й додатково віднімає значення прапорця CF.

MUL S

Виконує множення вмісту джерела (регістр чи змінна) та регістру AL, АХ, ЕАХ та розміщує результат в АХ, DX:AX, EDX:EAX відповідно.

Тип операції визначається типом джерела.

1)IMUL S 2)IMUL D, S 3)IMUL D, S, S1

Множення зі знаком.

1)аналогічно MUL, тільки знаковий біт обробляється окремо

2)D=D*S; (D-регістр)

3)D=S*S1

DIV S

Виконує цілочисельне ділення без знаку вмісту АХ при діленні байтів, ЕАХ при діленні слів та вмісту пари регістрів ЕDХ та ЕАХ (в залежності від типу джерела) на вміст джерела (регистр или переменная) и розміщує результат в AL, АХ або ЕАХ, а залишок — в АН, DX або EDX відповідно.

IDIV S

Виконує цілочисельне ділення без знаку вмісту АХ при діленні байтів, ЕАХ при діленні слів та вмісту пари регістрів ЕDХ та ЕАХ (в залежності від типу джерела) на вміст джерела (регистр или переменная) и розміщує результат в AL, АХ або ЕАХ, а залишок — в АН, DX або EDX відповідно.Знаковий біт обробляється окремо.

INC A

A = A + 1

DEC A

A = A – 1

CMP D, S

Порівнює приймач та джерело та встановлює прапорці Порівняння відбувається шляхом віднімання вмісту джерела (число, регістр чи змінна) з вмісту приймача (регістр чи змінна; приймач та джерело не можуть бути змінними одночасно), причому результат віднімання нікуди не записується, єдиним результатом роботи цієї команди буде всановлення прапорців CF, OF, SF, ZF, AF и PF.

NEG A

Виконує A= 0-A , тобто формує доповнюючий код вмісту операнда A* (-1).

В загальному випадку операнди представляються виразом, в результаті обчислення якого отримується номер регістра ( r), адреса м пам`яті (m), або константа (im). При двох операндах (D (destination) – приймач.

S (source) - джерело.) можливі комбінації:

Операція D,S Приклад:

r, r mov ax, cx

r, m mov al,data

m, r mov data,bx

r, im mov ch,’d’

m, im mov data,0deh

Операнди повинні бути одного типу. Наприклад, команда mov ax, ch помилкова.

Для глобального призначення типу даних ( та міток) використовуються директиви: label type або

equ this type.

Для локальної зміни типу даних використовується операція TYPE PTR ( byte PTR , word PTR,

dword PTR, qword PTR).

Наприклад, визначені 2 байти:

GG db 1,2

Змінна GG за визначенням адресує байти, тому:

mov bh, GG ; bh <-- 01

Операція word ptr дозволяє два байти розглядати як слово:

mov bx, word ptr GG ; bx<-- 02 01

Команди розширення Для операції ділення ділене повинно бути в 2 рази довше дільника. Для розширення діленого за замовчуванням використовуються акумулятори: CBW (Convert Byte to Word) – команда перетворення (розширення) з байта (в регістріAL) в слово (в регістрі АХ): знаковий біт регістра AL заповнює регістр АН; CWD (Convert Word to Double) – команда перетворення слова (в регістрі АХ) в подвійне слово (в регістрах DX: AX) шляхом розповсюдження значення старшого біта АХ на всі біти регістра DX; CDQ (Convert Double Word to Quarter Word) - команда перетворення подвійного слова (в регістрі ЕАХ) в чотирибайтне (в регістрах EDX: EAX) шляхом розповсюдження значення старшого біта ЕАХ на всі біти регістра EDX;

Вивід рядка на екран

Функція DOS 09h  пререривання int 21h .

Ввід:

АН = 09h DS:DX = адреса рядка, що закінчується символом ‘$’

int 21h

Приклад рядка для виводу :

message db " Ivanov, 5variant",0DH,0AH,"$"

0DH – код переводу каретки на наступний рядок.

0AH - код переводу каретки на початок рядка.

;код виводу рядка на екран

mov ah,09h

mov dx,offset message

int 21h

Завдання на лабораторну роботу 1.Виконайте арифметичні дії відповідно до варіанту, для приведення до одного типу використовувати операцію ptr. 2.Отримайте додатковий код отриманого в п.1. результату 3.Вивести на екран рядок ((ah) = 9) з прізвищем, і номером варіанту.

Номер варіанту визначається як: XYY, де

X – номер групи

YY – номер по списку групи (наприклад, для io11 – від 101 до 130).

Приймач(D)

Джерело(S)

Арифметична операція

101

B

W

Додати

102

B

D

Відняти

103

W

B

Додати

104

W

D

Відняти

105

D

B

Додати

106

D

W

Відняти

107

B

W

Додати

108

B

D

Відняти

109

W

B

Додати

110

W

D

Відняти

111

D

B

Додати

112

D

W

Відняти

113

B

W

Додати

114

B

D

Відняти

115

W

B

Додати

116

W

D

Відняти

117

D

B

Додати

118

D

W

Відняти

119

B

W

Додати

120

B

D

Відняти

121

W

B

Додати

122

W

D

Відняти

123

D

B

Додати

124

D

W

Відняти

125

B

W

Додати

126

B

D

Відняти

127

W

B

Додати

128

W

D

Відняти

129

D

B

Додати

130

D

W

Відняти

131

B

W

Додати

132

B

D

Відняти

201

W

B

Додати

202

W

D

Відняти

203

D

B

Додати

204

D

W

Відняти

205

B

W

Додати

206

B

D

Відняти

207

W

B

Додати

208

W

D

Відняти

209

D

B

Додати

210

D

W

Відняти

211

B

W

Додати

212

B

D

Відняти

213

W

B

Додати

214

W

D

Відняти

215

D

B

Додати

216

D

W

Відняти

217

B

W

Додати

218

B

D

Відняти

219

W

B

Додати

220

W

D

Відняти

221

D

B

Додати

222

D

W

Відняти

223

B

W

Додати

224

B

D

Відняти

225

W

B

Додати

226

W

D

Відняти

227

D

B

Додати

228

D

W

Відняти

229

B

W

Додати

230

B

D

Відняти

231

W

B

Додати

232

W

D

Відняти

301

D

B

Додати

302

D

W

Відняти

303

B

W

Додати

304

B

D

Відняти

305

W

B

Додати

306

W

D

Відняти

307

D

B

Додати

308

D

W

Відняти

309

B

W

Додати

310

B

D

Відняти

311

W

B

Додати

312

W

D

Відняти

313

D

B

Додати

314

D

W

Відняти

315

B

W

Додати

316

B

D

Відняти

317

W

B

Додати

318

W

D

Відняти

319

D

B

Додати

320

D

W

Відняти

321

B

W

Додати

322

B

D

Відняти

323

W

B

Додати

324

W

D

Відняти

325

D

B

Додати

326

D

W

Відняти

327

B

W

Додати

328

B

D

Відняти

329

W

B

Додати

330

W

D

Відняти

331

D

B

Додати

332

D

W

Відняти

401

B

W

Додати

402

B

D

Відняти

403

W

B

Додати

404

W

D

Відняти

405

D

B

Додати

406

D

W

Відняти

407

B

W

Додати

408

B

D

Відняти

409

W

B

Додати

410

W

D

Відняти

411

D

B

Додати

412

D

W

Відняти

413

B

W

Додати

414

B

D

Відняти

415

W

B

Додати

416

W

D

Відняти

417

D

B

Додати

418

D

W

Відняти

419

B

W

Додати

420

B

D

Відняти

421

W

B

Додати

422

W

D

Відняти

423

D

B

Додати

424

D

W

Відняти

425

B

W

Додати

426

B

D

Відняти

427

W

B

Додати

428

W

D

Відняти

429

D

B

Додати

430

D

W

Відняти

431

B

W

Додати

432

B

D

Відняти

При використанні 32 розрядних регістрів перед програмою запишіть директиву .386 або вище, тоді в директиві визначення сегменту слід додати use16, щоб зміщення залишалося 16-ти розрядним. Останні версії завантажувача вимагають додатково TLINK / 3, інакше виводиться «Enable32-bit processing» В TD.EXE для перегляду вмісту 32 розрядних регістрів слід натисканням клавіші TAB перейти у вікно регістрів і натиснути ALT + F10.

Соседние файлы в папке SP_ukr