|
УСЛОВИЕ
ЗАДАНИЯ:
Просуммировать
содержимое ячеек 140..157. Результат сохранить в ячейках, начиная
с ячейки 170
ПЛАН
РЕШЕНИЯ:
1. Задание начальных значений (стартового адреса= 140, числа шагов цикла= 18, начального значения суммы= 0).
2. Организация цикла: (ADD AL,[BP])и(ADC AH,00) (последовательное добавление содержимого ячеек 140..157 к накапливаемой сумме)
3. Сохранение найденной суммы (в ячейках памяти 0170 и 0171: [170]=AL [171]=AH).
4. Завершение работы программы (INT 20)
КОД
ПРОГРАММЫ:
100 MOV AX,0000 ; в регистре AX накапливаться сумма, поэтому AX = 0 103 MOV BP,0140 ; в регистр BP заносится стартовый адрес ячеек диапазона 106 MOV CX,0018 ; в регистр CX заносится количество ячеек диапазона
; цикл по перебору ячеек диапазона: 109 ADD AL,[BP] ; добавление к содержимому AL содержимого ячейки [BP] 10C ADC AH,00 ; добавление 1, если регистр AL оказался переполненным 10F INC BP ; наращивание значения указателя адресов BP 110 LOOP 109 ; CX<- CX-1, после чего, если CX<>0, переход на адрес 10А 112 MOV [170],AX ; сохранение в ячейках 170 и 171 найденной суммы 115 INT 20 ; завершение работы
ПРОВЕРКА
РЕШЕНИЯ:
Для проверки решения уменьшим значение счетчика цикла СХ до 3. В ячейках 140-142 разместим числа 7A, D9, E6. 100: AX = 0 103: BP = 140 106: CX = 3 (т.к. проверка проводится для первых 3-х ячеек диапазона)
109: AL= AL+[140]= 0+7A= 7A (кроме того, Carry Flag CF= 0) 10C: AH= AH+0+CF= 0+0+0= 0 10F: BP= 140+1= 141 110: CX= 3-1= 2 (CX=2>0, поэтому следует переход на адрес 109)
109: AL= AL+[141]= 7A+D9= 53 (кроме того, Carry Flag CF= 1) 10C: AH= AH+0+CF= 0+0+1= 1 10F: BP= 141+1= 142 110: CX= 2-1= 1 (CX=1>0, поэтому следует переход на адрес 109)
109: AL= AL+[142]= 53+E6= 39 (кроме того, Carry Flag CF= 1) 10C: AH= AH+0+CF= 1+0+1= 2 10F: BP= 142+1= 143 110: CX= 1-1= 0 (CX=0, цикл завершён) 112: [170]= AL= 39 [171]= AH= 2 (найденная сумма= 239)
116: INT 20 - завершение работы.
РЕЗУЛЬТАТ
РЕШЕНИЯ:
В ячейку 170 занесено число 39, в ячейку 171 число 2. |