Обратите внимание: место назначения (ячейка памяти для команды «Сохранить») по-прежнему указывается слева, а источник — справа. Содержимое аккумулятора нужно сохранить в ячейке 1003h. Длинную команду «Перейти к ячейке 0000h, если флаг нуля не равен 1» можно записать кратко.
JNZ 0000h
В этой команде квадратные скобки не используются, поскольку она предполагает переход к ячейке 0000h, а не к значению, которое может в ней храниться.
Такая сокращенная запись удобна, поскольку позволяет перечислить команды в столбик и сделать их легко читаемыми, не прибегая к рисованию ячеек памяти. Для указания ячейки, в которой хранится определенная команда, можете использовать шестнадцатеричный адрес с двоеточием.
0000h: LOD A, [1005h]
А вот так можно указать на данные, хранящиеся по определенному адресу.
1000h: 00h, A7h
1002h: 00h, 1Ch
1004h: 00h, 00h
Два байта, разделенные запятой, указывают на то, что первый хранится в ячейке по адресу слева, а второй — в ячейке, следующей за ней. Эти три строки эквивалентны следующей строке.
1000h: 00h, A7h, 00h, 1Ch, 00h, 00h
Таким образом, программа для умножения двух чисел может быть записана в виде следующей серии команд.
0000h: LOD A, [1005h]
ADD A, [1001h]
STO [1005h], A
LOD A, [1004h]
ADC A, [1000h]
STO [1004h], A
LOD A, [1003h]
ADD A, [001Eh]
STO [1003h], A
JNZ 0000h
001Eh: HLT
1000h: 00h, A7h
1002h: 00h, 1Ch
1004h: 00h, 00h
Пустые строки и другие пробелы применяются для упрощения восприятия. При написании кода лучше не использовать фактические адреса, поскольку они могут измениться. Например, если вы решили сохранить числа в ячейках с 2000h до 20005h, то придется переписывать множество выражений. Лучше использовать
BEGIN: LOD A,[RESULT + 1]
ADD A,[NUM1 + 1]
STO [RESULT + 1], A
LOD A,[RESULT]
ADC A,[NUM1]
STO [RESULT], A
LOD A,[NUM2 + 1]
ADD A,[NEG1]
STO [NUM2 + 1], A
JNZ BEGIN
NEG1: HLT
NUM1: 00h, A7h
NUM2: 00h, 1Ch
RESULT: 00h, 00h
Важно: метки NUM1, NUM2 и RESULT ссылаются на ячейки памяти, где хранятся два байта. В приведенных выражениях метки NUM1 + 1, NUM2 + 1 и RESULT + 1 ссылаются на второй байт соответствующей метки. Обратите внимание на метку NEG1 (negative one, то есть «минус один») у команды HLT.
Наконец, чтобы не забыть, в чем заключается смысл того или иного выражения, вы можете добавить небольшие
BEGIN: LOD A,[RESULT + 1]
ADD A,[NUM1 + 1]; Прибавить младший байт
STO [RESULT + 1], A
LOD A,[RESULT]
ADC A,[NUM1]; Прибавить старший байт
STO [RESULT], A
LOD A,[NUM2 + 1]
ADD A,[NEG1]; Уменьшить второе число на 1
STO [NUM2 + 1], A
JNZ BEGIN
NEG1: HLT
NUM1: 00h, A7h
NUM2: 00h, 1Ch
RESULT: 00h, 00h
Продемонстрированный язык компьютерного программирования называется
Если бы вы решили создать программу для собранного в этой главе компьютера, вероятно, сначала нужно было бы записать ее на бумаге на языке ассемблера. Когда сочтете, что программа написана правильно и готова к тестированию, вы вручную преобразуете каждый фрагмент кода на ассемблере в машинный код. После этого вы сможете использовать переключатели, чтобы ввести машинный код в массив RAM и
Изучение концепций компьютерного программирования предполагает знакомство с понятием
Вильям Л Саймон , Вильям Саймон , Наталья Владимировна Макеева , Нора Робертс , Юрий Викторович Щербатых
Зарубежная компьютерная, околокомпьютерная литература / ОС и Сети, интернет / Короткие любовные романы / Психология / Прочая справочная литература / Образование и наука / Книги по IT / Словари и Энциклопедии