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

Лабораторная работа №1 Основы машинных вычислений

Цель: Формирование представления о способе хранения и представления информации в компьютере. Приобретение навыков перевода чисел в различные системы счисления и выполнение арифметических операций в двоичной системе счисления.

Теоретические сведения

Компьютер не понимает непосредственно команды на языке ассемблера, он понимает только машинные команды. Машинный язык состоит из чисел, которые интерпретируются процессором. Процессор обычно имеет встроенный интерпретатор, представляющий микропрограмму и преобразовывающий машинные команды непосредственно в управляющие сигналы.

Машинный язык включает примитивные операторы, которые могут исполнить простые арифметические действия или переместить данные. Система команд процессора состоит из машинных команд, которые он может исполнить. Машинный язык для семейства процессоров Intel в своей основе имеет систему команд процессора 8086, которые могут выполняться процессорами последующих модификаций. Такая концепция называется совместимостью сверху вниз.

Писать программы на машинном языке неудобно и утомительно, т.к. необходимо писать много чисел, сравнивать их коды. Гораздо удобнее использовать ассемблер, который преобразовывает коды, написанные на языке ассемблера в машинные коды. Для наглядности рассмотрим пример машинной команды, которая помещает число 5 в регистр процессора AL: 1011000000000101 Первые 8 битов- код операции, который предписывает поместить операнд в регистр AL. Вторые 8 битов являются операндом. На ассемблере данный пример выглядит так: mov AL, 5

Перед тем, как изучать язык ассемблера необходимо разобраться с представлением данных в компьютере, с системами счисления.

Двоичные числа

В компьютере информация представлена в двоичной системе счисления. Двоичные числа так же называют числами с основание 2, так как каждое число может принимать только два значения: 0 или 1. компьютеры сохраняют команды или данные как серию двоичных цифр, называемых битами. Двоичные цифры организованы группами по восемь цифр, называемых байтами. Байт может содержать простую машинную команду, символ или число. Два байта составляют слово, хотя количество байт в слове может быть различным в зависимости от конструкции компьютера. Используются так же двойные слова (32 бита) и учетверенные слова (64 бита).

В языках высокого уровня представление команд и данных имеет существенное различие, однако в компьютере они представлены как одинаковые наборы нулей и единиц. Таким образом, программисты, использующие язык ассемблера, должны разделять данные и команды.

Системы счисления

Для человека наиболее привычной системой счисления является десятичная. Для преобразования чисел из двоичной системы к более компактному виду используются восьмеричная и шестнадцатеричная системы счисления. Все перечисленные системы счисления являются позиционными т.е. обладающими следующим свойствам – количественное значение каждой цифры зависит от ее места (позиции) в числе.

Дадим краткую характеристику каждой системы счисления:

  • Двоичная система – цифры 0 и 1.

Пример числа 100100110(2)

  • Восьмеричная система – цифры 0, 1, 2, 3, 4, 5, 6, 7.

Пример числа 235(8)

  • Десятичная система - цифры 0, 1, 2, 3, 4, 5, 6, 7, 8, 9.

Пример числа 453(10)

  • Шестнадцатеричная система – цифры 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F.

Пример числа 32A(16)

Для перевода чисел из любой системы счисления в десятичную можно использовать правило позиционной системы счисления: (1)

P- основание системы счисления. Нижние индексы определяют местоположение цифры в числе (разряд): положительные значения индексов – для целой части числа (m разрядов), отрицательные значения - для дробной части (s разрядов).

Например, для перевода числа 235 используем правило позиционной системы 235(8)=2*82+3*81+5*80=2*64+3*8+5*1=128+24+5=157(10)

125,16(16)=1*162+2*161+5*160+1*16-1+6*16-2=256+32+80+0,0625+0,0234 = 368,0859(10)

101110,101(2)=1*25+0*24+1*23+1*22+1*21+0*20+1*2-1+0*2-2+

+1*2-3=46,625(10)

Практически перевод из двоичной системы в десятичную можно легко выполнить, надписав над каждым разрядом соответствующий ему вес и сложив затем произведения значений соответствующих цифр на их веса.

Например, двоичное число 0100001(2) равно 65(10). Действительно, 64 * 1 + 1 * 1 = 65.

Вес

128

64

32

16

8

4

2

1

Цифра

0

1

0

0

0

0

0

1

Таким образом, для перевода числа из позиционной системы счисления с любым основанием в десятичную систему счисления можно воспользоваться выражением (1). Обратный перевод из десятичной системы счисления в систему счисления с другим основанием непосредственно по формуле (1) для человека весьма затруднителен, поскольку все арифметические действия, предусмотренные этой формулой, следует выполнять в той системе счисления, в которую число переводится. Обратный перевод выполняется значительно проще, если предварительно преобразовать отдельно целую и дробную части выражения (1) к виду

Алгоритм перевода числа из десятичной системы счисления в систему счисления с основанием Р, основанный на этих выражениях, позволяет оперировать числами в той системе счисления, из которой число переводится, и может быть сформулирован следующим образом: при переводе смешанного числа следует переводить, его целую и дробную части отдельно.

  1. Для перевода целой части числа ее, а затем целые части получающихся частных от деления, следует последовательно делить на основание Р до тех пор, пока очередная целая часть частного не окажется равной 0. Остатки от деления, записанные последовательно справа налево, образуют целую часть числа в системе счисления с основанием Р.

  2. Для перевода дробной части числа ее, а затем дробные части получающихся произведений, следует последовательно умножать на основание Р до тех пор, пока очередная дробная часть произведения не окажется равной 0 или не будет достигнута нужная точность дроби. Целые части произведений, записанные после запятой последовательно слева направо, образуют дробную часть числа в системе счисления с основанием Р.

Пример перевода смешанного числа из десятичной системы в двоичную систему 46,625(10)

2

46

0,625

2

1,250

2

0,500

2

1,000

22

23

1

5

2

2

2

46

0

1

2

11

10

2

4

1

2

0

1

Переводим дробную часть числа. Записываем целые части получившихся произведений после запятой последовательно слева на право 0,101 т.е. 0,625(10)=0,101(2)

Записываем остатки последовательно справа на лево с последнего частного получим 101110, т.е. 46(10)=101110(2)

Окончательно получаем 46,625(10)=101110,101(2)

Д

Таб. 1.1

ля перевода из двоичной системы счисления в восьмеричную и шестнадцатеричную систему счисления (и наоборот), удобно использовать таблицу перевода, приведенную ниже:

IV

III

II

I

8-я или 16-я

0

0

0

0

0

0

0

0

1

1

0

0

1

0

2

0

0

1

1

3

0

1

0

0

4

0

1

0

1

5

0

1

1

0

6

0

1

1

1

7

1

0

0

0

8

1

0

0

1

9

1

0

1

0

A

1

0

1

1

B

1

1

0

0

C

1

1

0

1

D

1

1

1

0

E

1

1

1

1

F

Для перевода чисел из 8-й системы в двоичную достаточно использовать 3 двоичных разряда, а для перевода из 16-й системы достаточно использовать 4 двоичных разряда.

Например, переведем 1364(8) в двоичную систему счисления, используя таблицу. 1364(8)=001 011 110 100(2)

Переведем A15(16) в двоичную систему счисления. A15(16)=1010 0001 0101(2)

Перевод из двоичной системы в 8-ю и 16-ю выполняется аналогично по таблице, надо только иметь ввиду, что можно с левой стороны числа добавлять нулей столько сколько нужно. Например, перевести двоичное число 10010100111(2) в 8-ю систему счисления. 10010100111(2)=010 010 100 111(2)=2247(8)

Перевести это же число в 16-ю систему счисления 10010100111(2)=0100 1010 0111(2)=4A7(16)

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