Главная /
Ассемблер в Linux для программистов на C
Ассемблер в Linux для программистов на C - ответы на тесты Интуит
Вводный курс по языку ассемблер знакомит с начальными понятиями, синтаксисом, методами адресации и командами.
Список вопросов:
- # Основными элементами архитектуры IA-32 являются:
- # Какое утверждения про архитектуру IA-32 верно?
- # Регистры процессора служат для:
- # Что происходит при выталкивании элемента из стека?
- # На какой наименьший размер памяти может указать указатель на память?
- # Каким образом число 0x05020107 будет располагаться в памяти в случае little-endian порядка байт?
- # Каким образом число 0x05020107 будет располагаться в памяти в случае big-endian порядка байт?
- # Какие из указанных строк являются корректными операндами команды?
- # Какая директива обязательно размещается перед командами?
- # В какой из приведённых ниже строк содержится метка
- # Операндами команды процессора могут быть:
- # Метки в ассембере используются для:
- # Для объявления неинициализированных данных служит директива:
- # /**************************************** start of sample1.s *******************************/ .data num: .long 0x00000072 other_var: .long 0x00000001, 0x00000002, 0x00000003 .text .globl main main: movl $0x48, %eax movl (num), %eax movl $0x1, %eax movl (other_var), %ecx /**************************************** end of sample1.s *******************************/ Какие виды адресации использованы в вышеприведённом фрагменте программы?
- # /**************************************** start of sample1.s *******************************/ .data num: .long 0x00000072 other_var: .long 0x00000001, 0x00000002, 0x00000003 .text .globl main main: movl (num), %eax movl (other_var), %ecx leal (%eax,%eax,2) ,%ecx /**************************************** end of sample1.s *******************************/ Какие виды адресации использованы в вышеприведённом фрагменте программы?
- # /**************************************** start of sample1.s *******************************/ .data num: .long 0x00000072 other_var: .long 0x00000001, 0x00000002, 0x00000003 .text .globl main main: 1 movl (num), %ebx 2 movl $0x1, %eax 3 movl (%ebx), %eax 4 movl %eax, %ecx /**************************************** end of sample1.s *******************************/ В какой из понумерованных строк, в вышеприведённом фрагменте кода используется метод адресации, обеспечивающий максимальную гибкость программы?
- # /**************************************** start of sample1.s *******************************/ .data num: .long 0x00000072 other_var: .long 0x00000001, 0x00000002, 0x00000003 .text .globl main main: 1 addl (num), %eax 2 movl $0x1, %eax 3 movl (%ebx), %eax 4 movl %eax, %ecx 5 leal 5(%eax), %ebx /**************************************** end of sample1.s *******************************/ В какой из понумерованных строк, в вышеприведённом фрагменте кода используется метод адресации, обеспечивающий максимальную быстродействие программы?
- # /**************************************** start of sample1.s *******************************/ .data some_var: .long 0x00000072 other_var: .long 0x00000001, 0x00000002, 0x00000003 .text .globl main main: 1 leal 0x48, %eax 2 movl $some_var, %eax 3 movl %edx, %eax 4 movl %other_var + 4, %eax 5 movl $1, $ecx /**************************************** end of sample1.s *******************************/ Какие инструкции приведённого ассемберного кода приведут к ошибкам при компиляции?
- # /**************************************** start of sample1.s *******************************/ .data some_var: .long 0x00000072 other_var: .long 0x00000001, 0x00000002, 0x00000003 .text .globl main main: movl $0x48, %eax leal $0x32, %eax leal some_var, %eax leal other_var + 4, %eax leal some_var, $ecx /**************************************** end of sample1.s *******************************/ Какие команды приведённого ассемберного кода приведут к ошибкам при компиляции?
- # /**************************************** start of sample1.s *******************************/ .data .text .globl main main: 1 pushl $0x10 %eax 2 popl %ebx 3 pushl %eax 4 popl %ebx 5 pushl %eax 6 popw %ax $10 7 popw %bx /**************************************** end of sample1.s *******************************/ Команды из каких строк приведённого ассемберного кода приведут к ошибкам при компиляции?
- # /**************************************** start of sample1.s *******************************/ .data some_var: .long 0x00000052 other_var: .long 0x00000071, 0x00000072, 0x00000073 .text .global main main: movl $(other_var+4), %ecx movl $some_var, %edx /**************************************** end of sample1.s *******************************/ Какое значение окажется в регистре ecx после выполнения вышеописанных строк кода?
- # /**************************************** start of sample1.s *******************************/ .data some_var: .long 0x00000072 test_var: .long 0x00000071, 0x00000072, 0x00000073 dummy_var: .long 0x00000072, 0x00000073, 0x00000074 .text .global main main: 1 leal dummy_var, %ecx 2 movl 0x00000072 %ecx 3 leal $0x00000072, %ecx 4 movl $dummy_var, %ecx 5 movl $test_var, %ecx /**************************************** end of sample1.s *******************************/ В результате каких операций в регистр ecx будет занесено значение 0x72?
- # /**************************************** start of sample1.s *******************************/ .data some_var: .long 0x00000033 test_var: .long 0x00000032, 0x00000033, 0x00000034 dummy_var: .long 0x00000033, 0x00000034, 0x00000035 .text .global main main: 1 leal dummy_var, %eax 2 movl $0x00000033 %eax 3 leal 0x00000033, %eax 4 movl $dummy_var, %eax 5 movl $test_var, %eax 6 pushl $0x33 7 popl %eax /**************************************** end of sample1.s *******************************/ В результате каких операций в регистр eax будет занесено значение 0x33?
- # /**************************************** start of sample1.s *******************************/ .data some_var: .long 0x00000033 .text .global main main: 1 movl $2, %eax 2 addl $2, %eax 3 incl %eax 4 incl %eax 5 decl %eax 6 decl %eax /**************************************** end of sample1.s *******************************/ В результате каких операций в регистр eax будет занесено значение 0x4?
- # /**************************************** start of sample1.s *******************************/ .data some_var: .long 0x00000001 .text .global main main: 1 movl $3, %ecx 2 addl $1, %ecx 3 addl $4, %ecx 4 movl $some_var, %eax 5 leal 3(%eax), %ecx /**************************************** end of sample1.s *******************************/ В результате каких операций в регистр ecx будет занесено значение 0x4?
- # /**************************************** start of sample1.s *******************************/ .data some_var: .long 0x00000001 .text .global main main: 1 movl $3, %ecx 2 xorl %ecx, %ecx 3 addl $1, %ecx 4 addl $3, %ecx 5 addl $3, %ecx 6 testl $some_var, %eax /**************************************** end of sample1.s *******************************/ В результате каких операций в регистр ecx будет занесено значение 0x4?
- # /**************************************** start of sample1.s *******************************/ .data some_var: .long 0x00000012 .text .global main main: movl $12, %eax cmpl $15, %eax 1 je the_end cmpl $15, %eax 2 jg the_end cmpl $15, %eax 3 jle the_end cmpl $15, %eax 4 jmp the_end the_end: xor %eax, %eax # return 0; /**************************************** end of sample1.s *******************************/ В результате выполнения которой команды перехода будет выполнен переход на метку the_end при выполнении вышеприведённой программы?
- # /**************************************** 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 в вышеприведенном фрагменте?
- # /**************************************** start of sample1.s *******************************/ .data printf_format: .string "%d\n " .text .globl main main: 1 movl $0, %eax 2 xorl %eax, %eax 3 subl %eax, %eax 4 testl %eax, %eax 5 orl %eax, %eax ret /**************************************** end of sample1.s *******************************/ Какие из инструкций в вышеприведённой программе обнуляют регистр eax?
- # /**************************************** 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 *******************************/ Какие утверждения про приведённую выше программу верны?
- # Использование каких инструкций связано с использованием инструкций lods и stos?
- # Для выполнения следующей инструкции текущей подпрограммы в отладчике gdb используется команда:
- # Для получения информации о текущей или заданной строке кода в отладчике gdb используется команда:
- # Для установки точки останова в отладчике gdb используется команда:
- # Для вывода на экран выражений в отладчике gdb используется команда: