>
. CODE
....
cld
lea si, msg; в SI адресу джерела
mov ax, 0b800h; початок сегмента відеопам'яті
< p>
mov es, ax; помістити в додатковий сегмент lea di, es: (0a0h * 3); 4-й рядок зверху p>
mov cx, LEN; LEN - кількість виведених символів
rp: movsb; переслати символ в поточну позицію екрану
inc di; переступити через позицію атрибута
loop rp; повторити до вичерпання (CX)
.... ; рядок 'Все OK' буде виведена в 4-й рядок
; дисплея зверху.
3. REP ; Префікс повторення команди. Наприклад закінчення попередньої програми може бути записано у вигляді:
В
....
mov cx, LEN; незважаючи на те, що массів'Все OK'будет
rep movsb; скопійований в область пам'яті B800: (A0 * 3), на
; екран дисплея буде виведено: ВеOK. Чому?
4. CMPSB ; здійснює порівняння байта рядки джерела c адресою (SI) і байти рядка приймача з адресою (DI): тобто виробляє віднімання ((SI)) - ((DI)). Чи не плутати з командою CMP DST, SRC в якій навпаки, виробляється віднімання джерела з приймача. Команда CMPSB неявно зменшує (CX) на 1 і збільшує (SI) і (DI) на 1, якщо (DF) = 0. p> 5. REPZ або REPE ; префікс повторення. Виконання команди завершується, коли (CX) = 0 чи (ZF) = 0. <В
....
. DATA
src DB 'To be, or not to be '
dst DB' To be, or not to be '
len = $ - dst; len одно 19
. CODE
....
cld; (DF) = 0
push ds; поєднати адреси
pop es; сегментів ds і es
mov cx, len; довжину рядка dst переслати в cx
lea di, dst; завантажити адресу (зміщення) рядки dst в DI
lea si, src
repe cmpsb; порівнювати побайтно strong>
je equal; якщо всі байти збіглися, то перейти до мітці
not cx; якщо ні - обчислити номер незбіжних байт strong>
add cx, len;
jmp notequal;
equal: ....
....
notequal: ....
Наприкінці цього прикладу номер першого неспівпадаючого байта (CX) = 5. br/>
КОМАНДИ управління мікр...