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

Рассмотрение блок-схемы линейного алгоритма. Особенности программирования на языке Ассемблер. Отладчик в пошаговом режиме в системе Windows. Описание используемых ключей программ ассемблирования. Процесс редактирования программных связей и отладки.

Рубрика Программирование, компьютеры и кибернетика
Вид лабораторная работа
Язык русский
Дата добавления 29.05.2014
Размер файла 179,6 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

Лабораторная работа № 1.

По курсу «Микропроцессорные средства и системы в электроприводе»

На тему: «Программирование на языке Ассемблер».

Выполнил студент Андрианов И.А.

Задание: Поместить в память компьютера несколько различных по размеру значений, произвести с некоторыми из них операцию сложения.

Перед написанием программы составляем её алгоритм. Ниже приведена общая блок-схема линейного алгоритма, в котором команды программы выполняются одна за другой:

Запускаем в операционной системе Windows текстовый редактор и создаём новый файл с именем Lab1.asm, и записываем в него текст программы:

После сохранения текста программы в файл Lab1.asm, необходимо его преобразовать в машинный код. Для этого действия в данной работе можно использовать компилятор языка Ассемблер - фирмы Borland. Программы, входящие в компилятор, являются консольными, поэтому необходимо запустить соответствующую оболочку в операционной системе.

.MODEL SMALL ;Модель памяти .DATA ;Сегмент данных

PR2 DW 1111h ;Определение переменной PR2 размером в ;2 байта (слово)

.CODE ;Сегмент кода

ORG 100h ;Адрес начала программы main: ;Метка, обозначающая точку входа в ;программу MOV BX,OFFSET PR1 ;Помещение в BX адрес переменной A2

MOV CX,PR2 ;Помещение в CX два байта находящиеся по ;адресу 0002

ADD AL,BL ;Сложение младших байтов регистров AX и ;BX

ADD AH,CH ;Сложение старших байтов регистров AX и ;CX

MOV AX,4C00h ;Номер функции завершения программы ;(004Сh) в AX

INT 21h ;Вызов функции DOS (завершение ;программы)

PR1 DB 20h ;Определение переменной PR1 размером в 1 ;байт

END main ;Конец программы

В системе Windows консоль запускается командой “cmd” следующим образом. Нажимаем кнопку «Пуск» -> «Выполнить» -> вводим в поле слово «cmd» и подтверждаем кнопкой «ОК». Исходный текст программы в виде файла Lab1.asm, а также файлы ассемблера помещаем в папку ASM на диске С. Попасть туда из консоли можно путём набора следующей последовательности команд в консоли: cd \ cd c:\asm Для ассемблирования нашей программы необходимо использовать файл “tasm.exe” из пакета компилятора, для этого набираем в командной строке: TASM.EXE /l Lab1.asm и нажимаем кнопку «Ввод».

В случае удачного выполнения ассемблирования нашей программы должны появиться следующие сообщения в консольном окне:

В папке ASM должны быть созданы два файла LAB1.LST и LAB1.OBJ.

Для того чтобы получить работающую программу, произведём сборку промежуточных результатов из объектного файла LAB1.OBJ, в исполняемый файл LAB1.EXE. Для этого применим компоновщик программ “TLINK.EXE”, запустив его со следующим ключом в командной строке: TLINK.EXE /t LAB1.OBJ Ключ “t” указывает компоновщику, что собранный исполняемый файл должен быть COM - типа. Если сборка произошла удачно, то на экране появятся следующие строки:

В папке ASM должен появиться файл - LAB1.COM - это и есть наша программа в машинном коде. Можно её запустить путём набора в командной строке названия программы - LAB1.COM и последующего нажатия клавиши «ENTER». программирование алгоритм ассемблер отладчик

Для пошаговой проверки правильности выполнения программы и выявления возможных ошибок, загрузим её в отладчик с помощью следующей строки: TD.EXE LAB1.COM Далее выведем на экран максимально полную информацию о выполняемом коде, о регистрах, памяти и их содержимом, нажимая последовательно в меню пункты «View» -> «CPU» -> Клавишу F5. Выполняем каждую команду клавишей F7, до тех пор, пока программа не кончится. Наблюдаем изменения, которые происходят с регистрами процессора. После выполнения последней команды сохраняем окно программы в виде рисунка:

.MODEL SMALL ;Модель памяти

.STACK 100h ;Выделение сегмента памяти под стек ;размером 256 байт

.DATA ;Сегмент данных PR1 DB 20h ;Определение переменной PR1 размером в 1 ;байт

PR2 DW 1111h ;Определение переменной PR2 размером в ;2 байта (слово)

.CODE ;Сегмент кода

main: ;Метка, обозначающая точку входа в ;программу

MOV AX,@data ;Формирование адреса сегмента данных в

MOV DS,AX ;регистре DS MOV BL,PR1 ;Помещение в BX значение переменной PR1

MOV CX,PR2 ;Помещение в CX значение переменной PR2

ADD AL,BL ;Сложение младших байтов регистров AX и ;BX

ADD AH,CH ;Сложение старших байтов регистров AX и ;CX

MOV DX,OFFSET PR2 ;Помещение в DX адрес переменной PR2

MOV AX,4C00h ;Номер функции завершения программы ;(004Сh) в AX

INT 21h ;Вызов функции DOS (завершение ;программы)

END main ;Конец программы

Составим программу, похожую на предыдущий пример, с добавлением в неё дополнительных директив, которые позволят компилятору создать программу в EXE - формате. В текстовом редакторе создаём новый файл с именем Lab12.asm, и записываем в него текст программы соответствующий своему варианту:

Для сборки программы сначала ассемблируем исходный текст с ключами в командной строке: TASM.EXE /l /zi Lab12.asm Убеждаемся, что ошибок нет:

Собираем EXE - программу с помощью компоновщика с ключами в командной строке: TLINK.EXE /v LAB12.OBJ

Если ошибок не произошло, тогда запускаем готовую программу на отладку, набрав в командной строке следующее: TD.EXE LAB12.EXE При трассировке (клавиша F7), записываем в столбец «Код машинной команды» байты команды и данных из столбца второго столбца отладчика в строку, соответствующую текущей команде, а значения регистров, записываем после выполнения этой команды (F7) и полученные значения помещаем в таблицу:

Команда на Ассемблере

Код машинной команды

Длина команды (байт)

Значения регистров

AX

BX

CX

IP

1

MOV AX, @data

B89A0C

3

0B2F

0000

0000

0003

2

MOV DS,AX

8ED8

2

0B2F

0000

0000

0005

3

MOV BL,PR1

8A1E0000

4

0B2F

0B2F

0000

0007

4

MOV CX,PR2

8B0E0100

4

0B2F

0B2F

1111

0009

5

ADD AL,BL

02C3

2

0B2F

0B2F

1111

000B

6

ADD AH,CH

02E5

2

1C2F

0B2F

1111

000D

7

MOV DX, offset PR2

BA0100

3

1C2F

0B2F

1111

0010

8

MOV AH,4C00h

B8004C

3

4C00

0B2F

1111

0013

INT 21h

CD21

2

0955

D122

0A63

0000

Вывод: В результате пошагового выполнения программы была составлена таблица, в которую вошли исходный текст программы и результаты её выполнения. В таблицу не вошли следующие регистры с результатами: DS=AX=0B73 -> Команда 2: MOV DS, AX DX=0001 -> Команда 7: MOV DX, offset PR2 Требования к отчёту 1. Продемонстрируйте преподавателю работающие программы lab1, lab12, использовав отладчик в пошаговом режиме, 2. Подготовьте отчет, включающий в себя описание полного цикла создания программы на языке ассемблер включающий; - Алгоритм созданных программ; - Описание используемых ключей программ ассемблирования, редактирования связей и отладки; - Тексты программ; - Результаты пошагового выполнения программ lab1 и lab12 в отладчике в виде таблицы.

Размещено на Allbest.ru

...

Подобные документы

  • Изучение некоторых аспектов языка Ассемблера и ЭВМ в целом. Построение алгоритмов решения поставленной задачи на языках программирования Си, Ассемблер УМ и IBM PC. Составление блок-схем решений и написание программ на каждом из перечисленных языков.

    курсовая работа [691,5 K], добавлен 20.10.2014

  • Принципы и алгоритмы обработки прерываний. Набор действий по реализации этапов обработки прерываний микропроцессора. Разработка структуры и алгоритма резидентной программы. Реализация программы на языке Ассемблер, методы её отладки и тестирования.

    курсовая работа [348,7 K], добавлен 22.12.2014

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

    контрольная работа [266,1 K], добавлен 21.08.2010

  • Сведения о интерполяторе. Принцип работы схемы сложения и вычитания единицы. Выбор элементной базы. Расчет эквивалентной передаточной функции схемы. Создание программы в коде ISO 7bit и ее реализация на низкоуровневом языке программирования Ассемблер.

    курсовая работа [363,2 K], добавлен 15.04.2014

  • Описание функциональных блоков микрокомпьютера. Основы построения программных средств. Принципы соединения аппаратных средств микропроцессорных систем. Разработка электрической принципиальной схемы и программы функционирования на языке Ассемблер.

    курсовая работа [176,8 K], добавлен 12.01.2015

  • Ввод и вывод чисел при помощи подключаемого модуля IO. Особенности работы с одномерными и двухмерными массивами. Тестирование состояние флагов. Рринципы и навыки работы с компилятором и отладчиком. Разработка схемы алгоритма программы на языке ассемблер.

    курсовая работа [1,3 M], добавлен 02.12.2009

  • Структурное программирование, схема алгоритма. Программа на языке Си для int, float. Подпрограмма ввода и вывода целых чисел на Ассемблере IBM. Тестирование и отладка, инструкция пользователя. Язык программирования Си (для int и float), этапы трансляции.

    курсовая работа [1,5 M], добавлен 21.10.2014

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

    курсовая работа [575,8 K], добавлен 06.12.2013

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

    методичка [121,0 K], добавлен 18.12.2011

  • Разработка на языке ассемблера алгоритма контроля, на циклический CRC-код, массива данных хранящегося в некоторой области памяти. Сохранение кода для последующей периодической проверки массива данных. Сообщение об искажении данных. Описание алгоритма.

    курсовая работа [453,0 K], добавлен 27.02.2009

  • Изучение языка низкого уровня ассемблер для написания примера программы для 16 битного приложения. Разработка и реализация алгоритма поднесения чисел к степени чисел над полем за основанием 2 (mod 2). Иллюстрация техники создания DOS приложения.

    курсовая работа [33,3 K], добавлен 08.11.2011

  • Структурные подразделения и отделы организации, ее технические программные средства. Разработка приложений обработки данных на ассемблере, языке программирования высокого уровня. Тестирование и оптимизация программных модулей. Разработка документации.

    отчет по практике [175,0 K], добавлен 30.09.2022

  • Изучение особенностей операционной системы, набора программ, контролирующих работу прикладных программ и системных приложений. Описания архитектуры и программного обеспечения современных операционных систем. Достоинства языка программирования Ассемблер.

    презентация [1,3 M], добавлен 22.04.2014

  • Моделирование цифровых узлов комбинационного и последовательного типа. Арифметические команды. Манипуляции над битами. Совместное использование Ассемблер с другими языками программирования. Вывод на экран в текстовом режиме. Команды работы со строками.

    отчет по практике [1,7 M], добавлен 11.03.2014

  • Ассемблер как символический аналог машинного языка. Архитектура микропроцессора: организация памяти, способы адресации операндов, правила использования регистров. Текст программы. Этапы программирования на ассемблере, алгоритмы выполнения задач.

    контрольная работа [515,1 K], добавлен 20.01.2016

  • Анализ технического задания. Разработка программы по вычислению функции на языке ассемблер для микропроцессора Кр580ВМ80. Алгоритмы программного умножения, деления, сложения, вычитания и сдвига влево многобайтных чисел. Расчет времени работы программы.

    курсовая работа [88,2 K], добавлен 19.09.2012

  • Эволюция языков программирования от низкого уровня до современности. Языки программирования второго поколения - ассемблер. Императивные, функциональные, логические и объектно-ориентированные языки. Машинная независимость. Парадигмы программирования.

    презентация [353,5 K], добавлен 14.10.2013

  • Разработка MatLab-программы для анализа вычислительной и методической погрешностей целочисленного алгоритма. Теоретические основы таблично-алгоритмического метода. Проектирование подпрограммы вычисления элементарной функции на языке Ассемблер IBM PC.

    курсовая работа [296,9 K], добавлен 13.03.2013

  • Типовые структуры блок-схем алгоритмов обработки данных на языке "Ассемблер" для простых микропроцессорных систем управления различными процессами. Реализация типовых функций управления, ее принципы и закономерности, правила графического оформления.

    методичка [572,8 K], добавлен 02.10.2010

  • Языки программирования низкого и высокого уровней и среды реализации. Особенности процедурных, логических, объектно-ориентированных языков. Состав системы программирования: трансляторы, библиотеки и отладчик программ, компоновщик, средства редактирования.

    презентация [11,9 K], добавлен 23.10.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.