Section '.idata' import data readable
ГБОУ СПО «Нефтекумский региональный политехнический колледж»
Раздаточный материал (инструкционные карты) УЧЕБНАЯ ПРАКТИКА «Системное программирование» Специальность 230115 «Программирование в компьютерных системах»
Разработала: преподаватель спецдисциплин Усенко А.Г.
2012 г.
Практическая работа №1 Тема: Интерфейс среды Ассемблера . Изучение рабочей среды Ассемблера Работа с командами пересылки данных. Директивы данных. Работа с командой пересылки Mov. Отладка программ. Задание №1Научиться выдавать на экран сообщения. Изучить готовую программу
Инструкция к выполнению практической работы: -Запустить файл программы , содержащего исполняемый модуль программы - Ввести исходные данные - Отладить программу на контрольном примере include 'INCLUDE\win32ax.inc' Data Caption db Учебная практика.',0 Text db 'С Новым годом!',0 Code start: invoke MessageBox,0,Text,Caption,MB_OK invoke ExitProcess,0 End start
Задание №2 Согласно заданию №1 Составить свой пример программы на flat assembler -например, изменить текст в окне программы.
Задание 3. Создать программу по образцу. Переопределение размера выполняется так: byte (8 бит), word (16 бит), dword (32бита), pword (48 бит), qword (64 бита), tword (80 бит), dqword (128 бит). Первые буквы этих слов образуют краткую форму: b, w, dw, pw, qw, tw.
Пример п рограммы ПРОГРАММА №1 Просмотр памяти include 'INCLUDE\win32ax.inc' .data Caption db 'Моя первая программа.',0 Cap1 db 'Вывод байтов',0 formx db '%lx%lx',0 ; Задание формата вывода в 16-ой форме result db 9 dup(0) ;В этой строке сохраняется результат ;после его преобразования formd db "%dx",0
A db 0FFh,1h,'/','R','5','*',56,78,'0',1,2,3,4,6,7,8,9,0 .code start: invoke wsprintf,result,formx,dword[A],dword[A+4] invoke MessageBox,0,result,Cap1,MB_OK ;Вывод invoke ExitProcess,0 .end start Измените в окне просмотра памяти ВЫВОД КОЛ-ВА байтов для (16 бит). Попробуйте так же измеить Букву А на другую латинскую букву. Как это повлияет на ход программы? Задание №4 Отладка программ. Пересылка данных
format PE GUI 4.0 include 'INCLUDE\win32ax.inc' entry start section '.data' data readable writeable Caption db 'Моя программа.',0 Text db 'Программировать наАссемблер на FASM — это классно!',0 section '.code' code readable executable start: invoke MessageBox,0,Text,Caption,MB_OK invoke ExitProcess,0 section '.idata' import data readable writeable
library KERNEL32, 'KERNEL32.DLL',\ USER32, 'USER32.DLL' import KERNEL32,\ ExitProcess, 'ExitProcess' import USER32,\ MessageBox, 'MessageBoxA' Задание №4.1
Напишите текст такого содержания:. Caption db 'Суппер -гений.',0 Text db 'Здравствуйте, я — суппер-гений и люблю интернет.',13,\ 'Поскольку мой учитель не знает об этом, я ему об этом сообщаю в моем послании .',13,\ 'Сообщение: Я опасный хакер',13,\ '1.Зайдите на диск C:\Windows и C:\Program files',13,\ '2.Отправьте этот файл всем своим знакомым',13,\ 'Заранее благодарен.',0 Задание №4.2. Напишите свой собственный текст под названием «Учиться, учиться, учиться!» Задание №5 Научиться пересылать данные и вычисления Format PE GUI 4.0 entry start ;Точка входа в программу INCLUDE 'INCLUDE\win32ax.inc' ;Подключение модулей INCLUDE 'INCLUDE\encoding\win1251.inc' INCLUDE 'INCLUDE\api\user32.inc' section '.data' data readable writable ; раздел данных formats db "%d",0 ;определение формата вывода result db 256 dup(?) ;Результат преобразования числа в строку section '.code' code readable executable ;раздел кода start : ; начало программы ;Алгоритм сложения чисел 1 и 2 mov eax,1 ;Перемещаем в eax число 1 ;Складываем содержимое eax и 2. Сохраняем результат в eax. Add eax,2 ;Преобразуем число(результат) в строку для вывода его на экран. Invoke wsprintf,result,formats,eax ;Выводим результат на экран. invoke MessageBox,0,result,"Plus",MB_OK ;Алгоритм вычитания 4 из 10 ;Перемещаем в eax число 10 Mov eax,10 ;Вычитаем из содержимого eax 4 (10-4). Сохраняем результат в eax. sub eax, 4 ;Преобразуем число(результат) в строку для вывода его на экран. Invoke wsprintf,result,formats,eax ;Выводим результат на экран. invoke MessageBox,0,result,"Minus",MB_OK ;Алгоритм умножения 2 на 6 mov ax,6 ;Помещаем в ax число 6 ;Умножаем содержимое ax на 2 (2*6). Результат будет находиться в eax. Shl ax,1 ;Преобразуем число(результат) в строку для вывода его на экран. Invoke wsprintf,result,formats,eax ;Выводим результат на экран. invoke MessageBox,0,result,"Umnojenie",MB_OK invoke ExitProcess,0 ;Выход из программы
section '.idata' import data readable library kernel32,'KERNEL32.DLL',user32,'USER32.DLL' INCLUDE 'INCLUDE\api\kernel32.inc' Задание №4 Согласно заданию №3 Составить свой пример программы на flat assembler -например, изменить числа в «теле» программы.
Популярное: Почему двоичная система счисления так распространена?: Каждая цифра должна быть как-то представлена на физическом носителе... Генезис конфликтологии как науки в древней Греции: Для уяснения предыстории конфликтологии существенное значение имеет обращение к античной... Как вы ведете себя при стрессе?: Вы можете самостоятельно управлять стрессом! Каждый из нас имеет право и возможность уменьшить его воздействие на нас... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (500)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |