|
||||
LOad String Byte/Word/Double word operands)(LOad String Byte/Word/Double word operands) Загрузка строки байтов/слов/двойных слов
Назначение: загрузка элемента из последовательности (цепочки) в регистр-аккумулятор al/ax/eax.
Примеры программ int equal_str(char *string1,char *string2) { int r; int len1,len2; len1=strlen(string1); len2=strlen(string2); if(len1==len2) asm volatile ( "movl %[str1],%%esi\n" //str1 ->esi "movl %[str2],%%edi\n" //str2 -> edi "movl %[len],%%ecx\n" //len ->ecx "rep cmpsb\n" //повторяем сравнение строк с уменьшением значения ecx "jz yes\n" //результат в zf. Если в zf=0 (то есть все элементы оказались равны) "movl $0,%%eax\n" "jmp exit\n" "yes:\n" "movl $1, %%eax \n" "exit:\n" "movl %%eax,%[res]\n" :[res]"=a" (r) :[str1]"S" (string1), [str2]"D"(string2), [len]"c"(len1) ); else r=0; return r; } void copy_str( char* dst, char *src,int count) { asm ("cld\n" "rep movsb\n" : /*входные операнды отсутствуют*/ :"S"(src), "D"(dst), "c"(count)); cout<<dst<<endl; }
|
||||
|