| 
   АПК  | 
  
   Команда  | 
  
   Код  | 
  
   Комментарии  | 
 
| 
   001 002  | 
  
   MOV R0, #35  | 
  
   B8 35  | 
  
   ; Адрес ячейки памяти 35 записан в регистр косвенного адреса R0  | 
 
| 
   003 004  | 
  
   MOV @R0, #05  | 
  
   В0 05  | 
  
   ; Первое слагаемое 05 записано в ячейку памяти по адресу 35  | 
 
| 
   005  | 
  
   INС R0  | 
  
   18  | 
  
   ; Адрес следующей ячейки памяти 36  | 
 
| 
   006 007  | 
  
   MOV @R0, #07  | 
  
   B0 07  | 
  
   ; Второе слагаемое 07 записано в ячейку памяти по адресу 36  | 
 
| 
   008  | 
  
   INС R0  | 
  
   18  | 
  
   ; Адрес ячейки памяти третьего операнда - 37  | 
 
| 
   009 00А  | 
  
   MOV @R0, #03  | 
  
   B0 03  | 
  
   ; Третий операнд (вычитаемое) 03 записан в ячейку памяти 37  | 
 
| 
   00В  | 
  
   DEC R0  | 
  
   C8  | 
  
   ; Возврат на адрес ячейки памяти 36  | 
 
| 
   00С  | 
  
   DEC R0  | 
  
   C8  | 
  
   ; Возврат на адрес ячейки памяти 35  | 
 
| 
   00D  | 
  
   MOV A, @R0  | 
  
   F0  | 
  
   ; Первое слагаемое пересылается в аккумулятор  | 
 
| 
   00Е  | 
  
   INС R0  | 
  
   18  | 
  
   ; Регистр косвенного адреса ука Регистр косвенного адреса указывает на яч. 36  | 
 
| 
   00F  | 
  
   ADD A, @R0  | 
  
   60  | 
  
   ; Сложение содерж. аккумулятора и ячейки 36  | 
 
| 
   010  | 
  
   MOV R3, A  | 
  
   AB  | 
  
   ; Сохранение результата в регистре R3  | 
 
| 
   011  | 
  
   INC R0  | 
  
   18  | 
  
   ; Регистр косвенного адреса указывает на яч. 37  | 
 
| 
   012  | 
  
   MOV А, @R0  | 
  
   F0  | 
  
   ; Операнд 03 (вычитаемое) пересылается в аккум.  | 
 
| 
   013  | 
  
   CPL A  | 
  
   37  | 
  
   ; Инверсия аккумулятора (обратный код)  | 
 
| 
   014  | 
  
   INС A  | 
  
   17  | 
  
   ; (А)←(А ) +1: дополнительный код  | 
 
| 
  
   Окончание табл. 2  | 
 |||
| 
   015  | 
  
   ADD A, R3  | 
  
   6B  | 
  
   ; (А)←(А) + (R3)  | 
 
| 
   016  | 
  
   INС R0  | 
  
   18  | 
  
   ; Регистр косвенного адреса указывает на яч. 38  | 
 
| 
   017  | 
  
   MOV @R0, A  | 
  
   A0  | 
  
   ; ((R0))←(А). Результат в ячейке 38  | 
 
После набора программы необходимо осуществить ее пуск и проверить результат, как это делалось в предыдущем пункте.
3. Выполнить программу умножения однобайтных чисел без знака, как рекомендовано в табл. 3. В этой программе в регистре R1 размещен множитель, а в регистре R2 - множимое. В общем случае результат умножения будет двухбайтным. Старший байт будет размещен в аккумуляторе, а младший байт – в регистре Ri (на месте множителя). Регистр R3 - счетчик программных циклов. В него загружается число 8 (число битов множителя). Умножение выполняется младшими разрядами вперед со сдвигом вправо частичного произведения.
При этом методе умножения содержимое аккумулятора и регистра-расширителя R1 сдвигается вправо на один бит так, что младший бит множителя, выдвигаемый из регистра R1, помещается в триггер признака переноса С. Если бит переноса С = 1, то множимое добавляется к содержимому аккумулятора, если С = 0, то никаких операций не производится.
Затем производится декремент счетчика циклов R3, и если его содержимое равно нулю, то все действия повторяются. Окончательный результат формируется при сдвиге частичного результата на один разряд вправо.
Для определенности программа выполняется при R1 = 32Н, a R2= 0AF. Пуск программы производится, как рекомендовано при выполнении программы табл. 2. Результат можно прочитать, нажав на клавиши «Ci» и «Рг» Содержимое аккумулятора должно быть равно А=01, а R1=4F.
Таблица 3
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.