![]() |
![]() |
![]() |
![]() |
Главная Кремниевые микросхемы 1 2 3 4 5 6 7 8 9 10 [ 11 ] 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 продолжение Шестнадцате- Назначение команд ричные коды STOP (СТОП) 00 CLEAR (ОЧИСТИТЬ) те места в памяти цент- 18 рального процессора, в которых хранятся переносы, оставшиеся от предыдущих вычислений (флаги переносов) Попробуем написать реальную программу сложения двух чисел. Прежде чем начать писать ее в шестнадцатеричном коде, представим себе мысленно, что же должно произойти внутри микро-ЭВМ. Напомним, что микроЭВМ состоит из следующих четырех основных узлов: устройства ввода, устройства вывода, центрального микропроцессорного элемента и внешней памяти. Будем считать, что центральный микропроцессорный элемент состоит из следующих трех основных блоков: 1) блока временного хранения информации, называемого регистрами; 2) арифметическо-логического устройства, или АЛУ (ALU - arithmetic and logic unit), выполняющего арифметические и логические операции подобно обычному калькулятору; 3) устройства управления, или УУ. Представим себе, что внешняя помять -это некий стеллаж или книжный шкаф, состоящий из нумерованных отделений. Присвоенные отделениям номера являются адресами участков памяти, или адресами ячеек. Представленная такой моделью память и будет использоваться для хранения програмгй, данных и команд. Управляющее устройство, как подсказывает его название, управляет всеми другими блоками и обеспечивает поочередное выполнение команд программы. Что же должна выполнять программа сложения? Заметим, что числа, предназначенные для сложения, уже помещены в память, а именно в ячейки с номерами 102 и 203 (рис. 3.1,а). Теперь необходимо исключить все переносы, оставшиеся от предыдущих вычислений. Затем нужно перенести копию данных, содержащихся в ячейке 102, в аккумулятор, находящийся в АЛУ. Далее необходимо скопировать данные из ячейки 203 п перенести копию в АЛУ, для сложения с уже имеющимися гам данными. Наконец, следует переписать копию результата в память, т. е. перенести ее в хранилище, например, в ячейку 101. ![]() Акку14улятор EHZZ Перенос ![]() Очистить 1-Г (Clear) L Загризшт юг\ 1- 7 1 (Load) - Сложить 203\ М W (Aid) -- Никаких изпенении. а памяти Запомнить 101 \ 1-1 (Store) - Рис, 3.!. Стеллаж в роли модели памяти, демонстрирующий размещение команд программы в ячейках с номерами от О до 5 и складываемых чисел в ячейках с номерами 102 и 203. После выполнения программы результат переносится в ячейку 101 Данные в памяти не разрушаются при считывании. Они просто копируются или переписываются. Данные остаются в памяти до тех пор, пока другое число не будет помещено на то же место или пока не будет выключено питающее напряжение. Итак, командами в данном случае являются (рас. 3.1,6): CLEAR (ОЧИСТИТЬ) флажок переноса; LOAD (ЗАГРУЗИТЬ) (данные в ячейке) 102; ADD (СЛОЖИТЬ) (данные в ячейке) 203; STORE (ЗАПОМНИТЬ) (ответ в ячейке) 101. Представленные в шестнадцатеричном коде для ввода в типичную микро-ЭВМ с шсстнадцатеричной клавиатурой, эти команды выстроятся следующим образом. Освободившись от переносов, оставшихся от предыдущих вычислении, получим', 18 в шесгтнадцатеричном коде, Затем следует переписать (или произвести выборку из памяти) первое число и поместить его во временное запоминающее устройство (аккумулятор), находящееся внутри центрального микропроцессорного устройства. Таким образом, следующая команда в шестнадцатеричном коде - это AD, поэтому имеем: 18 AD Однако эта команда требует указания адреса ячейки памяти, в которой хранятся необходимые данные. Пусть этот адрес будет 0066 в шестнадцатеричном коде (102 в десятичном). Этот адрес должен быть записан после кода операции СЛОЖИТЬ младшими значащими цифрами вперед, т. е. как 6600. (Пусть Вас не смущает, что шестнадцатеричное число записано наоборот, т. е. младший байт записан слева. Если младшие байты размещены первыми слева, команды, не содержащие более старших байтов, выполняются быстрее.) Итак, имеем: AD66 00 Далее к этому числу следует прибавить число, содержащееся в другой ячейке памяти (например, в ячейке с адресом ООСВ в шестнадцатеричном коде или 203 в десятичном). Итак, очередная команда есть 6D, за которой следует, номер ячейки памяти с самым младшим байтом слева (СВ 00): AD66 00 6DCB 00 На следующем шаге необходимо переслать ответ, находящийся в аккумуляторе, обратно в память на вполне определенное место (например, в ячейку с адресом 0065 в шестнадцатеричном коде или 101 в десятичном). Поэтому следующей будет команда 8D с адресом 65 00, что даст: AD66 00 6DCB 00 8D65 00 Байту соответствуют два шестнадцатеричных разряда. Номер ячейки после кода команды записывается наоборот побайтно. Разряды внутри байта при этом не меняются местами. (Прим. пер.) |
© 2007 EPM-IBF.RU
Копирование материалов разрешено в случае наличия письменного разрешения |