Главная » Просмотр файлов » Семинары по курсу «Архитектура ЭВМ и язык ассемблера» учебно-методическое пособие. Часть 1. - Е.А. Кузьменкова_ В.С. Махнычев_ В.А. Падарян

Семинары по курсу «Архитектура ЭВМ и язык ассемблера» учебно-методическое пособие. Часть 1. - Е.А. Кузьменкова_ В.С. Махнычев_ В.А. Падарян (1110587), страница 10

Файл №1110587 Семинары по курсу «Архитектура ЭВМ и язык ассемблера» учебно-методическое пособие. Часть 1. - Е.А. Кузьменкова_ В.С. Махнычев_ В.А. Падарян (Семинары по курсу «Архитектура ЭВМ и язык ассемблера» учебно-методическое пособие. Часть 1. - Е.А. Кузьменкова_ В.С. Махнычев_ В.А. Падарян) 10 страницаСеминары по курсу «Архитектура ЭВМ и язык ассемблера» учебно-методическое пособие. Часть 1. - Е.А. Кузьменкова_ В.С. Махнычев_ В.А. Падарян (1110587) 2019-04-28СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 10)

По заданномуассемблерному коду, реализующему данную операцию сравнения, требуетсявосстановить data_t и COMP (возможно несколько вариантов решения).(A)TEST EСX, EСXSETNE AL(В)TEST СL, СLSETG AL(Б)TEST СX, СXSETE AL(Г)TEST СX, СXSETA ALЗадача 5-2 Восстановление типа и операции сравненияНиже приведен код на языке Си, где data_t – некоторый целочисленный типданных, а COMP – некоторая операция сравнения. Пусть переменная a расположенав регистре EDX, а переменная b в регистре ECX.

По заданному ассемблерному коду,реализующему данную операцию сравнения, требуется восстановить data_t иCOMP (возможно несколько вариантов решения).int comp(data_t a, data_t b) {return a COMP b;}(А)CMP DX, CXSETGE AL(В)CMP EDX, ECXSETNE AL(Б)CMP DL, CLSETB AL63Задача 5-3 Реализация тернарного оператора на языке ассемблераДан фрагмент Си-кода.int x, y = 100, a = 0, b = 1;x = y <= 0 ? a : b;Требуется реализовать тернарный оператор x = (y <= 0? a : b) на языкеассемблера, используя инструкцию CMOVcc.Задача 5-4 Модуль числаТребуется составить программу, которая для заданного с клавиатуры числапечатает модуль этого числа.Задача 5-5 Реализация тела функцииДана Си-функция.void cond(int a, int *p) {if (p && a > 0) {*p += a;}}Требуется написать соответствующий код на языке ассемблера.

Размещениеформальных параметров функции считать следующим:mov edx, dword [ebp + 8] ; int amov eax, dword [ebp + 12] ; int *pЗадача 5-6 Вычисление факториалаТребуется написать ассемблерную программу, вычисляющую факториал заданногочисла.Задача 5-7 Вычисление суммы арифметической прогрессииТребуется написать ассемблерную программу, вычисляющую сумму первых членоварифметической прогрессии.

С клавиатуры задаются: первый член прогрессии,шаг, количество членом прогрессии, которые требуется суммировать.Задача 5-8 Восстановление структуры программы: ветвленияДан ассемблерный код, реализующий код Си-функции.64mov eax, dword [ebp + 8] ; параметр xmov edx, dword [ebp + 12] ; параметр ycmp eax, -3jge l2cmp eax, edxgle l3imull eax, edxjmp l4l3:lea eax, dword [eax + edx]jmp l4l2:cmp eax, 2jg l5xor eax, edxjmp l4l5:sub eax, edxl4:Сама Си-функция задана с пропущенными выражениями в операторах.int test(int x, int y) {int val = __________;if (______) {if (______) {val = __________;} else {val = __________;}} else if (______) {val = __________;}return val;}Требуется восстановить пропущенные выражения.Задача 5-9 Восстановление структуры программы: ветвленияДан ассемблерный код, реализующий код на языке Си.65movmovcmpjgjlxorjmpebx,ecx,ebx,.L7.L8eax,.L9dword [a]dword [b]ecxmovmovsarsubidivjmpedx,eax,edx,ecx,ecx.L9dword [c]edx31ebxmovmovsarsubidivedx,eax,edx,ebx,ebxdword [c]edx31ecxmovdword [d], eax...static _____________________static _____________________static _____________________static _____________________if (__________) {d = ________________;} else if (__________) {d = ________________;} else {d = ________________;}eax.L8:....L7:.L9:Требуется восстановить пропуски в Си-коде.Задача 5-10 Числа с различными цифрамиНапечатать все двузначные числа, у которых цифры не равны между собой.Задача 5-11 Восстановление структуры программы: циклыДан код на языке Сиint dw_loop(int x, int y, int n) { //1{//2do {//3x += n;//4y *= n;//5n--;//6} while ((n > 0) && (y < n));//7return x;//8}компилятор генерирует следующий ассемблерный код:66a;b;c;d;mov eax, dword [ebp + 8] ;mov ecx, dword [ebp + 12] ;mov edx, dword [ebp + 16] ;L2:;add eax, edx;imul ecx, edx;sub edx, 1;test edx, edx;jle L5;cmp ecx, edx;jl L2;L5:;(1) переменная x(2) переменная y(3) переменная n(4)(5)(6)(7)(8)(9)(10)(11)(12)Разметить ассемблерный код комментариями, выделив в нем выражение-условие,проверяемое в цикле, и операторы, составляющие тело цикла в Си-коде.Задача 5-12 Переход на меткуУказать, на какую метку будет осуществлен переход при выполнении следующегофрагмента ассемблерного кода:mov al, -80cmp al, 150jb M1jl M2jmp M3Задача 5-13 Сумма цифр числаНайти сумму цифр заданного неотрицательного целого числа типа unsigned int.Задача 5-14 Число ФибоначчиНайти первое по порядку число Фибоначчи, превосходящее заданноенеотрицательное значение N (N > 1).

Числа Фибоначчи задаются соотношением:F0 = F1 = 1, Fk = Fk-1 + Fk-2, k ≥ 2.Задача 5-15 Максимум последовательностиДана последовательность из 30 целых чисел. Найти:a) максимум данной последовательности,b) номер максимального элемента последовательности (считать, чтопоследовательность не содержит повторяющихся элементов),c) количество вхождений максимального элемента в последовательность.67Ответы и решенияЗадача 1-1Двоичноепредставление (байт)16-ричноепредставление(байт)Числодесятичное сознакомЧислодесятичное беззнакаBDh76h28h87h-6711840-1211891184013510111101011101100010100010000111Задача 1-5(а) EAX = 0xdde(е) EAX = 0xfffffef0(б) EAX = 0xd(ж) EAX = 0xffff000d(в) EAX = 0xcafe(з) EAX = 0xffff006f(г) EAX = 0xfffffffe(и) EAX = 0xff79000d(д) EAX = 0xffff00ba(к) EAX = 0x2179fffeЗадача 1-6section .bssa resd 1b resd 1section .textmov al, byte [a]mov byte [b], almov al, byte [a +mov byte [b + 3],mov ax, word [a +mov word [b + 1],Задача 2-1; amovzx eax, byte [a]mov dword [b], eax; bmovsx eax, byte [a]mov word [b], eax681]al2]axЗадача 2-2(a) ALзнаковое =(b) ALзнаковое =(c) ALзнаковое =(d) ALзнаковое =-118,ALбеззнаковое = 138, CF = 1, OF = 0, ZF = 0, SF = 1.5,ALбеззнаковое = 5,-90,ALбеззнаковое = 166, CF = 1, OF = 0, ZF = 0, SF = 1.58,ALбеззнаковое = 58,CF = 0, OF = 0, ZF = 0, SF = 0.CF = 1, OF = 0, ZF = 0, SF = 0.Задача 3-1void decode2(int *xp, int *yp, int *zp) {int y = *yp;*yp = *xp + *zp;*xp = *yp;*zp = y;}Задача 4-4eax = -8edx = 65528Задача 4-12 Обращение операцийz dw 0x1ee7xor eax, eaxorax, word [z]imul eax, eax, 16; EAX = 0x1ee70Задача 5-1(А)data_t – int, unsigned, указатель,для целочисленных типов допустим спецификатор longCOMP - !=(Б)data_t – short или unsigned shortCOMP - ==(В)data_t – charCOMP - >(Г)data_t – unsigned shortCOMP - >69Задача 5-2(А)data_t – shortCOMP - >=(Б)data_t – unsigned charCOMP - <(В)data_t – int, unsigned, указатель;для целочисленных типов допустим спецификатор longCOMP - !=Задача 5-3section .bssx resd 1section .datay dd 100a dd 0b dd 1section .textglobal CMAINCMAIN:cmp dword [y], 0mov eax, dword [b]cmovle eax, dword [a]mov dword [x], eax70Задача 5-4%include 'io.inc'section .textglobal CMAINCMAIN:GET_DEC 4, eaxcmp eax, 0jge labelneg eaxlabel:PRINT_DEC 4, eaxNEWLINExor eax, eaxretЗадача 5-5test eax, eaxjz labeltest edx, edxjle labeladd dword [eax], edxlabel:Задача 5-6%include 'io.inc'section .textglobal CMAINCMAIN:GET_DEC 4, ecxmov eax, 1jecxz end_labelloop_body:imul eax, ecxloop loop_bodyend_label:PRINT_DEC 4, eaxmov eax, 0ret71Задача 5-7%include 'io.inc'section .textglobal CMAINCMAIN:GET_DEC 4, ebx ; первый членGET_DEC 4, edx ; шаг прогрессииGET_DEC 4, ecx ; количество шаговxor eaxjexcz end_labelloop_body:add eax, ebxadd ebx, edxloop loop_bodyend_label:PRINT_DEC 4, eaxmov eax, 0retЗадача 5-8int test(int x, int y) {int val = x^y;if (x < -3) {if (y < x) {val = x * y;} else {val = x + y;}} else if (x > 2) {val = x - y;}return val;}Восстанавливать можно по следующей методике.

В первую очередь выявляютсялинейные блоки. Строится граф потока управления для ассемблерной программы.Этот граф сопоставляется с предложенным шаблоном программы. В концахбазовых блоков выявляются пары инструкций CMP Jcc, которые позволяютвосстановить условия операторов if и их ветви. Следует отметить, что длязаданного ассемблерного кода будет корректно и такое восстановление.72int test(int x, int y) {int val;if (x < -3) {if (y < x) {val = x * y;} else {val = x + y;}} else if (x > 2) {val = x - y;} else {val = x^y;}return val;}Задача 5-9...static int a;static int b;static int c;static int d;if (a > b) {d = c / (a - b);} else if (a < b) {d = c / (b - a);} else {d = 0;}...73Задача 5-10%include 'io.inc'section .textglobal CMAINCMAIN:mov eax, 1.loop1:cmp eax, 10jge .exit1xor ebx, ebx.loop2:cmp ebx, 10jge .exit2cmp eax, ebxje .lcPRINT_DEC 4, eaxPRINT_DEC 4, ebxNEWLINE.lc:inc ebxjmp .loop2.exit2:inc eaxjmp .loop1.exit1:xor eax, eaxret; цикл по старшей цифре; цикл по младшей цифре; проверка цифр на неравенствоЗадача 5-11mov eax, dword [ebp + 8] ; (1) переменная xmov ecx, dword [ebp + 12] ; (2) переменная ymov edx, dword [ebp + 16] ; (3) переменная nL2:; (4)add eax, edx; (5) x += n;imul ecx, edx; (6) y *= n;sub edx, 1; (7) n--;test edx, edx; (8) n v 0jle L5; (9) n <= 0 – выходим из циклаcmp ecx, edx; (10) y v njl L2; (11) y < n;переходим на новую итерациюL5:; (12)Задача 5-12Ответ: M374Решение:mov al, -80; доп(-80) = 176cmp al, 150; 150 = доп(-106)jb M1jl M2jmp M3Переход на метку M1 не будет осуществлен, поскольку 176 > 150; переход на меткуM2 также не будет осуществлен, т.к.

-80 > -106. Будет выполнен переход на меткуM3.75Литература761.Рэндал Э. Брайант, Дэвид О’Халларон. Компьютерные системы: архитектураи программирование (Computer Systems: A Programmer’s Perspective).Издательство: БХВ-Петербург, 2005 г. — 1186 стр.2.Henry S. Warren.

Hacker's Delight (2nd Edition). / Addison-Wesley Professional; 2edition (October 5, 2012) — р. 5123.А.А. Белеванцев, С.С. Гайсарян, Л.С. Корухова, Е.А. Кузьменкова,В.С. Махнычев. Семинары по курсу “Алгоритмы и алгоритмические языки”(учебно-методическое пособие для студентов 1 курса ). М.: Издательскийотдел факультета ВМК МГУ имени М.В. Ломоносова4.А.А.

Белеванцев, С.С. Гайсарян, В.П. Иванников, Л.С. Корухова, В.А. Падарян.Задачи экзаменов по вводному курсу программирования(учебно - методическое пособие). М.: Изд. отдел ф-та ВМК МГУ имени М.В.Ломоносова, 2012.5.К.А. Батузов, А.А. Белеванцев, Р.А. Жуйков, А.О. Кудрявцев, В.А. Падарян,М.А. Соловьев. Практические задачи по вводному курсу программирования(учебное пособие). М.: Изд. отдел ф-та ВМК МГУ имени М.В. Ломоносова,2012..

Характеристики

Список файлов семинаров

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6381
Авторов
на СтудИзбе
308
Средний доход
с одного платного файла
Обучение Подробнее