/**************************************** start of sample1.s *******************************/ .data printf_format: . string "%s\n " str_in: .string "abc123()!@!777 " .set str_in_length, .-str_in .bss str_out: .space str_in_length .text .globl main main: pushl %ebp movl %esp, %ebp movl $str_in, %esi movl $str_out, %edi movl $str_in_length - 1, %ecx 1b: lodsb incb %al stosb loop 1b movsb popl %ebp ret /**************************************** end of sample1.s *******************************/
Какие утверждения про приведённую выше программу верны?
(Ответ считается верным, если отмечены все правильные варианты ответов.)
Варианты ответа
операторы stos и lods изменяют значения регистров, которые они используют для хранения адресов(Верный ответ)
инструкция stosb берёт данные по адресу из регистра edi и сохраняет в регистр al
инструкция lodsb берёт данные по адресу из регистра esi и сохраняет в регистр al(Верный ответ)
программа в цикле напрямую копирует данные из памяти, начиная с адреса str_in в память, начиная с адреса str_out
программа размещает адрес входного массива данных в регистре esp (Верный ответ)