Главная страница

Интерфейс среды Ассемблера. Изучение рабочей среды Ассемблера Работа с командами пересылки данных. Директивы данных


Скачать 1.25 Mb.
НазваниеИнтерфейс среды Ассемблера. Изучение рабочей среды Ассемблера Работа с командами пересылки данных. Директивы данных
Дата03.12.2021
Размер1.25 Mb.
Формат файлаdoc
Имя файлаmetodichka_sistemnoe_progarammirovanie_up (2).doc
ТипПрактическая работа
#290551
страница1 из 3
  1   2   3


ГБОУ СПО «Нефтекумский региональный политехнический колледж»

Раздаточный материал (инструкционные карты)

УЧЕБНАЯ ПРАКТИКА «Системное программирование»
Специальность 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
3.1. Измените в окне просмотра памяти ВЫВОД КОЛ-ВА байтов для (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
Напишите текст такого содержания:.

Captiondb 'Суппер -гений.',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

-например, изменить числа в «теле» программы.

Практическая работа №2

Работа с операциями сложения и вычитания над целыми числами.

Работа с операциями умножение и деления целых чисел.
Порядок выполнения работы

1. Загрузка системы

2. Создание файла с текстом программы задания

3. Исправление ошибок компиляции

4. Создание файла, содержащего исполняемый модуль программы

5. Ввод исходных данных

6. Отладка программы на контрольном примере

Задание 1. Создайте программу на FASM по образцу. Определите какая команда отвечает за сложение.

format PE GUI 4.0

include 'include\WIN32AX.INC'

.data

formats db "%d",0 ; Задание формата вывода в 10-ой форме

result db 256 dup(?) ;В этой строке сохраняется результат

;после его преобразования

A dd 01h

B dd 02h

C dw 03h ; определение исходных данных

D dw 04h

E db 0FEh

F db 01h

.code

start:

;Алгоритм сложения двух 32 -разрядных слов

mov Eax,[A] ;Перемещаем в eax число A

add EaX,[B] ;Складываем содержимое eax и B.

invoke wsprintf,result,formats,eax ;Преобразуем число в строку

invoke MessageBox,0,result,"А+Б 32- разрядные",MB_OK ;Вывод

mov Eax,0

invoke wsprintf,result,formats,Eax ;Преобразуем число в строку

invoke MessageBox,0,result,"Промежут Eax ",MB_OK ;Вывод

;Алгоритм сложения двух 16 -разрядных слов

mov ax,word[C]

add aX,word[D]

invoke wsprintf,result,formats,Eax ;Преобразуем число в строку invoke MessageBox,0,result,"С + Д 16-разрядные",MB_OK

;Алгоритм сложения двух 8 -разрядных слов

mov aL,byte[E]

add al,byte[F]

invoke wsprintf,result,formats,Eax ;Преобразуем число в строку

invoke MessageBox,0,result,"E + F 8-разрядные",MB_OK ;Вывод

invoke ExitProcess,0 ;Выход из программы

.end start
Задание 2. Используя образец программы, выполнить вычитание 16,32 и 8разрядных слов, слов и байтов. Результаты выдать на экран. Команду сложения заменить на команду вычитания

(необходимо знать команду вычитания)

Задание 3. Вычислить выражение 6X2+10Y2+4Z2. Все величины в выражении однобайтовые. Результат выдать на экран.

Программа (образец)
format PE GUI 4.0

include 'include\WIN32AX.INC'

.data ; сегмент данных

formats db "%d",0 ; Задание формата вывода в 10-ой форме

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

B db 10

C db 4
X DB 2

Y DB 1

Z DB 3

.code ; сегмент кода

start: ; Точка старта программы

Xor EAX,EAX

Mov AL,[X]

Mul [X]

Mul [A]

Mov BL,AL

Mov AL,[Y]

Mul [Y]

Mul [B]

Mov DL,AL

Mov AL,[Z]

Mul [Z]

Mul [C]

Add AL,BL

Add AL,DL

invoke wsprintf,result,formats,EAX

invoke MessageBox,0,result,"6Xx+10Yy+4Zz",MB_OK
invoke ExitProcess,0 ;Выход из программы

.end start
Напишите ответ в тетради к этой задаче. Измените данные так, чтобы следующий ответ не совпал с предыдущим.
Задание 4. Вычислить выражение 4X2+5Y2+3М2. Все величины в выражении однобайтовые. Результат выдать на экран.

Задание 5. Вычислить выражение 7X2+2Y2/3Z2. Все величины в выражении однобайтовые. Результат выдать на экран.

Задание 6. Вычислить выражение 7*z+x*y-15*x*y*z+30

Если задать величины x, y, z=1 Все величины в выражении однобайтовые. Результат выдать на экран.
Программа №6.(образец)

Format PE GUI 4.0

includeinclude\WIN32AX.INC

.data

formath db «%0lx»,0 ; Задание формата вывода 16

formatd db «%d»,0 ; Задание формата вывода 10

result db 256 dup(?) ;В этой строке сохраняется результат

;после его преобразования

x db 1 ; 20h

y db 1 ; 40h

z db 1 ; 50h ; 7*z+x*y-15*x*y*z+30=23 , если x=y=z=1

c db 7

.code

start:

xor AX,AX

xor dX,dX

MOV AL,[z] ;байт умножается на байт

MUL [c] ;результат в АХ,

mov bx,ax

MOV AL,[y] ;байт умножается на байт

MUL [x] ;результат в АХ,

MUL [y]

add bx,ax

MOV AL,15 ;байт умножается на байт

MUL [z] ;результат в АХ,

MUL [x]

MUL [y]

sub bx,ax

add bx,30

invoke wsprintf,result,formath,bx,dx ;ax,dx ;Преобразуем число в строку

invoke MessageBox,0,result,”перемнож,слож и вычит байт”,MB_OK

invoke ExitProcess,0 ;Выход из программы

.end start
Задание 7.

Вычислить выражение 6*х+z*y-11*x*y*z+13

Если задать величины x, y, z=1

Практическая работа №3

Тема: Работа с командами условного и безусловного перехода

Работа с командами ввода/вывода данных. Выполнение прерываний в программе
Задание 1. Вычислить выражение 18*z*x*y-15*x*y*z+30+19*(x-y)

Если задать величины x, y, z=1, то ответ =

Все величины в выражении однобайтовые. Результат выдать на экран.

Программа № 1

format PE GUI 4.0

include 'include\WIN32AX.INC'

.data

formath db "%0lx",0 ; Задание формата вывода 16

formatd db "%0d",0 ; Задание формата вывода 10

result db 256 dup(?) ;В этой строке сохраняется результат

;после его преобразования

x db 2 ; 20h

y db 2 ; 40h

z db 2 ; 50h ; 18*z*x*y-15*x*y*z+30+19*(x-y)= , если ;x=y=z=1

c db 7

.code

start:

xor AX,AX

xor dX,dX

MOV AL,18

MUL [x]

MUL [y]

MUL [z]

mov bx,ax

MOV AL,15

MUL [x]

MUL [y]

MUL [z]

sub bx,ax

add bx,30

MOV CL,19

MOV al,[x]

sub al,[y]

MUL cl

add ax,bx

invoke wsprintf,result,formatd,ax,dx ;Преобразуем число в строку

invoke MessageBox,0,result,"перемнож,слож и вычит байт",MB_OK ;Вывод
invoke ExitProcess,0 ;Выход из программы

.end start
-1.1 Задание – Аналогично составьте программу с величинами: x, y, z=2,

Выполнить самостоятельно задания:

2. 2-30*z*x*y-16*x*y*z-41+4*(х-y)

3. 129- z*x*y+x/y+85

  1. 70-17*x-65*y+13*z

  2. 88*z-76*y+51*x


Задание 6. Вычислить выражение x*x*x-y*y*y-z*z*z*z+137

Если задать величины x, y, z=1.

Все величины в выражении однобайтовые. Результат выдать на экран.
;Программа №6

format PE GUI 4.0

include 'include\WIN32AX.INC'

.data

formath db "%0lx",0 ; Задание формата вывода 16

formatd db "%d",0 ; Задание формата вывода 10

result db 256 dup(?) ;В этой строке сохраняется результат

;после его преобразования

x db 01h

y db 02h

z db 05h

.code

start:

xor AX,AX

xor dX,dX

MOV AL,[x] ;байт умножается на байт

MUL [x] ;результат в АХ,

MUL [x]

mov bx,ax

MOV AL,[y] ;байт умножается на байт

MUL [y] ;результат в АХ,

MUL [y]

sub bx,ax

MOV AL,[z] ;байт умножается на байт

MUL [z] ;результат в АХ,

MUL [z]

sub bx,ax

;mov bx,z

add bx,137

invoke wsprintf,result,formath,bx,dx ;ax,dx ;Преобразуем число

invoke MessageBox,0,result,"перемн и вычит байт",MB_OK ;Вывод

invoke ExitProcess,0 ;Выход из программы

.end start
Задание 7 Вычислить выражение Z3-T3. В выражении используются однобайтовые величины.

Задание 8 Вычислить выражение Z3-T3+45 В выражении используются однобайтовые величины
Практическая работа №5

  1   2   3


написать администратору сайта