|
УСЛОВИЕ
ЗАДАНИЯ:
Просмотреть
ячейки 120..16F и заменить символ "9" символом "5".
ПЛАН
РЕШЕНИЯ:
1. Задание начальных значений до начала цикла (стартового адреса= 120, ASCII-кода символа "5"= 35, ASCII-кода символа "9"= 39, числа шагов цикла= 50).
Примечание. Расчет значения счетчика цикла:
CX= (16F-120)+ 1 = 4F+1= 50
2. Организация цикла: [DI]<->AH (последовательная проверка ячеек с целью поиска в них числа 39, заполнение очередной ячейки кодом 35, если найден символ "9", наращивание содержимого регистра DI)
3. Завершение работы программы (INT 20)
КОД
ПРОГРАММЫ:
100 MOV DI,0120 ; DI<- 120 103 MOV AL,35 ; AL<- 35 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 MOV [DI],AL ; [DI]<- AL (AL= 35) 110 INC DI ; DI<- DI+1 111 LOOP 010A ; CX<- CX-1, после чего, если CX<>0, переход на адрес 10А
113 INT 20 ; завершение работы
ПРОВЕРКА
РЕШЕНИЯ:
Для проверки решения уменьшим значение счетчика цикла СХ до 3. В ячейках 120-122 разместим строку "193" 100: DI = 120 103: AL = 35 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: [121]= 35 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: INT 20 - завершение работы.
РЕЗУЛЬТАТ
РЕШЕНИЯ:
В ячейках 120-122 находятся символы "153" |