Введение в программирование на языке Ассемблера x86
Автор: Marat123 • Декабрь 23, 2018 • Лабораторная работа • 522 Слов (3 Страниц) • 541 Просмотры
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ
ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО
ОБРАЗОВАНИЯ «НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ
МОРДОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ИМ. Н.П. ОГАРЁВА»
(ФГБОУ ВО «МГУ им. Н.П. Огарёва»)
Направление: Информатика и вычислительная техника
ЛАБОРАТОРНАЯ РАБОТА
по курсу «Программирование на языке ассемблера»
ЛР – 02069964 –Ассемблер– 01 – 18
Лабораторная работа № 1
Выполнили: студент 341 группы Бакиров Р.М., Куряев Э.Р. | Проверила: __________________ Плотникова Н.П. |
Саранск 2018
Лабораторная работа № 1
Введение в программирование на языке Ассемблера x86
Задание 1
Создайте проект для программы из листинга 1.2, подключите стандартную библиотеку языка C, откомпилируйте программу и запустите ее на выполнение. Прокомментируйте результат.
Код программы:
TITLE Использование стандартной библиотеки языка C Visual Studio .686 .MODEL FLAT, C .STACK 4096 ; импортируемые функции из стандартной библиотеки языка C printf PROTO format: PTR BYTE, args: VARARG scanf PROTO format: PTR BYTE, args: VARARG ; экспортируемые функции PUBLIC main .CONST strHello BYTE "Hello, world!", 0Ah, 0 strFormat BYTE "%d %d", 0 .DATA? i DWORD ? j DWORD ? .CODE main PROC ; выведем на экран приветствие ; printf("Hello, world!\n"); INVOKE printf, ADDR strHello ; введем с клавиатуры целочисленные значения, ; сохраним их в i и j ; scanf("%d %d", &i, &j); INVOKE scanf, ADDR strFormat, ADDR i, ADDR j ; выведем на экран введенные значения ; printf("%d %d", i, j); INVOKE printf, ADDR strFormat, i, j mov eax, 0 ret main ENDP END |
Результат работы программы представлен на Рисунке 1:
[pic 1]
Рисунок 1
Задание 2
Измените выводимое сообщение таком образом, чтобы программа печатала на экране имена, фамилии и номер группы студентов, выполнивших работу.
Код программы:
TITLE Использование стандартной библиотеки языка C Visual Studio .686 .MODEL FLAT, C .STACK 4096 ; импортируемые функции из стандартной библиотеки языка C printf PROTO format: PTR BYTE, args: VARARG scanf PROTO format: PTR BYTE, args: VARARG ; экспортируемые функции PUBLIC main .CONST strHello BYTE "Bakirov Kuryaev 341 group", 0Ah, 0 strFormat BYTE "%d %d", 0 .DATA? i DWORD ? j DWORD ? .CODE main PROC ; выведем на экран приветствие ; printf("Hello, world!\n"); INVOKE printf, ADDR strHello ; введем с клавиатуры целочисленные значения, ; сохраним их в i и j ; scanf("%d %d", &i, &j); INVOKE scanf, ADDR strFormat, ADDR i, ADDR j ; выведем на экран введенные значения ; printf("%d %d", i, j); INVOKE printf, ADDR strFormat, i, j mov eax, 0 ret main ENDP END |
...