Учебная работа. Курсовая работа: Выполнение арифметических действий и строковых операций

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (5 оценок, среднее: 4,80 из 5)
Загрузка...
Контрольные рефераты

Учебная работа. Курсовая работа: Выполнение арифметических действий и строковых операций

АННОТАЦИЯ

электрические составляющие на едином кристалле полупроводника. Сначала 70-х годов КомпанияIntel предложила микропроцессор 8008 — представитель первого поколения процессоров.

Каждое семейство микропроцессоров имеет свой неповторимый набор инструкций, применяемый для выполнения операций, к примеру, для ввода с клавиатуры, вывода данных на экран и выполнения арифметических вычислений. Этот набор инструкций (машинный язык) очень сложен для осознания и конкретного использования для сотворения программ. Потому для микропроцессоров есть языки ассемблеры, представляющие аннотации машинных языков в наиболее доступной для людского осознания символьной форме.

В курсе «машинно-ориентированное» программирование мы исследовали язык ассемблера для микропроцессора Intel 8086. Оканчивающим шагом данного курса является написание расчетно-графической работы.


Содержание

Введение

1. Задания к расчетно-графической работе

2. Теоретическая часть

2.1 Уровни языков программирования

2.2 Преимущество языка ассемблера

2.3 структура программки на языке ассемблера

2.4 Синтаксис языка ассемблера

3. Математика

3.1 метод

3.2 текст программки

3.3 Листинг кода библиотеки, в какой находятся макросы, вызываемые в данной программке

4.Строчки

4.1 метод

4.2 текст программки

4.3 Листинг кода библиотеки, в какой находятся макросы, вызываемые в данной программке

Вывод

Перечень литературы

ВВЕДЕНИЕ

Курсовая работа по курсу «Машинно-ориентированное программирование» является оканчивающим шагом в исследовании данной дисциплины.

одной из главных частей индивидуального компа является временем процессоры совершенствовались, так что каждое семейство микропроцессоров имеет свой неповторимый набор инструкций, применяемый для выполнения операций, к примеру, для ввода с клавиатуры, вывода данных на экран и выполнения арифметических вычислений. Этот набор инструкций (машинный язык) очень сложен для осознания и конкретного использования для сотворения программ. Потому для микропроцессоров есть языки ассемблеры, представляющие аннотации машинных языков в наиболее доступной для людского осознания символьной форме.

В работе рассмотрены целочисленные арифметические операции иоперации над строчками.


1. Задания к работе

1. Математика

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

1.2. Написать на языке Ассемблера программку корректного ввода начальных данных (с контролем допустимого спектра) в таблицу и вывода приобретенного результата в виде таблицы.

2. Строчки

2.1. Написать модуль на языке Ассемблера для обработки строк.

2.2. Написать на языке Ассемблера программку корректного ввода начальных данных.

2.4. Произвести тестовые проверки, создать анализ результатов.

Ввести 2 строчки знаков. Вставить вторую строчку в первую, начиная с данного знака.


2.Теоретическая часть

2.1 Уровни языков программирования

Хоть какой язык программирования относится к одному из последующих уровней.

· Машинный язык
представляет собой совокупа машинных инструкций, конкретно исполняемые микропроцессором. Последовательности таковых инструкций составляют операционную систему и встроенную в аппаратную часть компа программное обеспечение.

· Низкоуровневые языки программирования (ассемблеры) –
предназначаются для определенных семейств микропроцессоров. Символьные аннотации этих языков конкретно соответствуют инструкциям машинных языков, и программки на ассемблере просто транслируются в машинный код.

· Высокоуровневые языки (С++ либо
Basic
) –
сделаны для того, чтоб сосредоточить усилия программистов на решение прикладных задач, не отвлекая их на аппаратные индивидуальности определенных машин. Команды языков высочайшего уровня обычно преобразуются в сложные последовательности машинных инструкций.

2.2 Преимущество языка ассемблера

Познание и внедрение языка программирования дает последующие достоинства:

· ясен метод взаимодействия программки с операционной системой, микропроцессором и ==BIOS;

· доступен выбор метода представления и хранение данных в операционной памяти и во наружных накопителях;

· можно созидать, как машина — комплекс технических средств, предназначенных для автоматической обработки информации в процессе решения вычислительных и информационных задач) (либо вычислительной системы) которое делает арифметические и логические операции данные программкой преобразования инфы управляет вычислительным действием и коор получает аннотации, как аннотации производятся и как обрабатываются данные;

· доступно конкретное управление наружными устройствами;

Не считая того, язык ассемблера полезен благодаря последующим свойствам:

· программка, написанная на ассемблере, существенно компактнее и резвее производится, чем написанная на языке программирования высочайшего уровня;

· ассемблер дает возможность решать узкоспециальные задачки, которые тяжело, если совершенно может быть, решить на языке высочайшего уровня;

· хотя большая часть программистов разрабатывают новейшие приложения с внедрением языков высочайшего уровня, программки, которые легче аккомпанировать и видоизменять, либо части программ, критические в скорости выполнения, очень нередко пишутся на ассемблере;

· резидентные программки (находящиеся в памяти во время выполнения остальных программ) и обработчики прерываний (выполняющие, к примеру, операции ввода/вывода) практически постоянно создаются на языке ассемблера.

2.3 структура программки на языке ассемблера

Программка на языке ассемблера представляет собой совокупа блоков памяти, именуемых секторами памяти. П
рограмма может состоять из 1-го либо нескольких частей. Любой сектор содержит совокупа предложений языка, любой из которых занимает отдельную строчку кода программки.

предложения на языке ассемблера бывают 4 типов:

1. Команды либо аннотации, представляющие из себя символьные аналоги машинных установок. В процессе трансляции эти аннотации преобразуются в надлежащие команды и системы установок процессора.

2. Макрокоманды – оформляемые определенным образом предложения текста программки, замещаемые во время трансляции иными предложениями.

3. Директивы – указания транслятору на выполнение отдельных действий. В директивах нет аналогов в машинном представлении.

4. Строчки объяснений – любые последовательности знаков, транслятором вполне игнорируются.

2.4 Синтаксис языка ассемблера

Для того, что бы транслятор мог предложения языка, они должны формироваться по определенным синтаксическим правилам. Для этого лучше всего употреблять формальное описание языка, наподобие грамматики.

Общий формат установок на языке ассемблера.

рис.1


Команда

рис.2

имя метки – идентификатор, значение которого является адресок 1 б, предложенного текста программки, кот. он обозначает.

КОП – код операции, мнемоническое обозначение машинной команды либо макрокоманды.

Операнды – части команды (макрокоманды) обозначающие объекты над которыми делается действие.

Допустимые знаки для написания текста программ:

· все латинские буковкы (большие и строчные являются эквивалентными);

· числа 0-9;

· знаки ?, _ , @, $, &;

· разделители и знаки операций.

предложения языка ассемблера формируется из лексем, представляющих из себя синтаксически не разделимые последовательности допустимых знаков языка, имеющие смысл для транслятора.

Лексемами являются:

1. Идентификаторы – последовательности допустимых знаков, использующиеся для обозначения кодов операций, переменных, констант, меток. Идентификатор может состоять из 1 либо нескольких знаков. В качестве знаков могут употребляться латинский алфавит, числа, знаки ?, _ , @, $, &. Идентификатор не может начинаться с числа. Допустимая длина до 255 знаков, при всем этом транслятор принимает лишь 32 первых. Существует возможность указывать транслятору различие больших и строчных букв.

2. Цепочки знаков – это последовательность знаков, заключенные в одинарные либо двоичные кавычки.

3. Целые числа – в одной из последующих систем исчисления: 2-ой, 10-ой, 16-ой.

Отожествление чисел делается по последующим правилам:

а) 10-е числа не требуют указания каких-то доп знаков (25, 16);

б) 2-е числа требуют, чтоб опосля их стояла буковка b (10011010b)

в) 16-е числа имеют больше критерий при записи: во-1-х – они состоят как из цифр, так и из знаков латинского алфавита; во-2-х – у транслятора могут появиться трудности с определением 16-ого числа, потому что число может начинаться как с числа, так и с знака. Для этого 16-е число непременно завершается латинской буковкой h (019ch).

Каждое предложение на языке ассемблера содержит описание объекта, над которым либо при помощи которого производятся некие деяния, эти объекты именуются операндами.

Операнды-
это объекты (действие инструкций и ли директив.

Операнды могут комбинироваться с арифметически – логическими, побитовыми операторами для расчета некого значения либо определения ячейки памяти, на которую будет повлиять команда.


3. Математика

3.1 метод программки

Блок-схема метода вычисления выражения






3.2 текст программки, реализующий метод

.modelsmall

.386

.stack 100h

.data

str1 db 09h,0d5h ,»========»,0B8h,0ah,0dh

db «Enter a «, 0b3h,09h, » «,0b3h,0ah,0dh

db 09h, 0c3h,»========»,0b4h,0ah,0dh

db «Enter b «,0b3h,09h, » «,0b3h,0ah,0dh

db 09h, 0c3h,»========»,0b4h,0ah,0dh

db «Result :»,0b3h,09h, » «,0b3h,0ah,0dh

db 09h, 0d4h,»========»,0beh,0ah,0dh, ‘$’

InBufa DB 7

kola DB ?

a DB ?, ?, ?, ?, ?, ?, ?

InBufb DB 7

kolb DB ?

b DB ?, ?, ?, ?, ?, ?, ?

Error DB «Input data ERROR !!!», 0dh, 0ah, ‘$’

DivErr DB «Dividing by Zero !!!», 0dh, 0ah, ‘$’

chA DW 0

chB DW 0

tabl DW 10000, 1000, 100, 10, 1

ResBin DW 0

ResBCD DB ‘+’, ‘0’, ?, ?, ?, ?, 0ah, 0dh, ‘$’

kol db 3

flag db 0

.code

include math.lib

.startup

cls

locate 0,0

mov ax,dgroup

mov ds,ax

cikl:

mov flag, 0

mov chA, 0

mov chB, 0

mov ResBin, 0

mov bp, offset ResBCD

mov ds:[bp], ‘+’

mov ds:[bp+1], ‘0’

mov ds:[bp+2], ?

mov ds:[bp+3], ?

mov ds:[bp+4], ?

mov ds:[bp+5], ?

mov al, 3

mov ah, kol

sub al, ah

imul ax, 7

locate 0, al

push ax

; Вывод таблицы

mov dx,offset str1

mov ah,09h

int 21h

; Ввод чисел

pop ax

push ax

inc al

locate 10, al

mov dx,offset InBufa

mov ah,0ah

int 21h

pop ax

push ax

add al, 3

locate 10, al

mov dx,offset InBufb

mov ah,0ah

int 21h

; Проверка на числа

prov InBufA

prov InBufB

; Проверка на символ

znak a

znak b

; ASCII > BIN

ASCII_2_BIN kola, chA

ASCII_2_BIN kolb, chB

funtion

; Bin 2 ASCII

mov cx, 5

mov bp, offset tabl

mov si, offset ResBCD

inc si

v:

mov bx, ds:[bp]

mov dx, 0

idiv bx

cmp al, 0

je nul

mov flag, 1

add al, 30h

mov ds:[si], al

inc si

jmp nol

nul: cmp flag, 0

je nol

mov ds:[si], 30h

inc si

nol: mov ax, dx

add bp, 2

loop v

; Выход_1

pop ax

add al, 5

locate 10, al

mov dx, offset ResBCD

mov ah, 09h

int 21h

locate 0, 35

dec kol

jnz cikl

; Выход

jmp ex

Er: cls

locate 25, 8

mov dx, offset Error

mov ah, 09h

int 21h

jmp ex

DEr: locate 25, 9

mov dx, offset DivErr

mov ah, 09h

int 21h

ex:

.exit(0)

END

3.3. Листинг кода библиотеки
string
.
lib
, в какой находятся макросы, вызываемые в данной программке

IFDEF @Model

IFIDN @Model, <1>

TINYMODEL TYPEDEF

ENDIF

ENDIF

cls macro

push ax

push bx

push cx

push dx

mov cx,0

mov dh,24

mov dl,79

mov ah,6

mov al,0

mov bh,7

int 10h

pop dx

pop cx

pop bx

pop ax

endm

locate macro col,row

push dx

mov dh,row

mov dl,col

move_cursor

pop dx

endm

move_cursor macro

LOCAL ok,vs

push ax

push bx

cmp dh,24

jna ok

sub dh,dh

ok: cmp dl,79

jna vs

sub dl,dl

vs: mov ah,15

int 10h

mov ah,2

int 10h

pop bx

pop ax

endm

prov macro InBuf

local c1

mov bp, offset InBuf

inc bp

mov ch, 0

mov cl, ds:[bp]

dec cl

add bp, 2

c1: cmp byte ptr [ds:[bp]], 30h

jl Er

cmp byte ptr [ds:[bp]], 39h

ja Er

inc bp

loop c1

endm

znak macro per

local m1

cmp per, ‘-‘

je m1

cmp per,’+’

jne Er

m1:

endm

ASCII_2_BIN macro kol, res

local p, plus

mov bp, offset kol

mov bx, offset kol

mov ax, 0

mov al, ds:[bx]

add bp, ax

mov ch, 0

mov cl, ds:[bx]

dec cl

mov bx, offset tabl

add bx, 8

mov ax, 0

mov dx, 0

p: mov ax, ds:[bx]

mov dl, ds:[bp]

sub dl, 30h

imul ax, dx

add res, ax

sub bx, 2

sub bp, 1

dec cx

jnz p

; Проверка на символ

mov bp, offset kol

add bp, 1

cmp ds:byte ptr[bp], ‘-‘

jne plus

neg res

plus:

endm

funtion macro

;Задание:

; b / a — 1, если a>b;

;Y = -295, если a=b;

; (a — 235) / b, если a<b;

mov ax, chA

mov bx, chB

cmp ax, bx

jne net

cmp ax, 0

je equal

net:

mov bp, offset a

mov si, offset b

mov dl, ds:[bp]

mov dh, ds:[si]

cmp dl, dh

jl more

ja low

cmp dl, ‘-‘

jne pl

cmp ax, bx

jg more

je equal

ja low

pl: cmp ax, bx

ja more

je equal

jl low

more: cmp al, 0

je DEr

mov ax, chB

mov bx, ax

and bx, 7FFFh

cmp ax, bx

je pluss

mov dx,0FFFFh

jmp did

pluss: mov dx, 0

did: idiv chA

sub ax,1

jmp www

equal: mov ax, 00h

sub ax,295

jmp www


low: cmp bl, 0

je DEr

mov ax,chA

sub ax,235

mov bx, ax

and bx, 7FFFh

cmp ax, bx

je plu2

mov dx,0FFFFh

jmp mnu2

plu2: mov dx, 0

mnu2:

idiv chB

www: mov bx, ax

and bx, 7FFFh

cmp ax, bx

je OK

neg ax

mov ResBCD, ‘-‘

OK: mov ResBin, ax

endm


4. Строчки

4.1 Блок-схема метода обработки строчки






4.2 текст программки, реализующий данный метод:

.model small

.586

.stack 100h

.data

Mes1 db «Input the first string»,0ah,0dh,’$’

Mes2 db «Input the second string»,0ah,0dh,’$’

Mes3 db «Input the simbol, from which you want to paste the second string»,0ah,0dh,’$’


Str1 db 255

db ?

db 255 dup (0)

Str2 db 255

db ?

db 255 dup (0)

Char1 db 2

db ?

db 0,’$’

Res db «Result is:»,0Ah,0Dh,’$’

Str db 255 dup (0)

.code

include string.lib

.startup

mov ax,dgroup

mov ds,ax

cls

locate 0,0

lea dx, Mes1

mov ah,09h

int 21h

lea dx, Str1

mov ah,0ah

int 21h

locate 0, 3

lea dx, Mes2

mov ah,09h

int 21h

lea dx, Str2

mov ah,0ah

int 21h

locate 0, 6

lea dx, Mes3

mov ah,09h

int 21h

lea dx, Char1

mov ah,0ah

int 21h

obrabotka

locate 0, 9

lea dx, Res

mov ah,09h

int 21h

lea dx, Str

mov ah,09h

int 21h

.exit(0)

END


4.3 Листинг кода библиотеки
math
.
lib
, в какой находятся макросы, вызываемые в данной программке

IFDEF @Model

IFIDN @Model, <1>

TINYMODEL TYPEDEF

ENDIF

ENDIF

cls macro

push ax

push bx

push cx

push dx

mov cx,0

mov dh,24

mov dl,79

mov ah,6

mov al,0

mov bh,7

int 10h

pop dx

pop cx

pop bx

pop ax

endm

locate macro col,row

push dx

mov dh,row

mov dl,col

move_cursor

pop dx

endm

move_cursor macro

LOCAL ok,vs

push ax

push bx

cmp dh,24

jna ok

sub dh,dh

ok: cmp dl,79

jna vs

sub dl,dl

vs: mov ah,15

int 10h

mov ah,2

int 10h

pop bx

pop ax

endm

obrabotka macro

mov bp,offset Char1

add bp, 2

mov dl, ds:[bp]

mov bp,offset Str1

add bp, 1

mov cl, ds:[bp]

inc bp

mov si,offset Str2

add si, 1

mov ch, ds:[si]

inc si

mov bx, offset Str

inc bx

lp:

mov al,ds:[bp]

mov ds:[bx],al

cmp al,dl

je m1

inc bx

inc bp

dec cl

jnz lp

m1: inc bx

inc bp

lpo:

mov al,ds:[si]

mov ds:[bx],al

inc bx

inc si

dec ch

jnz lpo

lopa:

mov al,ds:[bp]

mov ds:[bx],al

inc bx

inc bp

dec cl

jnz lopa

inc bx

mov ds:[bx],’$’

endm


ВЫВОД

В данной работе были разработаны программки, направленные на выполнение арифметических действий и строковых операций.

Программки были написаны на языке низкого уровня BorlandTurboAssembler(TASM), для микропроцессоров семейства Intel.

В процессе выполнения задания появлялись задачи во время отладки программки, так как язык ассемблера TASMимеет сложную структуру.

Были фактически закреплены приобретенные способности работы с TASM, познание о структуре языка и его синтаксиса.

Программки, разработанные в процессе выполнения данной расчетно-графической работы, характеризуются малым размером выполняемого файла, работай впрямую с аппаратным обеспечением ПК (Персональный компьютер — компьютер, предназначенный для эксплуатации одним пользователем).

]]>