назад

Типовой пример №2.

Заполнение ячеек заданного диапазона указанным рядом чисел:

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

Ввести в ячейки с адреса 120 числа 7,B,...,FF (все данные в 16-ой системе)

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

1. Задание начальных значений 
( начального числа= 7,
стартового адреса= 120,
числа шагов цикла= 3F).

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

CX= (FF-7):4 + 1 = F8:4+1= 3E+1= 3F


2. Организация цикла: [DI]<- AL
(последовательное заполнение ячеек 120,121,122,... числами 7,B,F,...,FF)

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

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

100 MOV AL,07   ; AL<- 7      (начальное число = 7)
102 MOV DI,0120 ; DI<- 120 (стартовый адрес = 120)
105 MOV CX,003F ; CX<- 3F (число шагов цикла= 3F)

; цикл по перебору ячеек диапазона:
108 MOV [DI],AL ; [DI]<- AL (размещение в очередной ячейке памяти очередного числа)
10A ADD AL,04 ; AL<- AL+4 (наращивание числа: +4)
10C ADD DI,0001 ; DI<- DI+1 (наращивание адреса: +1)
10F LOOP 108 ; CX<- CX-1 После чего, если CX<>0, следует переход по адресу 108

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

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

Для проверки решения уменьшим значение счетчика цикла СХ до 3.

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

108: [120]= 7
10A: AL= 7+4= B
10C: DI= 120+1= 121
10F: CX= 3-1= 2 (CX=2>0, поэтому следует переход на адрес 108)

108: [123]= B
10A: AL= B+4= F
10C: DI= 121+1= 122
10F: CX= 2-1= 1 (CX=1>0, поэтому следует переход на адрес 108)

108: [126]= F
10A: AL= F+4= 13
10C: DI= 122+1= 123
10F: CX= 1-1= 0 (CX= 0, цикл завершен)

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

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

   [120]= 7 [123]= B [126]= F