Студенческий сайт КФУ - ex ТНУ » Учебный раздел » Учебные файлы »ПРОГРАММИРОВАНИЕ

Разработка и отладка подпрограмм на языке Ассемблера

Тип: курсовая работа
Категория: ПРОГРАММИРОВАНИЕ
Скачать
Купить
Структурное программирование, схема алгоритма. Программа на языке Си для int, float. Подпрограмма ввода и вывода целых чисел на Ассемблере IBM. Тестирование и отладка, инструкция пользователя. Язык программирования Си (для int и float), этапы трансляции.
Краткое сожержание материала:

Размещено на

Введение

Язык ассеммблера (англ. assemblylanguage) -- машинно-ориентированный язык низкого уровня с командами, обычно соответствующими командам машины, который может обеспечить дополнительные возможности вроде макрокоманд[1]; автокод, расширенный конструкциями языков программирования высокого уровня, такими как выражения, макрокоманды, средства обеспечения модульности программ[2].

Автокод -- язык программирования, предложения которого по своей структуре в основном подобны командам и обрабатываемым данным конкретного машинного языка[2].

Язык ассемблера -- система обозначений, используемая для представления в удобочитаемой форме программ, записанных в машинном коде. Язык ассемблера позволяет программисту пользоваться алфавитными мнемоническими кодами операций, по своему усмотрению присваивать символические имена регистрам ЭВМ и памяти, а также задавать удобные для себя схемы адресации (например, индексную или косвенную). Кроме того, он позволяет использовать различные системы счисления (например, десятичную или шестнадцатеричную) для представления числовых констант и даёт возможность помечать строки программы метками с символическими именами с тем, чтобы к ним можно было обращаться (по именам, а не по адресам) из других частей программы (например, для передачи управления)[3].

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

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

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

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

Каждая модель (или семейство) процессоров имеет свой набор -- систему -- команд и соответствующий ему язык ассемблера. Наиболее популярные синтаксисы языков ассемблера -- Intel-синтаксис и AT&T-синтаксис.

Существуют компьютеры, реализующие в качестве машинного язык программирования высокого уровня (Форт, Лисп, Эль-76). Фактически, в таких компьютерах они выполняют роль языков ассемблера.

1. Системный анализ

Целью курсового проекта является закрепление полученных знаний и профессиональных навыков разработки и отладки подпрограмм на языке Ассемблера. Курсовой проект выполняется в соответствии с этапами разработки программного обеспечения: анализ и постановка задачи для решения на ЭВМ, проектирование, кодирование, отладка и тестирование разработанной программы. Проектирование ведется в соответствии с методологией структурного программирования.

Требуется рассчитать выражение (1):

(1)

Необходимо разработать программы для её вычисления на языках Си, Ассемблер УМ и Ассемблер IBMPC. С клавиатуры вводятся 2 переменные и значения массива, после выполняется расчет 2 констант 2c и (a*a+1) данной функции и расчет z. Далее выполняется вывод результата на экран монитора. Программа состоит из 4-х функций: функция ввода переменных, две функция расчета констант, функция вывода результата.

2. Структурное программирование. Схема алгоритма. Программа на языке Си для int, float

Программа на языке программирования Си для int

#include"stdafx.h"

#include<iostream>

#include<conio.h>

usingnamespacestd;

constint N = 4;

voidraschet(int a, int c, int d[])

{int g, k, l, z;

int Y = 0;

g = 2 * c;

k = a*a + 1;

cout<<"g = "<<"2 * "<< c <<" = "<< g <<endl;

cout<<"k = "<< a*a <<" + 1"<<" = "<< k <<endl;

for (inti = 1; i<= N; i++)

{l = d[i] / 4;

cout<<i<<") "<<"l["<< d[i] <<"] = "<< d[i] <<" / 4 = "<< l <<endl;

z = (g - l) / k;

cout<<" z["<< d[i] <<"] = "<< z <<endl;

Y = Y + z;

cout<<endl;}

cout<<"Y = "<< Y <<endl;}

int main()

{setlocale(LC_ALL, "Russian");

int a, c, d[N];

cout<<"Введите a = ";

cin>> a;

cout<<"Введитес = ";

cin>> c;

cout<<"Введите элементы массива"<<endl;

for (inti = 1; i<= N; i++)

{cout<<"d["<<i<<"] = ";

cin>> d[i];}

raschet(a, c, d);

_getch();

return 0;}

Программа на языке программирования Си для float

#include"stdafx.h"

#include<iostream>

#include<conio.h>

usingnamespacestd;

constint N = 4;

voidraschet(floata, floatc, floatd[])

{float g, k, l, z;

float Y = 0;

g = 2 * c;

k = a*a + 1;

cout<<"g = "<<"2 * "<<c<<" = "<< g <<endl;

cout<<"k = "<<a*a<<" + 1"<<" = "<< k <<endl;

for (inti = 1; i<= N; i++)

{l = d[i] / 4;

cout<<i<<") "<<"l["<<d[i] <<"] = "<<d[i] <<" / 4 = "<< l <<endl;

z = (g - l) / k;

cout<<" z["<<d[i] <<"] = "<< z <<endl;

Y = Y + z;

cout<<endl;}

cout<<"Y = "<< Y <<endl;}

int main()

{setlocale(LC_ALL, "Russian");

float a, c, d[N];

cout<<"Введите a = ";

cin>> a;

cout<<"Введитес = ";

cin>> c;

cout<<"Введите элементы массива"<<endl;

for (inti = 1; i<= N; i++)

{cout<<"d["<<i<<"] = ";

cin>> d[i];}

raschet(a, c, d);

_getch();

return 0;}

Блок схема

Рис. 1

3. Программирование

3.1 Программа на Ассемблере УМ

Ex77 start 0

lda c

mul c2

sta p

ldx c0

lda c0

usl comp c12

jgt art

jeq art

jsubinc

rmox,a;i:=i+1

add c3

rmoa,x

jusl

art lda y

hlt

c word 20

e word 2

c0 word 0

c1 word 1

c3 word 3

c4 word 4

c12 word 12

c2 word 2

y word 0

d word 20

word 12

word 4

word -16

oresb 3

kresb 3

presb 3

inclda e

mul e

add c1

sta k

ldad,x

div c4

sta o

lda p

sub o

div k

add y

sta y

rsub

end Ex77

Блок схема

inc

Рис. 2

3.2 Подпрограмма ввода и вывода целых чисел на Ассемблере IBM

Подпрограмма ввода

Блок схема

Рис. 3

Подпрограмма на языке программирования Ассемблер IBMPC

InputIntproc

mov ah, 0ah

xor di, di

Другие файлы:

Ассемблер для IBM PC
Изучение команд для обработки строк, приемов, используемых в работе со строками, приемы их использования. Команды префикса повторения. Приемы программ...

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

Программирование с использованием подпрограмм на языке С
Решение задач прикладного программирования. Оформление разработанных алгоритмов в виде графических схем. Написание программ с использованием подпрогра...

Цифровой фильтр нижних частот
Функционирование рекурсивного цифрового фильтра нижних частот. Определение его быстродействия, импульсной и переходной характеристик. Составление и оп...

Компилятор языка Си для микроЭВМ
В книге американского автора приведены полный исходный текст компилятора языка Смолл-Си (подмножество языка Си), написанный на языке Смолл-Си, а такж...