Программирование на языке Ассемблер
Рассмотрение блок-схемы линейного алгоритма. Особенности программирования на языке Ассемблер. Отладчик в пошаговом режиме в системе 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