назад

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

Подсчёт количества образцов в заданном диапазоне:

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

Подсчитать количество символов «9» в диапазоне ячеек 120..16F. Результат сохранить в ячейке 170.

ПЛАН РЕШЕНИЯ:

1. Задание начальных значений до начала цикла 
(стартового адреса= 120,
ASCII-кода символа "5"= 35,
счётчика образцов= 0,
числа шагов цикла= 50).

Примечание. Расчет значения счетчика цикла:

CX= (16F-120)+ 1 = 4F+1= 50

2. Организация цикла: [DI]<->AH
(последовательная проверка ячеек с целью поиска в них числа 39,
наращивание значения счётчика образцов, если найден символ "9",
наращивание содержимого регистра DI)

3. Завершение работы программы (INT 20)

КОД ПРОГРАММЫ:

100 MOV DI,0120 ; DI<- 120
103 MOV AL,0 ; AL<- 0
105 MOV AH,39 ; AH<- 39
107 MOV CX,0050 ; CX<- 50

; цикл по перебору ячеек диапазона:
10A CMP [DI],AH ;[DI]<->AH
10C JNZ 0110 ; переход, если "Not Zero" (не равное 0 значение)
10E INC AL ; AL<- AL+1
110 INC DI ; DI<- DI+1
111 LOOP 010A ; CX<- CX-1, после чего, если CX<>0, переход на адрес 10А
113 MOV [170],AL; сохранение найденного количества образцов

116 INT 20 ; завершение работы

ПРОВЕРКА РЕШЕНИЯ:

Для проверки решения уменьшим значение счетчика цикла СХ до 3.
В ячейках 120-122 разместим строку "193"

100: DI = 120
103: AL = 0
105: AH = 39
107: CX = 3 (т.к. проверка проводится для первых 3-х ячеек диапазона)

10A: [120]= 31<->39 Не равно, т.е. имеет место "Not Zero"
10C: переход на адрес 110, т.к. имеет место "Not Zero"
110: DI= 120+1= 121
111: CX= 3-1= 2 (CX=2>0, поэтому следует переход на адрес 10А)

10A: [121]= 39<->39 Равно, т.е. имеет место "Zero"
10C: переход на адрес 110 не следует, т.к. имеет место "Zero"
10E: AL= 0+1= 1 (один образец найден)
110: DI= 121+1= 122
111: CX= 2-1= 1 (CX=1> 0, поэтому следует переход на адрес 10А)

10A: [122]= 33<->39 Не равно, т.е. имеет место "Not Zero"
10C: переход на адрес 110, т.к. имеет место "Not Zero"
110: DI= 122+1= 123
111: CX= 1-1= 0 (CX=0, цикл завершен)
113: [170]= 1 (сохранение количества найденных образцов)

116: INT 20 - завершение работы.

РЕЗУЛЬТАТ РЕШЕНИЯ:

В ячейку 170 занесено число 1