Архитектура компьютера

Введение
Теоретическая часть
    1 Архитектура компьютера
     
Лабораторный практикум
  1 Создание программы на языке ассемблера
  2 Применение функций DOS и BIOS
  3 Линейные алгоритмы
  4 Десятичная арифметика
  5 Команды передачи управления
  6 Циклы с условием
  7 Циклы со счетчиком
  8 Работа с массивами
  9 Цепочечные команды
     
Приложения
  1 Таблица кодов символов ASCII
  2 Функции DOS и BIOS
     
Гостевая книга

Лабораторная работа №4

Десятичная арифметика

Вопросы для повторения:

  1. Что такое позиционные системы счисления?
  2. Что называется двоичной (десятичной) арифметикой?
  3. Каково назначение BCD-кода?
  4. Какие команды работают с BCD-числами?
  5. Как работают команды daa и das?

Команды десятичной арифметики

Рассматриваемые ниже команды предназначены для работы с неупакованными BCD-числами. Изучите их работу по приведенным в таблице примерам.

  Назначение Алгоритм работы Пример
aaa коррекция результата сложения двух одноразрядных неупакованных BCD-чисел
  1. проанализировать значение младшего полубайта регистра al и значение флага af;
  2. если (значение младшего полубайта регистра al >9) или (AF=1), то выполнить следующие действия:
    • увеличить значение al на 6;
    • очистить старший полубайт регистра al;
    • увеличить значение ah на 1;
    • установить флаги: af = 1, cf = 1,
    иначе сбросить флаги af = 0 и cf = 0.
mov al, 7
mov ch, 6
add al, ch
aaa

; ah=1
; al=3
aas коррекция результата вычитания двух неупакованных одноразрядных BCD-чисел

если (младший полубайт регистра al меньше 9) или (флаг af=1), то выполнить следующие действия:

  1. уменьшить значение младшего полубайта регистра al на 6;
  2. обнулить значение старшего полубайта регистра al;
  3. установить флаги af и cf в 1;
иначе установить флаги af и cf в 1
mov al, 5
mov ch, 6
sub al, ch
aas

; al=9
aam
  1. коррекция результата умножения двух неупакованных BCD-чисел;
  2. преобразование двузначного числа (<= 9910) из двоичного вида в его неупакованный BCD-эквивалент
  1. разделить значение регистра al на 10;
  2. записать частное в регистр ah, остаток — в регистр al.
mov al, 7
mov ch, 6
mul ch
aam

; ah=4
; al=2
aad
  1. подготовка двух неупакованных BCD-чисел для операции деления;
  2. преобразование двузначного неупакованного ВCD-числа в двоичное представление
  1. умножить значение регистра ah на 10 и сложить полученное значение с содержимым регистра al: (ah*10)+al;
  2. присвоить регистру al значение (ah*10)+al;
  3. обнулить регистр ah
mov ah, 4
mov al, 2
aad
; al=42
mov cl, 6
div cl
; al=7

 

Задание:

Вывести на экран сумму двух введенных с клавиатуры двузначных чисел (Вводить посимвольно функцией 01 прерывания 21h, значение вводить так, чтобы сумма была меньше 100). Для решения задачи применить команды десятичной арифметики. Проследить за выполнением операций с использованием отладчика. (10 баллов)

 

Задания для самостоятельного выполнения

  1. Вывести на экран байт в десятичном виде (10 баллов);

 

© Истомин А.С. ЗабГГПУ
Хостинг от uCoz