А.А. Белеванцев, С.С. Гайсарян, В.П. Иванников, Л.С. Корухова, В.А. Падарян - Задачи экзаменов по вводному курсу программирования, страница 4
Описание файла
PDF-файл из архива "А.А. Белеванцев, С.С. Гайсарян, В.П. Иванников, Л.С. Корухова, В.А. Падарян - Задачи экзаменов по вводному курсу программирования", который расположен в категории "". Всё это находится в предмете "алгоритмы и алгоритмические языки" из 1 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .
Просмотр PDF-файла онлайн
Текст 4 страницы из PDF
Даны две перемешанные таблицы Т1[13] и Т2[13] с функциейпервичногоперемешиванияI=K%13,функциейвторичногоперемешивания I=(I+4)%13 , где K – ключ. В таблицы Т1 и Т2 занесеныследующие ключи:23АдресТ1Т201234234052714789185106191112636Дополнить таблицу Т2 ключами из таблицы T1, причем, порядок записиключей такой же, как и был при заполнении таблицы Т1. Указатьсодержимое таблицы Т2 после дополнения:10. Ответить на вопрос: может ли в дереве Фибоначчи высоты 10существовать вершина, левое поддерево которой имеет на 50 вершинбольше, чем правое поддерево? (Считать, что пустое дерево имеет высоту0.) Ответ обосновать.2.5. ВАРИАНТ_1.
2012 г. ( “Архитектура ЭВМ и языкассемблера”)1.Инструкции 1-6 выполняются последовательно. Выпишите вшестнадцатеричном формате значение регистра EAX послевыполнения помеченных инструкций.section .bss y resw 4 section .data x dd 0xFEE1DEAD section .text movsx eax, word [x + 2] ; 1 imul eax, eax, 16 ; 2 ‐ (А) ror eax, 24 ; 3 mov al, 42 ; 4 ‐ (Б) mov word [y + 5], ax ; 5 mov eax, dword [y + 4] ; 6 ‐ (В) 2.Для данного фрагмента ассемблерногосоответствующий код на языке Си.24кодавосстановить mov eax, dword [a] mov eax, dword [eax] mov ecx, dword [b] lea eax, [eax + 4 * ecx] movsx ax, byte [eax] mov word [c], ax static ________________ a; static ________________ b; static ________________ c; ________________ = ________________;3.Для данного фрагмента ассемблерного кода восстановитесоответствующий код на языке Си, заполнив пропуски. mov eax, dword [d] test eax, eax jle .L5 xor edx, edx jmp .L4 .L3: add edx, 1 cmp dword [d], edx jle .L5 .L4: mov eax, dword [b+edx*4] add eax, dword [a+edx*4] test eax, eax mov dword [c+edx*4], eax jns .L3 neg eax mov dword [c+edx*4], eax add edx, 1 cmp dword [d], edx jg .L4 .L5: 25#define N ... static ________________ a[N]; static ________________ b[N]; static ________________ c[N]; static ________________ d; for (__________; __________; __________) { ______________________; if (_______________) { __________________; } } 4.
Си-программа, использующая структуру order, была скомпилированана платформе IA‐32/Linux.typedef struct t_order { char status; int vendorId; char partNo[16]; struct usrInfo * customer; } order, *p_order; Выпишите значения:А) sizeof(order)Б) Смещение поля customer Реализуйте приведенный Си-кодна языке ассемблера: В) static order o; o.partNo[10] = 0; Г) static p_order po; 26 static int x; x = po‐>vendorId; 5. Компилятор построил для тела Си-функции f следующий ассемблерныйкод. Исходя из этого кода и того, что было использовано соглашениеcdecl, восстановите заголовок функции: типы параметров, ихпорядок, тип возвращаемого значения. mov edx, dword [ebp+16] movzx ecx, byte [ebp+20] mov ebx, dword [ebp+12] mov eax, edx sal eax, cl mov dword [ebx], eax mov eax, dword [ebp+8] mov dword [eax], edx mov eax, dword [ebx] ____________ f(___________________ , ___________________ , ___________________ , ___________________ ) { *w = y << x; *v = y; return *w; } 6.
Реализуйте на языке ассемблера заданную функцию. Запрещенопользоваться командами ввода/вывода из файла io.inc. Передвызовом функции g стек уже выровнен должным образом.int g(short *pnum) { int tmp; printf("%d\n", tmp = scanf("%hd", pnum)); return tmp; } 7.Для данного фрагмента Си-кода приведите соответствующийассемблерный код, учитывая побочные эффекты. Значение выраженияпоместите в регистр EAX. static int a, b, c; 27++a && (c = b /a ); 8. Перепишите фрагмент кода без использования строковых инструкций,но с сохранением итогового значения регистра ECX и флага ZF. cld mov esi, dword [a] mov edi, dword [b] mov ecx, 16 repne cmpsw 9.
Используется 8-и битный формат, удовлетворяющий требованиямстандарта IEEE 754: знаковый бит, 3 бита – порядок, 4 бита мантисса. Заполните таблицу. Округление выполнять к ближайшемучетному.ЧислоНаибольшее нормализованноеНаименьшееденормализованное2/513Битовое представление10. Память модельного компьютера состоит из 32 однобайтовых ячеек.
2канальный ассоциативный кэш имеет следующие характеристики:B=2 байта в блоке, S=2 канала, E=2 блока в канале, вытесняется блок снаиболее давним использованием (LRU). В начальный моментвремени кэш пуст. Определите, что происходит при последовательномобращении к следующим адресам памяти (промах/попадание).АдресПромах/Попадание 2 = 00010b 3 = 00011b 8 = 01000b 16 = 10000b 29 = 11101b 8 = 01000b 2828 = 11100b 2.6. Коллоквиум №1. 2012 г. ( “Архитектура ЭВМ и языкассемблера”)1.
Выпишите значение регистра AL в шестнадцатеричной системе и ввиде десятичного числа (знакового и беззнакового), а также значенияфлагов CF, OF, ZF, SF после выполнения следующих инструкций.MOV AL, 145 ADD AL, 157 2. Выписать значение регистра EAX после выполнения следующего кода.section .data a dw 0x0DEC b dw 0x4A6F c dw 0x7921 d dw 0xFEFF section .text mov ebx, dword [с] mov eax, ‐1 movzx ax, bh 3. Для данного фрагмента ассемблерного кода восстановитьсоответствующий код на языке Сиmov ecx, dword [a] movsx edx, word [d] mov eax, ecx imul eax, dword [b] sub eax, edx movsx ebx, word [c] cdq idiv ebx sub ecx, eax mov dword [a], ecx static ________________ a; static ________________ b; static ________________ c; static ________________ d; ______ = __________________________; 4.
Для данного фрагмента ассемблерного кода восстановитьсоответствующий код на языке Си.29mov edx, dword [b] mov eax, dword [a] mov edx, dword [edx] lea eax, [4*eax] neg eax mov eax, dword [edx+eax] mov dword [c], eax static _____________ a; static _____________ b; static _____________ c; ______ = ______________________; 5. Для данного фрагмента ассемблерного кода восстановитьсоответствующий код на языке Си xor ecx, ecx xor eax, eax .L3: mov edx, dword [a+ecx*4] cmp edx, 1024 jle .L2 mov dword [a+ecx*4], 1024 mov edx, 1024 .L2: add ecx, 1 add eax, edx cmp ecx, 16 jne .L3 mov dword [sum], eax #define N ____ #define C ____ static int a[N]; static int sum; _______________; for (__________; __________; ________) { if (_____________) { ____________________; } ____________________; } 306.
Для данного фрагмента Си-кода приведите соответствующийассемблерный код. Необходимо учесть побочные эффекты. Значениевыражения поместите в регистр EAX.static int a, b, c; (a = ++b) && (c *= 7); 2.7. Коллоквиум №2. 2012 г. ( “Архитектура ЭВМ и языкассемблера”)1.
В приведенной ниже Си-программе (скомпилирована на платформе IA32/Windows), использующей структуру данных gadget, выпишитезначения: :А) sizeof(struct gadget) Б) Смещение поля prototype В) sizeof(union i_face) Г) Смещение поля magicstruct gadget { int id; short weight; union i_face { double resistor; char magic; int* i_desc; long pin_map[2]; } connector; struct gadget * prototype; }; 2. Компилятор построил для тела Си-функции f следующийассемблерный код.Исходя из этого кода, и того, что было использовано соглашение cdecl,восстановите заголовок функции: типы параметров, их порядок, типвозвращаемого значения.31 mov ecx, dword [ebp+12] mov eax, dword [ebp+20] movsx edx, byte [ebp+8] sal edx, 2 mov ebx, ecx sub ebx, edx mov dword [eax], ebx movsx edx, word [ebp+16] mov dword [ecx], edx ____________ f(___________________ , ___________________ , ___________________ , ___________________ ) { *c = d ‐ a; *d = b; return c; } 3.
Реализуйте на языке ассемблера заданную функцию.__attribute__((fastcall)) int f(int x, int y) { int t = (x / y) >> 10; return t; } 4. Реализуйте на языке ассемблера заданную функцию. Перед вызовомфункции g стек уже выровнен должным образом.long g(long *p) { long tmp; scanf(“%d %d”, &tmp, p); return *p – tmp; } 5. Выписать значение регистров ESI, EDI и ECX после выполненияследующего кода.Метке team соответствует адрес 0x4096.32section .data BUFSIZE equ 16 team: db “Charlie Brown“ times BUFSIZE‐$+team db 0 db “Snoopy“ times 2*BUFSIZE‐$+team db 0 db “Linus“ times 3*BUFSIZE‐$+team db 0 db “Lucy“ times 4*BUFSIZE‐$+team db 0 section .text cld mov esi, team mov edi, team add esi, 3*BUFSIZE add edi, 2*BUFSIZE mov ecx, 16 repe cmpsb 6.
Используется 10-ти битный формат, удовлетворяющий требованиямстандарта IEEE 754: знаковый бит, порядок - 4 бита, мантисса 5 битов. Заполните пустые ячейки таблицы.Описание Ноль Наибольшее нормализованное Наименьшее положительное 1/3 Точное значение 0.0 Номер вашей группы[101 – 106]33Битовое представление 0_0000_00000 2.8. ВАРИАНТ_1. 2011 г. ( “Архитектура ЭВМ и языкассемблера”)1. Выпишите значение регистра AL в шестнадцатеричной системе и вдесятичной системе, рассматривая содержимое регистра как беззнаковоечисло и как знаковое число, а также значения флагов CF, SF, OF и ZFпосле выполнения следующих инструкций. а) б) mov al, ‐20 add al, 144 mov al, 80 sub al, 86 2. Выписать в шестнадцатеричном виде значение регистра EAX, послевыполнения следующей инструкции.section .data a dw 0xDEAD b dw 0xF00D c dw 0xCAFE d dw 0xBABE section .text movsx eax, word [a + 1] 3.