История и методология информатики и вычислительной техники. Парфенов П.С. - 124 стр.

UptoLike

Составители: 

126
§9.2. Языки программирования низкого уровня [9.3]
Машинные коды
Первоначально программирование велось в цифровых кодах,
соответствующих электрическим схемам компьютеров (десятичных или
двоичных). Для упрощения записи двоичная система записывалась в
виде восьмеричной или шестнадцатеричной, но вводить коды нужно
было все равно в системе исчисления с машинным основанием.
Контроль ввода и конечного результата, а также поиск ошибок,
осуществлялся по контрольным лампочкам на панели управления, либо
по распечаткам.
Пример команд в машинных кодах для х86:
B8 01 00 поместить в регистр AX число 1.
BB 02 00 поместить в регистр BX число 2.
01 D8 сложить AX с BX, результат в AX.
Эти же команды в двоичном виде:
101110000000000100000000
101110110000001000000000
0000000111011000
Ассемблеры
Ассемблер это мнемоническая запись кодов центрального
процессора. Программу, написанную на ассемблере, переводит
специальная программа-транслятор, заменяя каждую ассемблерную
команду на соответствующий двоичный код. Набор полученных кодов
полностью соответствует исходному набору ассемблерных команд, он
может быть непосредственно загружен в память машины и выполнен
процессором. Однако, поскольку каждый процессор использует только
свой набор кодов, такая программа не может быть непосредственно
выполнена на машине с другим типом процессора.
Впервые мнемоника была введена разработчиками EDSAC (1949),
обозначившими все 18 машинных команд заглавными буквами. Так, S
обозначала «вычитание», I «прочитать следующий ряд дырочек на
входной бумажной ленте», T «передать информацию в память», а Z
«остановка машины». Существенный вклад в популяризацию
ассемблеров внесла компания IBM, разработавшая для System/360 язык
IBM Basic assembly. Ассемблер широко использовался для написания
программ до начала 1980-х, когда признание получил язык С.
Программы на ассемблере более понятны в тех объемах, в которых
они существовали в виде машинных кодов, т.к. в них сразу видны
используемые регистры. Но при увеличении количества команд
прозрачность программ снова теряется. В самом деле, листинг из ста