|
УСЛОВИЕ
ЗАДАНИЯ:
Скопировать
содержимое ячеек диапазона 130..13F в диапазон,
начинающийся
с адреса 150. (все данные в 16-ой системе)
ПЛАН
РЕШЕНИЯ:
1. Задание начальных значений ( стартового адреса диапазона-источника= 130, стартового адреса диапазона-приёмника= 150, числа шагов цикла= 10). (все данные в 16-ой системе)
Примечание. Расчет значения счетчика цикла:
CX= (13F - 130) + 1 = F + 1 = 10 (расчёты в 16-ой системе)
2. Организация цикла: AL <- [SI] [DI]<- AL (последовательное копирование содержимого ячеек 130,131,132,...,13F в ячейки 150,151,152,...,15F соответственно)
3. Завершение работы программы (INT 20)
КОД
ПРОГРАММЫ:
100 MOV SI,0130 ; SI <- 130 (стартовый адрес диапазона-источника= 130) 103 MOV DI,0150 ; DI <- 150 (стартовый адрес диапазона-приёмника= 150) 106 MOV CX,0010 ; CX <- 10 (число шагов цикла = размеру дипазона = 10)
; цикл по перебору ячеек диапазона: 109 MOV AL,[SI] ; AL <- [SI] (копирование в регистр AL содержимого очередной ячейки диапазона) 10B MOV [DI],AL ; [DI] <- AL (размещение в очередной ячейке диапазона-приёмника содержимого AL) 10D INC SI ; SI <- SI + 1 (наращивание адреса диапазона-источника: +1) 10E INC DI ; DI <- DI + 1 (наращивание адреса диапазона-приёмника: +1) 10F LOOP 109 ; CX <- CX-1 После чего, если CX <> 0 - переход по адресу 109
111 INT 20 ; завершение работы
ПРОВЕРКА
РЕШЕНИЯ:
Для проверки решения уменьшим значение счетчика цикла СХ до 3. Кроме того, будем считать, что изначально в ячейках 130..132 находятся следующие числа: [130] = 10 [131] = 11 [132] = 12 100: SI = 130 103: DI = 150 106: CX = 3 (т.к. проверка проводится для первых 3-х ячеек диапазона)
109: AL = [130] = 10 10B: [150]= AL= 10 (содержимое 1-ой ячейки скопировано) 10D: SI= 130+1= 131 10E: DI= 150+1= 151 10F: CX= 3-1= 2 (CX=2>0, поэтому следует переход на адрес 109)
109: AL= [131]= 11 10B: [151] = AL = 11 (содержимое 2-ой ячейки скопировано) 10D: SI= 131+1= 132 10E: DI= 151+1= 152 10F: CX= 2-1= 1 (CX=1>0, поэтому следует переход на адрес 109)
109: AL= [132]= 12 10B: [152]= AL = 12 (содержимое 3-ей ячейки скопировано) 10D: SI= 132+1= 133 10E: DI= 152+1= 153 10F: CX= 1-1= 0 (CX= 0, поэтому цикл заканчивается)
111: INT 20 - завершение работы.
РЕЗУЛЬТАТ
РЕШЕНИЯ:
[150]= 10 [151]= 11 [152]= 12 |