|
Форматы арифметических команд• команда add: add reg/mem, imm; размер 8/16/32 бита add reg, reg/mem; размер 8/16/32 бита add mem/reg, reg; размер 8/16/32 бита add reg/mem16, imm8; получатель 16 бит, источник 8 бит add reg/mem32, imm8; получатель 32 бит, источник 8 бит
• команда adc: adc reg/mem, imm; размер 8/16/32 бита adc reg, reg/mem; размер 8/16/32 бита adc mem/reg, reg; размер 8/16/32 бита adc reg/mem16, imm8; получатель 16 бит, источник 8 бит adc reg/mem32, imm8; получатель 32 бит, источник 8 бит
• команда xadd: xadd reg/mem, reg; размер 8/16/32 бита
• команда sub: sub reg/mem, imm; размер 8/16/32 бита sub reg, reg/mem; размер 8/16/32 бита sub mem/reg, reg; размер 8/16/32 бита sub reg/mem16, imm8; получатель 16 бит, источник 8 бит sub reg/mem32, imm8; получатель 32 бит, источник 8 бит
• команда sbb: sbb reg/mem, imm; размер 8/16/32 бита sbb reg, reg/mem; размер 8/16/32 бита sbb mem/reg, reg; размер 8/16/32 бита sbb reg/mem16, imm8; получатель 16 бит, источник 8 бит sbb reg/mem32, imm8; получатель 32 бит, источник 8 бит
• команда imul: imul reg/mem; размер 8/16/32 бита imul reg16, imm8; произведение 16 бит imul reg16, imm16; произведение 16 бит imul reg32, imm8; произведение 32 бита imul reg32, imm32; произведение 32 бита imul reg16, reg/mem16; произведение 16 бит imul reg32, reg/mem32; произведение 32 бита imul reg16, reg/mem16, imm8/16; произведение 16 бит imul reg32, reg/mem32, imm8/32; произведение 32 бит
• команда mul: mul reg/mem; размер 8/16/32 бита • команда idiv: idiv reg/mem; размер 8/16/32 бита
• команда div: div reg/mem; размер 8/16/32 бита
• команда inc: inc reg/mem; размер 8/16/32 бита
• команда dec: dec reg/mem; размер 8/16/32 бита
• команда neg: neg reg/mem; размер 8/16/32 бита Двоично-десятичный формат целых чисел • упакованный: XXXX XXXX; • неупакованный: 0000 XXXX. Четыре бита XXXX представляют десятичную цифру 0-9. Все обычные операции над такими числами приводят к неправильным результатам. Команды десятичной арифметики 1. команда BCD-коррекции после сложения DAA; Пример: 19h + 1h = 1Ah; после DAA: 20h. 2. команда BCD-коррекции после вычитания DAS; Пример: 20h - 1h = 1Fh; после DAS: 19h. 3. команда ASCII-коррекции после сложения AAA; Пример: 05h + 06h = 0Bh; после AAA: 0101h. 4. команда ASCII-коррекции после вычитания AAS; 5. команда ASCII-коррекции после умножения AAM; Пример: mov AL, 5; mov BL, 5; mul BL; aam; 0019h -> 0205h 6. команда ASCII-коррекции перед делением AAD; Пример: mov AX, 0205h; mov BL, 5; aad; AX = 19h; div BL; AX = 05h Арифметические команды воздействуют на следующие флаги • CF(перенос); • PF(чётность); • AX(вспомогательный перенос); • ZF(нуль); • SF(знак); • OF(переполнение). Ситуация переноса\заема (CF) возникает, когда результат сложения \вычитания не помещается в приёмнике. Пример: FF = 11111111 = 255 +FF = 11111111 = 255 -------------------- 1FE = 111111110 = 510
перенос PF -> 1, когда результат арифметической операции имеет чётное число 1 в младших 8-ми битах. Ситуация вспомогательного переноса\заема (AX) возникает при переносе из 3-го бита в 4-й. Полезна в операциях десятичной арифметике. ZF -> 1, когда результат арифметической операции 0. SF -> 1, когда 1 в старшем разряде результата (результат отрицательный). Ситуация переполнения (OF) возникает, когда результат умножения не помещается в приёмнике. Пример Пример c_e_l_l_s_программы, вычисляющей следующее арифметическое выражение: где X и Y - двойное слово. CodeSg segment 'CODE' Assume CS:CodeSg, DS:DataSg, SS:StackSg Begin: mov AX, DataSg mov DS, AX; mov BX, X; X -> BX (BX=10=Ah) mov AX, BX; X -> AX (AX=10=Ah) mul AX; AX = X^2 (AX=100=64h) mov CX, AX; X^2 -> CX (CX=100=64h) mov AX, BX; X -> AX (AX=10=Ah) mov BX, Y; Y -> BX (BX=3) mul BX; AX = X*Y (AX=30=1Eh) sub AX, 2; AX = X*Y - 2 (AX=28=1Ch) add AX, CX; AX = (X*Y - 2) + X^2 (AX=128=80h) mov CX, AX; (X*Y - 2) + X^2 -> CX (CX=128=80h) ; inc BX; Y + 1 (BX=4) mov AX, BX; (Y+1) -> AX (AX=4) mul AX; AX = (Y+1)^2 (AX=16=10h) mul BX; AX = (Y+1)^2 * (Y+1) (AX=64=40h) mov BX, AX; (Y+1)^3 -> BX (BX=64=40h) ; mov AX, CX; (X*Y - 2) + X^2 -> AX (AX=128=80h) mov DX, 0; 0 -> DX (DX=0) div BX; AX = AX / BX (AX=2) ; neg AX; -AX (AX=-2=FFFEh) ; mov Z, AX; AX -> Z ; Mov AX, 4C00h Int 21h CodeSg ends ;------------------------------------ DataSg segment 'DATA' X DW 10 Y DW 3 Z DW? DataSg ends ;------------------------------------ StackSg segment stack 'STACK' Db 256 dup(0) StackSg ends ;------------------------------------ End begin Задание Выполните 5 (пять) упражнений из ниже приведенного списка, выбирая по следующему принципу: пусть номер студента с списке группы N, тогда выполняются упражнения с номерами N, N+1, N+2, N+3, N+4. Написать программу, вычисляющую Z для заданных X и Y двумя способами (с помощью команд двоичной и двоично-десятичной арифметики). 1. Z = (X^2 + 2*Y - 45) / (X^3); 2. Z = 1 / Y + X^3 - 32; 3. Z = (3 + X/Y) / (X-Y+1); 4. Z = X / (X - Y + X*Y); 5. Z = (4 - (X+3)/(Y-1))*(-XY); 6. Z = ((X+1)/Y - 1)*2X; 7. Z = Y*(2-(Y+1)/X); 8. Z = (XY - 1)/(X+Y); 9. Z = X^3 + Y -1; 10.Z = (XY + 1)/ X^2; 11.Z = (X+Y)/(X-Y); 12.Z = - 1/X^3 + 3; 13.Z = X - Y/X +1; 14.Z = ((X+Y)/Y^2 - 1)*X; 15.Z = (X-Y)/(XY+1); 16.Z = - X/Y+Y^2 +3; 17.Z = Y^2 + XY + X/Y; 18.Z = (1 + X * Y)/2; 19.Z = -(1-Y)/(1+X); 20.Z = -X*(1-XY); 21.Z = Y+X/Y-1; 22.Z = 5/XY+X^3; 23.Z = -X + Y^3 - 1; 24.Z = X^3 / (X-Y); 25.Z = X^3 -2X^2*Y+1; 26.Z = -3X + Y^2 +1; 27.Z = -(X/Y +1)/Y^2; 28.Z = 1+X^2/3Y; 29.Z = Y-X/3+1; 30.Z = (XY)^3 +1/Y. 5 Контрольные вопросы 1. Двоичная форма представления целых чисел. 2. Дополнительный код. 3. Шестнадцатиричная форма представления целых чисел. 4. BCD и ASCII-форматы целых чисел; 5. Как объявляются поля данных размера DB, DW, DD. 6. Структура флагового регистра. 7. Форматы, предназначение и алгоритмы работы арифметических команд целочисленного устройства: add, adc, xadd, sub, sbb, imul, mul, idiv, div, inc, dec, neg; aaa, aas, aam, aad; or, xchg.
Лабораторная работа №5 Основные характеристики, области применения ЭВМ различных классов. Определение типа и состава компьютера Цель работы Определение типа и состава компьютера
Общие сведения Для наиболее распространенных моделей персональных компьютеров конфигурация аппаратных средств задается установкой перемычек на системной плате (motherboard) и платах контроллеров периферийных устройств, а также записывается в область данных BIOS и в энергонезависимую память CMOS специальной программой BIOS Setup. Что способствует осуществлению желаний? Стопроцентная, непоколебимая уверенность в своем... ЧТО ПРОИСХОДИТ ВО ВЗРОСЛОЙ ЖИЗНИ? Если вы все еще «неправильно» связаны с матерью, вы избегаете отделения и независимого взрослого существования... Живите по правилу: МАЛО ЛИ ЧТО НА СВЕТЕ СУЩЕСТВУЕТ? Я неслучайно подчеркиваю, что место в голове ограничено, а информации вокруг много, и что ваше право... ЧТО ПРОИСХОДИТ, КОГДА МЫ ССОРИМСЯ Не понимая различий, существующих между мужчинами и женщинами, очень легко довести дело до ссоры... Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:
|