Иллюстрированный самоучитель по Assembler


MOVS Пересылка данных из строки в строку - часть 2


txt_len equ S-txt ;Ee длина

;В 'полях данных дополнительного сегмента данных,

;адресуемого через ES :

string db 80 dup (' ')

;В программном сегменте:

lea SI,txt ;DS:SI -> txt

lea DI,string+10.;ES:DI -> string+10

сld ;Движение по строке вперед

mov CX,txt_len ;Столько байтов переслать

rep movsb ;Пересылка

Пример 2


;В полях данных сегмента данных, адресуемого через DS:

txt db 'А',84h, 'В',84h, 'A',84h, 'P',

db 84h,'И',84h,'Я',84h,'!',84h

txt_len=$-txt ;B программном сегменте:

mov AX,0B800h ;Сегментный адрес видеобуфера

mov ES,AX ;Инициализируем ES

;Выведем на экран текст

mov DI,1672 ;Смещение к середине экрана

lea SI,txt ;DS:SI ® txt

сld ;Движение по строке вперед

mov CX,txt_len/2 ;Столько слов переслать

rep movsw ;Пересылка в середину экрана

;красной мерцающей (атрибут

;84h) надписи 'АВАРИЯ!'

Пример 3


;В полях данных сегмента данных, адресуемого через DS:

datal dw 10000 dup(') ;Массив произвольных данных

data2 dw 5000 dup(') ;Массив-приемник

;В программном сегменте

push DS ;Настроим

pop ES ;ES на тот же сегмент данных

mov SI,offset datal;SI -> datal

add SI,5000 ;Сместим SI к середине

;массива

mov DI,offset data2;DI -> data2

mov CX,2500 ;Размер половины массива (в

;словах)

сld ;Движение вперед

rep movsw ;Перешлем вторую половину

;массива datal на место data2

Пример 4


;В полях данных сегмента, адресуемого через DS

file db 'MYFILE.01.DAT1,0 ;Строка-источник

fname db 128 dup(?) ;Строка-приемник

;В программном сегменте

push DS

pop ES ;Теперь ES=DS

mov SI,offset file;DS:SI -> strl

mov SI,128 ;Максимальная длина имени

;файла

сld ;Движение по строке вперед

null: lodsb ;Загрузим в AL очередной

; символ

cmp AL, 0 ;Ищем 0 в конце имени файла

loopne null

;DS:SI ® Первый символ за концом имени файла (за

;завершающим нулем)

dec SI ;SI -> байт с 0 std ;Движение по строке назад

mov ВХ,128 ;Из начального значения СХ

sub BX,CX ;вычтем то, что в СХ осталось

mov СХ,ВХ ;СХ=число символов в имени (с 0)

dec ВХ ;Смещение к 0 от начала имени файла




Начало  Назад  Вперед