Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

SP PR 1

.docx
Скачиваний:
15
Добавлен:
01.04.2022
Размер:
2.17 Mб
Скачать

Министерство цифрового развития, связи и массовых коммуникаций Российской Федерации

Ордена Трудового Красного Знамени федеральное государственное бюджетное образовательное учреждение высшего образования

«Московский Технический Университет Связи и Информатики»

Кафедра математической кибернетики и информационных технологий

Практическая работа №1 по дисциплине «Системное программирование»:

«Интерфейс среды Ассемблера. Изучение рабочей среды Ассемблера

Работа с командами пересылки данных. Директивы данных.

Работа с командой пересылки Mov. Отладка программ.»

Выполнил

Проверил:

Фатхулин Тимур Джалильевич

Оглавление

Цель работы 2

Задание №1 3

Задание №2 3

Задание №3. 5

Задание №3.1. 6

Задание №4 7

Задание №4.1. 7

Задание №5 8

Задание №6 11

Вывод 14

Цель работы

Изучить интерфейс среды Ассемблера. Изучить рабочую среды Ассемблера

Научиться работа с командами пересылки данных,с директивами данных, с командой пересылки Mov.

Задание №1

Научиться выдавать на экран сообщения. Изучить готовую программу

(Рисунок 1)

Программный код:

include 'INCLUDE\win32ax.inc'

.data

Caption db "Учебная практика.",0

Text db 'С новым Годом",1

code

start:

invoke MessageBox, 0,Text, Caption,MB_оK

invoke Exit Process, 1

.end start

Рисунок 1 – Результат работы

Задание №2

Согласно заданию №1 Составить свой пример программы на flat assembler, например, изменить текст в окне программы. (Рисунок 2)

Программный код: include 'INCLUDE'win32ax.inc'

. data

Caption db "Мое первое задание. ", 0

Text db 'ΥΡΑΑΑΑ', 1

. code

start:

invoke MessageBox, 0, Text, Caption, MB_OK

invoke Exit Process,1

. end start

Рисунок 2 – Результат работы

Задание №3.

Создать программу по образцу.

Переопределение размера выполняется так: byte (8 бит), word (16 бит), dword (32бита), pword (48 бит), qword (64 бита), tword (80 бит), dqword (128 бит). Первые буквы этих слов образуют краткую форму: b, w, dw, pw, qw, tw. (Рисунок 3)

Программный код:

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 0ССh,1h,'/','R','5','*',55,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

Рисунок 3 – Результат работы

Задание №3.1.

Измените в окне просмотра памяти ВЫВОД КОЛ-ВА байтов для (16 бит). Попробуйте так же изменить Букву А на другую латинскую букву. Как это повлияет на ход программы? (Рисунок 4)

Программный код:

include 'INCLUDE\win32ax.inc'

.data

Caption db 'Моя первая программа.',0

Cap1 db 'Вывод байтов',0

formx db '%lx%lx%1x',0

; Задание формата вывода в 16-ой форме

result db 9 dup(0) ;В этой строке сохраняется результат после его преобразования

formd db "%dx",0

A db 0CCh,1h,'/','R','5','*',55,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

Рисунок 4 – Результат работы

Задание №4

Отладка программ. Пересылка данных(Рисунок 5)

Программный код:

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'

Рисунок 5 – Результат работы

Задание №4.1.

Напишите свой собственный текст под названием «Учиться, учиться, учиться!» (Рисунок 6)

format PE GUI 4.0

include 'INCLUDE\win32ax.inc'

entry start

section '.data' data readable writeable

Caption db Учиться, учиться, учиться.',0

Text db 'Главное учиться',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'

Рисунок 6 – Результат работы

Задание №5

Научиться пересылать данные и вычисления(Рисунок 7-9)

Программный код:

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'

Рисунок 7 – Результат работы

Рисунок 8 – Результат работы

Рисунок 9 – Результат работы

Задание №6

Согласно заданию №5 Составить свой пример программы на flat assembler

-например, изменить числа в «теле» программы. (Рисунок 10-12)

Программный код:

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,2 ;Перемещаем в eax число 1

;Складываем содержимое eax и 2. Сохраняем результат в eax.

add eax,3

;Преобразуем число(результат) в строку для вывода его на экран.

invoke wsprintf,result,formats,eax

;Выводим результат на экран.

invoke MessageBox,0,result,"Plus",MB_OK

;Алгоритм вычитания 4 из 10

;Перемещаем в eax число 10

mov eax,9

;Вычитаем из содержимого eax 4 (10-4). Сохраняем результат в eax.

sub eax, 2

;Преобразуем число(результат) в строку для вывода его на экран.

invoke wsprintf,result,formats,eax

;Выводим результат на экран.

invoke MessageBox,0,result,"Minus",MB_OK

;Алгоритм умножения 2 на 6

mov ax,3 ;Помещаем в 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'

Рисунок 10 – Результат работы

Рисунок 11 – Результат работы

Рисунок 12 – Результат работы

Вывод

Я изучил интерфейс и рабочую среду Ассемблера.Научился работа с командами пересылки данных,с директивами данных и с командой пересылки Mov.

Соседние файлы в предмете Системное программирование