ВУЗ:
Составители:
Рубрика:
27
4.4. Изучение команд обработки блоков данных. Цикл LOOP
Во время изучения логики работы команд обработки блоков данных во
избежание ошибок реализуйте программу сначала без циклов, чтобы можно
было бы проконтролировать процесс выполнения по шагам. Например, для
решения задачи заполнения переменной типа string заданным количеством
одинаковых символов, запишите несколько строк с командой STOSB, и толь-
ко убедившись в правильности алгоритма, реализуйте цикл (REP STOSB):
var S : string; C : char; N : byte;
begin
S := ''; // строка для заполнения
C := 'A'; // символ для заполнения строки
N := 3; // количество символов в строке
ASM
LEA EDI, S // адрес строки
XOR CX,CX // очистка счетчика CX = 0
MOV CL,N // в счетчик занести количество повторений
MOV AL,C // символ для заполнения поместить в AL
MOV [EDI],CL // заполнить S[0] – количество символов в строке
INC EDI // символы записывать, начиная с S[1]
CLD // установить инкремент адреса
STOSB // записать три раза по одному символу
STOSB
STOSB
END;
end.
При необходимости использования цикла в цикле можно использовать
цикл LOOP, но при выполнении вложенного цикла не забывайте сохранять
значение регистра CX (счетчик внешнего цикла), например, в стеке:
Label L1,L2;
begin
ASM
MOV CX,2
L1: PUSH CX
MOV CX,3
L2: NOP
LOOP L2
POP CX
LOOP L1
END;
end.
Примерные варианты контрольных задач:
1. Найти в строке позицию заданного символа.
2. Определить, есть ли в двух строках одинаковые символы на одинако-
вых позициях.
3. Найти позицию, на которой две строки символов отличаются.
Страницы
- « первая
- ‹ предыдущая
- …
- 25
- 26
- 27
- 28
- 29
- …
- следующая ›
- последняя »