Цифровые устройства и микропроцессорные системы. Задачи и упражнения: Учебное пособие (Представление чисел и арифметические операции в цифровых устройствах. Микропроцессорные устройства и системы на базе МП КР580ВМ80), страница 54

Р6.20. Для того чтобы МП мог выполнить команду, ему необходимо сообщить код операции, операнды или их адреса (РОНы МП, ячейки памяти), а также адрес, куда следует поместить результат. Адресацией называется способ указания адресов операндов и результат. При прямой адресации физический (исполнительный) адрес операнда указывается прямо в коде команды. (Пример: команды INR B – инкремент регистра В; в данной команде и операнд, и результат операции находятся в РОНе В микропроцессора). При непосредственной адресации в команде указывается сам операнд. (Пример: команда MVI B. 00 – загрузка в регистр В константы 00; здесь операнд указан непосредственно, а адрес результат – регистр В – прямо).

При неявной адресации адрес операнда или результат подразумевается самим кодом операции: таким способом чаще всего адресуется аккумулятор. (Пример: команда СМА инверсия разрядов аккумулятора).

При косвенной адресации исполнительный адрес определяется микропроцессором по косвенным признакам. (Пример: команда INR M – инкремент ячейки памяти, адрес которой находится в регистровой паре HL). Существуют многочисленные разновидности косвенной адресации (относительная, индексная и др.). В МП КР580 они не применяются, но применяются, например, в МП К1810ВМ86.

Использование различных видов адресации позволяет уменьшить формат команд, сэкономить память и, в конечном счете, повысить производительность МП.

Р6.21. а) Прямой адрес РОНа в однобайтовых командах. Пример: команда ADD B, в коде которой 10000000 последних три разряда 000 – код (адрес) РОНа В:

прямые адреса двух РОНов в однобайтовых командах. Пример: команда MOV C, E, в коде которой 01001011 разряды 001 и 011 – коды РОНов С и Е;

прямой адрес регистровой пары в однобайтовых командах (команда DAD D, в коде которой 00001001 5-й и 4-й разряды (считая справа) 01 – код регистровой пары DE);

прямой адрес порта ввода или вывода (второй байт в двухбайтовой команде IN 05, в которой 05 – это код одного из портов ввода);

прямой адрес ячейки памяти, содержащейся во 2-м и 3-м байтах трехбайтовых команд (LDA 0000).

б) Диапазон адресов регистров МП КР580 0…7 = 111(2) (см. табл. П3.1); диапазон адресов портов 0…255 = 11111111(2) = FF(16); диапазон адресов ячеек памяти 0…65535 = 1111111111111111(2) = FFFF(16).

Р6.22. Восьмибитовый операнд во вторых байтах двухбайтовых команд (пример ADI F1H);

16-битовый операнд во вторых и третьих байтах команд. Пример: LXI B, D011H; здесь используется прямая адресация регистровой пары ВС и непосредственная адресация операнда D011.

Р6.23. Регистровая косвенная адресация – это двухступенчатая прямая адресация: первый байт команды содержит адрес регистровой пары, в которой находится адрес операнда. Пример: команда LDAX B. В коде этой команды 00001010 5-й и 6-й (считая справа) разряды 00 – это код регистровой пары ВС, в которой находится адрес ячейки памяти ЗУ, содержащей операнд, загружаемый в аккумулятор. Другой пример – команда ADD M, в коде которой 10000110 разряды 110 – это код, указывающий местонахождение адреса операнда – регистровую пару HL.

Р6.24. а), д), е), ж) прямая адресация; б) непосредственная адресация; в) косвенная адресация; з) прямая адресация регистра А и непосредственная адресация операнда FF.

Р6.25. а) Результат выполнения операции положительный (первый разряд справа), отличный от нуля (второй разряд), перенос между полубайтами отсутствует (4-й разряд), число единиц в байте результата нечетное (6-й разряд), перенос из старшего разряда отсутствует (8-й разряд); 3, 5 и 7-й разряды полезной информации не несут;

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

Р2.26. а) (А) = 01110011; (В) = 00001110; (РП) = 00010010;

б) (А) = 01010111; (В) = 00001110; (РП) = 00010010;

в) (А) = 11001010; (В) = 00001110; (РП) = 10000110;

г) (А) = 01100101; (В) = 00001111; (РП) = 00000110.