BigEdu.ru

Конкатенація строк Assembler

ВСТУП

Метою курсової роботи було отримання необхідних навичок для програмування на машино-орієнтованій мові Асемблер. У перший частині роботи згідно за варіантом завдання були розроблені граф-схеми алгоритмів, які допомогли наглядно представити задачу, розбити її на декілька менших задач та опанувати логіку завдання, що дало змогу перейти до розробки кода, тобто до другої частини. При розробці кода був використан компілятор MASM32 v8.2. Полний код програми можна побачити у додатку до курсової роботи. Також приведено пояснення коду, якщо його опанування викликало якісь труднощі та примір роботи функції зі скріншотами. Інструкція користувача дає знання як коректно ввести результати та отримати правильний результат.


1 ПРОГРАМА ДЛЯ АРИФМЕТИЧНИХ ОБЧИСЛЕНЬ

1.1 Граф-схема алгоритму обчислювання функції

Так як я маю тринадцятий номер за журналом, то моєму варіанту відповідає наступна система:

,еслиa>b

Y =–2,если a=b

,если a<b

Згідно цього розробляється ГСА алгоритму, яка буде показувати необхідну реалізацію(Рис 1.1).

Рис. 1.1


1.2 Граф-схема алгоритму строкової функції

Номер по списку за журналом 13, тобто завдання звучить таким чином.

"Ввести 2 строки символов. Произвести их конкатенацию (объединение)."

Для цього завдання була разраблона граф-схема, яка представлена на рис 1.2.

Рис 1.2


2 . РЕАЛІЗАЦІЯ ПРОГРАМИ

2.1 Опис коду програми

На основі алгоритмів, яки були приведені у пункті 1 був розроблен код, який послідовно обробляє дві функції, тобто спочатку математичну, а потім строкову. Арифметична функція називається arithm, а строкова string, але спочатку про код програми. Програма починається з

.486

.model flat, stdcall

option casemap :none

include masm32includewindows.inc

include masm32macrosmacros.asm

include masm32includemasm32.inc

include masm32includegdi32.inc

include masm32includeuser32.inc

include masm32includekernel32.inc

include masm32includefpu.inc

includelib masm32libmasm32.lib

includelib masm32libgdi32.lib

includelib masm32libuser32.lib

includelib masm32libkernel32.lib

includelib masm32libfpu.lib

Цей код визначає інструкції, які може використовувати компялітор під час створення низькорівневого коду програми. Директива include визначає які бібліотекі необхідно підключити, щоб програма могла користуватися необхідними функціями. На приклад, include masm32includefpu.inc має значення, тому використовуються математичні функції сопроцесора. Докладніший опис бібліотек можна знайти у інструкції компілятора.

Наступним йде оголошення сегменту ініціалізованих та не ініціалізованих даних, тобто констант та змінних, які використовують у програмі.

.data

strNum1 db "Type the the first number: ", 0

strNum2 db "Type the second number: ", 0

strArithm db "The result of fucntion: ", 0

strType1 db "Type the first string: ", 0

strType2 db "Type the second string: ", 0

strResult db "The result of concationation: ", 0

strZeroDiv db "Zero divide is forbidden. Function is undefined ", 13, 10

cons dq -2.0

one dq 1.0

y dq 0

.data?

buff db 128 dup(?)

str1 db 64 dup(?)

str2 db 64 dup(?)

a dq ?

b dq ?

На приклад, strNum1 db "Type the the first number: ", 0 це строка, яка ініціалізована текстом, та має свій розмір. Кожен символ цієї строки має розмір 1 байт. a dq ? Показує також, що у програмі використовується змінна, яка має розмір 4 слова та не визначена, тому що це не біло необхідно. Наступним йде сегмент коду, він починається з мітки start:, у ньому визивається функція математичного обчислювання arithm, printchr$(13, 10) робе перевод строки, а callstring визиває строкову функцію, тобто її реалізацію. Функція arithm починається з

arithm proc

LOCAL hInput :DWORD

LOCAL hOutPut :DWORD

LOCAL nRead1 :DWORD

LOCAL nRead2 :DWORD

LOCAL str3[15] :BYTE

arithm proc є оголошенням функція, тобто текстом, який каже, зо почалась функція, яка має бути викликаною десь у коді. Наступний текст – оглошення локальних змінних, що є особливістю компілятора. Тільки у MASM 32 можна створити локальні змінні, які розташовуються у стеку. Доступ до цих змінних виконується за допомогою ADDR, тобто макроса, який повертає їх адрес розташування у стеку. Також хочеться особливо відмітити LOCAL hInput :DWORD . Ця змінна потрібна, щоб організувати консольний ввод змінних та строк. Розмір змінної два слова. Змінна LOCAL hOutPut :DWORD також тримає хендл, але для консольного вивода. Змінні LOCAL nRead1 :DWORD LOCAL nRead2 :DWORD мають однакове призначення, тобто воні використовують у однієї і тієїж функції. У них записується результат зчитування строки з консолі, тобто кількість байт, яка була прочитана.

Для того щоб реалізувати вивод та ввод у програмі потрібно спочатку отримати хендли для ввода та вивода, тобто проініціалізувати змінні LOCAL hOutPut :DWORD LOCAL hInput :DWORD. Це робиться завдяки

invoke GetStdHandle, STD_OUTPUT_HANDLE

mov hOutPut, eax

invoke GetStdHandle, STD_INPUT_HANDLE

mov hInput , eax

Функція GetStdHandle , яка отр

Внимание, отключите Adblock

Вы посетили наш сайт со включенным блокировщиком рекламы!
Ссылка для скачивания станет доступной сразу после отключения Adblock!

Скачать
Курсовые работы по информатике и программированию ВСТУП Метою курсової роботи було отримання необхідних навичок для програмування на машино-орієнтованій мові Асемблер. У перший частині роботи згідно
Оценок: 1001 (Средняя 5 из 5)

Наверняка у вас есть товары или услуги, продажа которых приносит вам максимальную прибыль. Для быстрого старта в сети вам необходимо создание посадочной страницы (одностраничного сайта), на которой будет размещена информация о маржинальных товарах/услугах интернет магазина. За 8 лет опыта разработки конверсионных страниц мы выработали оптимальную структуру, которая позволит привлекать через landing page больше продаж. На такую структуру «одевается» ваш контент — фирменный стиль, тексты, фотографии, уникальные торговые предложения, после чего страница выходит в свет. Разработка лендинга и запуск в сети — до 7 рабочих дней. Стоит отметить, что в разработку самой посадочной страницы входит и написание копирайтером продающих текстов для вашего бизнеса, чтобы каждый посетитель страницы захотел совершить покупку именно у вас. Результат: качественно разработаная продающая посадочная страница, которая готова приносить вам новых клиентов.

© 2016 - 2022 BigEdu.ru