назад

Типовой пример №5

Суммирование содержимого ячеек заданного диапазона:

УСЛОВИЕ ЗАДАНИЯ:

Просуммировать содержимое ячеек 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.