Venena, лучше на "ты"
Мы тут все на "ты"
.code
test{
mov es,номер_одного_дескриптора
mov gs,номер_другого_дескриптора
; копирование первой строки
mov esi,offset test_string1
mov edi,0 ; смещение в целевом дескрипторе
mov ecx,test_string1_size
movsb
; копирование второй строки
mov esi,offset test_string2
mov edi,0 ; смещение в целевом дескрипторе
mov ecx,test_string2_size
mov ax,es ; из-за того, что команда movs не может менять целевой сегмент,
push eax ; то мы сохраняем значение ES и копируем в него GS
mov ax,gs
mov es,ax
movsb
pop eax
mov es,ax
ret
.data
test_string1 db "test1\0"
test_string1_size equ $-test_string1
test_string2 db "test2\0"
test_string2_size equ $-test_string2
Что понял - то написал.
Насчет выражения "$" я не уверен - может не сработать - давно уже не приходилось для x86 на ассемблере писать. Смысл "$" : текущий адрес компиляции.