Главная /
Ассемблер в Linux для программистов на C /
/**************************************** start of sample1.s *******************************/ .data .text .globl main main: movl $0, %eax movl $4, %ecx sum: addl %ecx, %eax loop sum movl $0, %eax ret /**************************************** end of sample
/**************************************** start of sample1.s *******************************/
.data
.text
.globl main
main:
movl $0, %eax
movl $4, %ecx
sum:
addl %ecx, %eax
loop sum
movl $0, %eax
ret
/**************************************** end of sample1.s *******************************/
Какие действия выполняются командой loop в вышеприведенном фрагменте?
вопрос
Правильный ответ:
уменьшает значение регистра eax на 1
увеличивает значение регистра eсx на 1
если %ecx = 0, передать управление следующей за loop команде
если %ecx не равно 0, передать управление на метку sum
если %eax больше 0, передать управление на метку sum
Сложность вопроса
63
Сложность курса: Ассемблер в Linux для программистов на C
50
Оценить вопрос
Комментарии:
Аноним
Если бы не эти подсказки - я бы не решил c этими тестами интуит.
31 янв 2018
Аноним
Экзамен сдан на 4 с минусом. Спасибо за ответы
06 фев 2016
Другие ответы на вопросы из темы программирование интуит.
- # Каким образом число 0x05020107 будет располагаться в памяти в случае big-endian порядка байт?
- # Какая директива обязательно размещается перед командами?
- # Метки в ассембере используются для:
- # /**************************************** start of sample1.s *******************************/ sub: pushl %ebp movl %esp, %ebp subl $8, %esp movl 8(%ebp), %eax movl 12(%ebp), %eax movl 16(%ebp), %eax movl 20(%ebp), %eax movl %ebp, %esp popl %ebp ret main: pushl $0x00000010 pushl $0x00000020 pushl $0x00000020 pushl $0x00000041 call sub addl $12, %esp /**************************************** end of sample1.s *******************************/ Какие утверждения про приведённую выше программу верны?
- # /**************************************** 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 *******************************/ Какие утверждения про приведённую выше программу верны?