Помощь студентам дистанционного обучения: тесты, экзамены, сессия
Помощь с обучением
Оставляй заявку - сессия под ключ, тесты, практика, ВКР
Скоро вступительные экзамены?

Лабораторная работа по программированию (Вариант 12)



Помощь с дистанционным обучением
Получи бесплатный расчет за 15 минут
 

Введите контактный e-mail:

 

Введите номер телефона

 

Что требуется сделать?

 

Каким способом с Вами связаться?:

E-mail
Телефон
Напишем вам на вашу почту
 
Перезвоним вам для уточнения деталей
 
Перезвоним вам для уточнения деталей
 

или напишите нам прямо сейчас

Написать в WhatsApp
 

1.Цель и задачи работы
Изучение программной модели и системы команд микропроцессора типа 80×86, технологии программирования на языке Ассемблер для IBM PC-совместимого компьютера и закрепление практических навыков работы с программными средствами разработки и отладки программ.

2.Основные теоретические сведения

2.1. Система программирования Microsoft Assembler

В настоящее время IBM PC-совместимые микро ЭВМ и ПК находят все большее применение в различных отраслях экономики. Одной из сфер их интенсивного использования являются автоматизированные информационно- измерительные системы и системы управления технологическими процессами и объектами. Работа вычислительной техники в таких системах происходит в режиме реального масштаба времени в темпе, соизмеримом с темпом работы управляемого объекта или процесса. Поэтому эффективность микроЭВМ и ПК в указанных условиях работы во многом определяется не только свойствами аппаратуры, но и свойствами управляющего программного обеспечения. К программам реального времени предъявляются жесткие требования в отношении быстродействия и объема требуемых вычислительных ресурсов. Ассемблер является машинно-ориентированным языком программирования и позволяет создавать самые быстродействующие и компактные исполняемые программы, поскольку такие программы непосредственно оперируют аппаратурой управляющего компьютера.
Очевидно, что квалифицированному специалисту в области автоматизации технологических процессов и производств необходимы определенные знания и опыт в области технологии программирования на языке Ассемблер. Ассемблер является способом символической записи программ на машинном языке. Операторы Ассемблера являются непосредственным отображением команд процессора конкретной ЭВМ. Для написания операторов используются не числовые, а мнемонические коды команд процессора ЭВМ, а для указания адресов операндов – не физические, а символические адреса ячеек памяти.
Программирование на Ассемблере до сих пор является трудоемким процессом, поскольку Ассемблер по сравнению с языками программирования высокого уровня имеет сложный синтаксис и требует от программиста достаточно глубоких знаний по архитектуре конкретного компьютера и его аппаратных средств. В связи с этими обстоятельствами при выполнении данной лабораторной работы рекомендуется уделить серьезное внимание изучению специальной литературы, приведенной в библиографическом списке и посвященной различным аспектам программно-аппаратной реализации микропроцессоров семейства Intel 80х86 и компьютеров с архитектурой типа IBM PC/AT.
Процесс создания программы на языке Ассемблер в общем случае содержит следующую последовательность действий. Обработка программы начинается с ввода ее исходного текста в память компьютера с помощью любого текстового редактора. При этом создается текстовый файл типа ASM. Для получения исполняемой программы необходимо преобразовать исходную программу на языке Ассемблер в машинный код (команды процессора). Основная часть этой работы производится транслятором компилирующего типа. В результате компиляции создается объектный файл типа OBJ. Чтобы получить исполняемый файл, который содержит коды команд процессора, объектный файл необходимо обработать компоновщиком (редактором связей). В процессе компоновки (редактирования связей) к объектному файлу присоединяются необходимые подпрограммы из библиотеки системы программирования и из личных библиотек программ пользователя, разрешаются все внешние программные ссылки и создается исполняемый файл, готовый к запуску. Файл исполняемой программы имеет тип EXE или COM.
Наиболее популярными системами программирования на языке Ассемблер для IBM PC-совместимых компьютеров являются система Microsoft Assembler фирмы Microsoft Corp и система Turbo Assembler фирмы Borland International. В рамках данной лабораторной работы предполагается программирование задач на языке Ассемблер только для реального режима работы (Real Mode Addressing) процессора компьютера.
Система программирования Microsoft Assembler представляет собой набор программного и методического обеспечения, предназначенный для разработки и отладки программ на языке Ассемблер. Система содержит следующие основные программные компоненты:
•MASM.EXE – транслятор-компилятор, осуществляющий преобразование исходной программы на языке Ассемблер (файл типа *.ASM) в объектную программу (файл типа *.OBJ);
•LINK.EXE – компоновщик (редактор связей), осуществляющий преобразование объектной программы в исполняемую программу (файл типа *.COM или *.EXE);
•LIB.EXE – программу (библиотекарь), позволяющую создавать и обслуживать библиотеки объектных программ (файлы типа *.LIB);
•ML.EXE – программу, которая интегрирует функции транслятора и компоновщика;
•ML.ERR – файл, который содержит тексты информационных сообщений программы ML.EXE;
•EXE2BIN.EXE – программу преобразования исполняемого файла из формата EXE в исполняемый файл формата COM;
•CODEVIEW.EXE – программу-отладчик, предназначенную для облегчения поиска и локализации семантических ошибок в исходной программе на языке Ассемблер.
Транслятор MASM.EXE запускается из командной строки операционной системы и имеет следующий формат запуска:
MASM[.EXE] [/парам] ASM-файл [,OBJ-файл] [,LST-файл] [,CRF-файл]
Параметры в командной строке разделяются запятыми. Если вместо запятой использовать точку с запятой, то все следующие за ней параметры будут игнорироваться.
Параметр ASM-файл – это обязательный входной параметр, который определяет исходный файл с текстом программы на языке Ассемблер. Для этого файла можно задавать только имя, и в этом случае будет подразумеваться расширение имени ASM. Транслятор допускает в одном сеансе работы компиляцию многих файлов, и в этом случае можно задать шаблон групповой операции с файлами, например *.ASM.
Остальные параметры компилятора MASM являются выходными и необязательными. Параметр OBJ-файл определяет имя объектного файла с расширением OBJ. Если имя объектного файла не задано, то компилятор создаст объектный файл с тем же именем, что и исходный файл. Если в процессе компиляции исходной программы будет обнаружена ошибка, то объектный файл создаваться не будет.
Параметр LST-файл определяет имя файла листинга, в который будет записан протокол трансляции программы. Этот файл имеет текстовый формат.
Параметр CRF-файл позволяет создать файл перекрестных ссылок с расширением CRF. Если имя этого файла в командной строке не указано, то оно будет таким же, как имя исходного файла.
Если требуется отменить создание какого-либо выходного файла, то вместо его имени можно использовать имя фиктивного файла NUL.
Кроме указанных параметров в командной строке запуска компилятора могут быть указаны параметры, начинающиеся с символа «/» и называемые ключами или переключателями. Наиболее важными переключателями определяются следующие вспомогательные функции компилятора:
•/c – в протокол трансляции включить таблицу перекрестных ссылок;
•/e – включить эмуляцию арифметического сопроцессора в случае его отсутствия в компьютере;
•/h – вывести на экран монитора краткую справочную информацию;
•/ipath – определить маршрут path для поиска файлов, включаемых в исходный текст программы;
•/l – создать файл протокола трансляции стандартного формата;
•/la – создать файл протокола трансляции полного формата;
•/ml – различать символы верхнего и нижнего регистров;
•/mu – преобразовать символы идентификаторов программы к верхнему регистру;
•/mx – различать символы верхнего и нижнего регистров для символов типа PUBLIC и EXTERN;
•/n – исключить из протокола трансляции таблицы символов;
•/t – отказаться от вывода сообщений компилятора в случае успешной трансляции;
•/w1 или /w2 – разрешить вывод предупреждающих сообщений компилятора (1 – серьезного уровня, 2 – советующего уровня);
•/w0 – запретить вывод предупреждающих сообщений компилятора;
•/x – в протокол трансляции включить директивы условной компиляции;
•/zd – в объектный файл включить информацию о номерах строк исходной программы (это необходимо для работы программы-отладчика CODEVIEW);
•/zi – в объектный файл включить полный объем отладочной информации.
Приведем пример командной строки запуска компилятора MASM:
MASM /la /zi LABRAB, , ,NUL
В данном примере происходит компиляция программы из файла LABRAB.ASM, при этом создается объектный файл с именем LABRAB.OBJ и файл протокола трансляции (файл листинга) LABRAB.LST. Файл перекрестных ссылок не создается. Задан переключатель /zi, с помощью которого в объектный файл будет внесена дополнительная информация, необходимая для последующей отладки программы. С помощью переключателя /la задается полный формат протокола трансляции.
Запуск компилятора MASM некоторых версий возможен также без указания каких-либо исходных данных в командной строке. В этом случае компилятор будет работать в диалоговом режиме и имена входных и выходных файлов должны вводиться пользователем с клавиатуры. Диалог будет иметь примерно следующий вид:
Source Filename [.ASM]:
labrab Object Filename [labrab.obj]:
Source Listing [NUL.LST]:
Cross Reference [NUL.CRF]:
В прямоугольных скобках указываются имена файлов, предлагаемые компилятором по умолчанию, которые будут приняты после нажатия клавиши Enter. Выходные файла с именем NUL не создаются. В качестве имени выходного файла можно указать PRN и направить файл на печать. Компилятор допускает обработку многих файлов, и в этом случае можно задать шаблон групповой операции с файлами (например, *.ASM) или перечислить имена файлов через знак +. Если все имена исходных файлов не помещаются на одной строке, то ввод имен можно продолжить, поставив символ + в последнюю позицию текущей строки. Пользователь может отказаться от ввода имен файлов с помощью нажатия комбинации клавиш Ctrl+Break или Ctrl+C и тем самым прекратить работу компилятора.
Компоновщик LINK.EXE также запускается из командной строки операционной системы и имеет следующий формат запуска:
LINK[.EXE] [/парам] OBJ-файл [,EXE-файл] [,MAP-файл] [,LIB-файл]
На рисунке 2 приведена схема работы компоновщика LINK с входными и выходными файлами.
Параметры в командной строке запуска компоновщика разделяются запятыми. Если в командной строке присутствует точка с запятой, то все следующие за ней параметры будут игнорироваться.
Параметр OBJ-файл – это обязательный входной параметр, который определяет исходный объектный файл. Для этого файла можно задавать только имя, и в этом случае будет подразумеваться расширение имени OBJ. Компоновщик допускает компоновку многих файлов, и при этом в командной строке можно задать шаблон групповой операции с файлами, например *.ASM. Необязательный параметр LIB-файл также является входным. Он определяет имя библиотеки объектных подпрограмм, необходимых компоновщику для разрешения внешних ссылок, которые могут встретиться в исходной программе.
Рисунок 2 – Схема работы компоновщика с файлами
Остальные параметры компоновщика являются выходными. Параметр EXE-файл определяет имя исполняемого файла с расширением EXE или COM. Если имя выходного файла не задано, то компилятор создаст исполняемый файл с тем же именем, что и исходный объектный файл. Если в процессе компоновки будет обнаружена ошибка, то исполняемый файл не создается.
Параметр MAP-файл определяет имя файла, который по умолчанию всегда создается компоновщиком. Этот файл имеет текстовый формат и содержит протокол компоновки исходной программы. Протокол включает список сегментов программы, стартовые адреса, сообщения о предупреждениях (warning) и ошибках (error), которые возникли в процессе компоновки исходной программы. Если имя MAP-файла не задано, то компилятор создаст данный файл с тем же именем, что и исходный объектный файл.
Кроме указанных параметров в командной строке запуска компоновщика могут быть указаны переключатели, начинающиеся с символа «/». Приведем наиболее существенные переключатели компоновщика:
•/? или /help – вывести на экран монитора краткую справочную информацию;
•/batch – отменить диалоговый режим работы компоновщика;
•/codeview – внести в исполняемый файл отладочную информацию с целью отладки его с помощью отладчика CODEVIEW;
•/exepack – создать более компактный исполняемый файл за счет удаления из него избыточной информации. Этот режим рекомендуется устанавливать при компоновке отлаженного варианта программы;
•/information – включить вывод информации о ходе компоновки программы;
•/linenumbers – включить в протокол компоновки номера строк и адреса исходных команд и операторов;
•/map – включить в протокол компоновки расширенную информацию о компоновке программы, включающую имена всех глобальных объектов и соответствующие им адреса относительно начала исполняемого модуля в формате сегмент:смещение;
•/tiny – скомпоновать программу типа COM.
Приведем пример командной строки запуска компоновщика LINK:
LINK LABRAB,LABRAB;
В данном примере происходит компоновка программы из файла LABRAB.OBJ, при этом создается исполняемый файл с именем LABRAB.EXE, Файл протокола компоновки не создается.
Все параметры из командной строки запуска компоновщика LINK могут быть помещены в так называемый файл автоматического ответа. Файл автоматического ответа имеет текстовый формат и его имя должно начинаться с символа @.
Если компоновщик LINK запускается без каких-либо параметров, то он переходит в диалоговый режим работы и предложит пользователю ввести с клавиатуры имена входных и выходных файлов: объектного файла, исполняемого файла, файла листинга (протокола) компоновки, файла библиотеки подпрограмм (если она необходима), файла с определениями (необязательный файл). После этого будет создан исполняемый файл. Указанная последовательность действий иллюстрируется следующим примером компоновки исполняемого файла с именем LABRAB.EXE:
Object Modules [.OBJ]: labrab Run File [labrab.exe]:
List File [NUL.MAP]:
Libraries [.LIB]:
Definitions File [NUL.DEF]:
В прямоугольных скобках указаны имена файлов, предлагаемые компоновщиком по умолчанию, которые будут приняты после нажатия клавиши Enter. При компоновке нескольких файлов можно задать шаблон групповой операции с файлами или перечислить имена файлов через знак +. Если все имена исходных файлов не помещаются на одной строке, то ввод имен можно продолжить, поставив символ + в последнюю позицию текущей строки. Пользователь может отказаться от ввода имен файлов с помощью нажатия комбинации клавиш Ctrl+Break или Ctrl+C и тем самым прекратить работу компоновщика.
Программа ML.EXE интегрирует функции транслятора и компоновщика. Она позволяет последовательно выполнить процедуры компиляции и компоновки исходного файла либо выполнить только трансляцию исходного файла, либо только компоновку исполняемой программы из объектного файла. Формат вызова программы ML:
ML[.EXE] [/parameters] filelist [/link linkoptions]
Параметры программы ML имеют следующий смысл:
•/parameters – список переключателей, определяющих режим работы компилятора;
•filelist – спецификация исходного (ASM) или объектного (OBJ) файла;
• /link – переключатель, включающий этап компоновки исполняемой программы;
•linkoptions – список переключателей, определяющих режимы работы компоновщика.
Приведем перечень основных переключателей программы ML:
•/Help или -? – вывести на дисплей краткой справочной информации;
•/AT – компоновать исполняемый файл в формате COM;
•/C – выполнить только компиляцию программы;
•/Cu – преобразовать все идентификаторы программы в символы верхнего регистра;
•/Fpi – включить в исполняемый файл эмуляцию команд арифметического сопроцессора (если он отсутствует в компьютере);
•/Ta<имя_файла> – определить имя исходного файла;
•/Fo<имя_файла> – определить имя объектного файла;
•/Fe<имя_файла> – определить имя исполняемого файла;
•/Fl<имя_файла> – определить имя файла листинга;
•/Ipath – определить маршрут path для поиска файлов, включаемых в исходный текст программы;
•/Sa –определить вывод протокола (листинга) в максимальном формате;
•/Sl<число> – определить количество позиций в строке распечатки исходного текста программы (целое положительное число из диапазона от 80 до 132, по умолчанию размер строки равен 80);
•/Sp<число> – определить количество строк на листе (страницы) распечатки исходного текста программы (целое положительное число не менее 15, по умолчанию размер листа равен 63 строкам);
•/St»заголовок», /Ss»подзаголовок» – определить соответственно заголовок и подзаголовок, выводимые на каждом листе распечатки текста программы. Ограничительные кавычки можно опустить, если параметр не содержит пробелы или символы табуляции. Параметру могут предшествовать пробелы;
•/Zs – выполнить только синтаксическую проверку текста исходной программы;
•/W0 и /W1 – выключить (0) или включить (1) вывод предупреждающих сообщений компилятора;
•/WX – интерпретировать предупреждающие сообщения компилятора как ошибочные;
•/Zd и /Zi – включить в объектный модуль отладочную информацию.
Переключатели /Sl и /Sp, /St и /Ss позволяют установить необходимый формат распечатки исходного текста программы.
Приведем пример командной строки запуска программы ML:
ML /AT LABRAB.ASM /link
В данном примере происходит компиляция программы из файла LABRAB.ASM, при этом создается объектный файл с именем LABRAB.OBJ. В случае успешной компиляции будет создан исполняемый файл с именем LABRAB.COM. Приведем пример протокола работы программы ML, выводимого на экран монитора компьютера в процессе компиляции и компоновки программы LABRAB:
D:\MASM>ML.EXE /AT labrab.asm /link
Microsoft (R) Macro Assembler Version 6.00
Copyright (C) Microsoft Corp 1981-1991. All rights reserved.
Assembling: labrab.asm
Microsoft (R) Segmented-Executable Linker Version 5.13
Copyright (C) Microsoft Corp 1984-1991. All rights reserved.
Object Modules [.OBJ]: labrab.obj/t
Run File [labrab.com]: «labrab.com»
List File [NUL.MAP]: NUL
Libraries [.LIB]:
Definitions File [NUL.DEF]: ;

2.2. Система программирования Turbo Assembler

Система программирования Turbo Assembler является практически полным функциональным аналогом системы программирования Microsoft Assembler. Основными программными компонентами системы программирования Turbo Assembler являются следующие:
•TASM.EXE – транслятор-компилятор, осуществляющий преобразование исходной программы на языке Ассемблер (файл типа *.ASM) в объектную программу (файл типа *.OBJ);
TLINK.EXE – компоновщик (редактор связей), осуществляющий преобразование объектной программы в исполняемую программу (файл типа *.COM или *.EXE);
•.EXE – программа-библиотекарь, позволяющая создавать и обслуживать библиотеки пользовательских программ (файлы типа *.LIB);
•TDEBUG.EXE – программа-отладчик, предназначенная для облегчения поиска и локализации семантических ошибок в исходной программе на языке Ассемблер.
Транслятор TASM.EXE запускается из командной строки операционной системы и имеет следующий формат запуска:
TASM[.EXE] ASM-файл [,OBJ-файл] [,LST-файл] [,XRF-файл]
Параметр ASM-файл – это обязательный входной параметр, который определяет исходный файл с текстом программы на языке Ассемблер. Для исходного файла можно задавать только имя, и в этом случае будет подразумеваться расширение имени ASM. Транслятор допускает компиляцию многих файлов, при этом можно задать шаблон групповой операции с файлами. Например, команда TASM * выполнит компиляцию всех файлов с расширением ASM из текущего каталога.
Остальные параметры компилятора TASM являются выходными и необязательными. Параметр OBJ-файл определяет имя объектного файла с расширением OBJ. Если имя объектного файла не задано, то компилятор создаст объектный файл с тем же именем, что и исходный файл. Параметр LST-файл определяет имя файла, в который будет записан протокол трансляции программы. Этот файл имеет текстовый формат.
Параметр XRF-файл позволяет создать файл перекрестных ссылок с расширением XRF. Если имя этого файла в командной строке не указано, то оно будет таким же, как имя исходного файла.
Если требуется отменить создание какого-либо выходного файла, то вместо его имени следует использовать параметр NUL. Если в качестве имени выходного файла указать PRN, то этот файл будет отправлен на печать.
Кроме указанных параметров в командной строке запуска компилятора могут быть указаны параметры, начинающиеся с символа «/» и называемые ключами или переключателями. Наиболее важными у компилятора TASM являются следующие переключатели:
•/a – сегменты программы в процессе компиляции расположить в алфавитном порядке;
•/c – в протокол трансляции включить таблицу перекрестных ссылок;
•/e – включить эмуляцию арифметического сопроцессора в случае его отсутствия в компьютере;
•/h или /? – вывести на экран монитора краткую справочную информацию о компиляторе;
•/ipath – определить маршрут path для поиска файлов, включаемых в исходный текст программы;
•/l – создать файл протокола трансляции;
•/ml – различать символы верхнего и нижнего регистров;
•/mu – преобразовать символов идентификаторов программы к верхнему регистру;
•/mx – различать символы верхнего и нижнего регистров для символов типа PUBLIC и EXTERN;
•/n – исключить из протокола трансляции таблицы символов;
•/r – использовать в процессе компиляции команды арифметического сопроцессора;
•/s – сегменты программы располагать в последовательном порядке;
•/w+ или /w- – разрешить (+) или запретить (–) вывод предупрежда- ющих сообщений компилятора;
•/x – включить в протокол трансляции директивы условной компиляции;
•/z – в сообщениях об ошибках указывать номера неправильных строк исходной программы;
•/zd – в объектный файл включить информацию о номерах строк исходной программы (это необходимо для последующей отладки программы);
•/zi – в объектный файл включить полный объем отладочной информации.
Приведем пример командной строки запуска компилятора TASM:
TASM /zi LABRAB, , ,NUL
В данном примере происходит компиляция программы из файла LABRAB.ASM, при этом создаются объектный файл с именем LABRAB.OBJ и файл протокола трансляции (файл листинга) LABRAB.LST. Файл перекрестных ссылок не создается. Задан переключатель /zi, с помощью которого в объектный файл будет внесена дополнительная информация, необходимая для последующей отладки программы.
Компоновщик TLINK.EXE также запускается из командной строки операционной системы и имеет следующий формат запуска:
TLINK[.EXE] OBJ-файл, EXE-файл [,MAP-файл] [,LIB-файл]
Параметр OBJ-файл – это обязательный входной параметр, он определяет исходный объектный файл. Для объектного файла можно задавать только имя, и в этом случае будет подразумеваться расширение имени OBJ. Остальные параметры компоновщика являются выходными. Параметр EXE-файл определяет имя исполняемого файла с расширением EXE или COM. Если имя выходного файла не задано, то компилятор создаст исполняемый файл с тем же именем, что и исходный файл.
Параметр MAP-файл определяет имя файла, который по умолчанию всегда создается компоновщиком. Этот файл содержит протокол компоновки исходной программы и имеет текстовый формат. Он включает список сегментов программы, стартовые адреса, сообщения о предупреждениях (warning) и ошибках (error), которые возникли в процессе компоновки исходной программы. Если имя MAP-файла не задано, то компилятор создаст данный файл с тем же именем, что и исходный объектный файл.
Кроме приведенных параметров в командной строке запуска компоновщика могут быть указаны переключатели. Наиболее важными переключателями, которые определяют вспомогательные функции компоновщика, являются:
•/h или /? – вывести на экран монитора краткой справочной информации о компоновщике;
•/m – включить в MAP-файл список внешних символов;
•/x – отказаться от создания MAP-файла;
•/i – разрешить присоединение к исполняемому файлу программных сегментов с неинициализированными данными;
•/l – создать в MAP-файле секции с номерами строк исходного объектного кода;
•/s – в дополнение к переключателю /m включить в MAP-файл подробную карту сегментов программы;
•/n – указать компоновщику, что отсутствуют библиотеки подпрограмм по умолчанию;
•/d – включить вывод предупреждающих сообщений при наличии повторяющихся символов в библиотеке подпрограмм;
•/c – включить распознавание символов верхнего и нижнего регистров для символов типа PUBLIC и EXTERN;
•/3 – включить генерацию 32-битного программного кода;
•/v – включить в исполняемую программу символьную информацию для работы программы-отладчика;
•/t – скомпоновать программу типа COM;
•/o – включить поддержку программ оверлейной структуры;
•/ye – разрешить использование отображаемой (expanded) памяти;
•/yx – разрешить использование расширенной (extended) памяти.
Если компилятор TASM и компоновщик TLINK запускаются без параметров, то они выводят на экран краткую справочную информацию о себе (как в случае задания переключателя /h или /?).
Приведем пример командной строки запуска компоновщика TLINK:
TLINK /x /t LABRAB
В данном примере происходит компоновка программы из файла LABRAB.OBJ, при этом создается исполняемый файл с именем LABRAB.COM, файл протокола компоновки не создается.
Все параметры из командной строки запуска компоновщика TLINK также могут быть помещены в файл автоматического ответа, имя которого должно начинаться с символа @.

2.3. Пример программы на языке Microsoft Assembler

Рассмотрим пример простой ассемблерной программы на языке Microsoft Assembler, где осуществляется вывод на экран монитора компьютера строки символов «Hello, world!»:
; Пример программы на языке Microsoft Assembler
Assume CS: Code, DS: Data
Data SEGMENT
Greet DB ‘Hello, world!’,13,10,’$’
Data ENDS
Code SEGMENT
Begin:
mov ax, DATA ; Загрузка адреса сегмента в регистр DS
mov ds, ax
mov dx, OFFSET Greet
mov ah, 9
int 21h ; Вывод сообщения
mov ah, 4Ch
int 21h ; Выход из программы
Code ENDS
Stack_ SEGMENT Stack
DB 256 DUP (?)
Stack_ ENDS END Begin
С помощью директивы Assume указывается, что адресный регистр CS связывается с сегментом машинного кода программы, а адресный регистр DS – с сегментом данных. Директива SEGMENT с меткой Data определяет область данных программы, а директива SEGMENT с меткой Code – область кода программы. Метка Begin определяет точку, с которой произойдет запуск программы на выполнение. Директива SEGMENT с меткой STACK_ позволяет выделить область стековой памяти объемом 256 байт. Конец каждой из трех областей оформлен с помощью директивы ENDS. Директива END указывает на завершение программы, начинающейся с метки Begin. Комментарии в программе начинаются с символа точка с запятой.

2.4. Пример программы на языке Turbo Assembler

Рассмотрим далее одну из возможных структур программы на языке Turbo Assembler. Эта программа выводит такую же одну строку символов, что и предыдущая программа.
; Пример программы на языке Turbo Assembler
.MODEL small ; Объявление модели памяти
.STACK 100h ; Стек размером 256 байт
.DATA ; Объявление сегмента данных
Greet DB ‘Hello world!’,13,10,’$’
.CODE
Begin:
mov ax, @DATA ; Загрузка адреса сегмента в регистр DS
mov ds, ax
mov dx, OFFSET Greet
mov ah, 9 ; Вывод сообщения int 21h
mov ah, 4Ch
int 21h ; Выход из программы
END Begin
Здесь директива .MODEL позволяет определить используемую модель памяти. При выполнении данной лабораторной работы для простых программ рекомендуется использовать модели tiny (минимальная) и small (малая). В приведенном примере задана модель small, которая предполагает использование двух сегментов памяти (каждый объемом до 64 Кбайт): первый сегмент для машинного кода программы, второй сегмент – для данных и стека. Директива .STACK позволяет определить область стековой памяти объемом 256 байт. Директива .DATA начинает область программы, в которой размещаются данные. Директива .CODE начинает область, в которой содержится код программы. Метка Begin определяет точку, с которой произойдет запуск программы на выполнение. Директива END указывает на завершение кода программы. После этой директивы можно определить метку, с которой произойдет запуск программы.

2.5. Пример протокола трансляции программы (файла листинга) в системе программирования Microsoft Assembler

Файл протокола трансляции (листинга) содержит действительный машинный код и относительное смещение каждой ассемблерной команды. Кроме этого, здесь содержится информация об используемых метках и сегментах (тип метки и значение, которому она соответствует, атрибуты сегментов). В протоколе может также присутствовать таблица перекрестных ссылок для всех меток, используемых в исходной программе. Эта таблица показывает, где определена каждая метка и в каких строках исходной программы она используется.
В протоколе трансляции можно выделить две части. Первая из них содержит ассемблерный код программы, дополненный машинным кодом и смещением команд и данных относительно начала соответствующего сегмента. Приведем пример листинга для программы, представленной в п. 2.3.
Microsoft (R) Macro Assembler Version 6.00
Assume CS: Code, DS: Data
0 Warnings
0 Errors
В начале протокола присутствуют наименование и версия транслятора, время и дата трансляции программы, идентификатор исходного программного файла. Если в процессе компиляции программы возникнут ошибки или предупреждения, то соответствующие сообщения будут вставлены в протокол трансляции сразу же после строки с ошибкой.
Каждая строка листинга компилятора Microsoft Assembler имеет следующий формат:
<смещение><машинный_код><исходный_код> ,
где смещение – смещение строки относительно начала соответствующего сегмента;
машинный_код – результат преобразования исходного кода в машинные команды (или шестнадцатеричный код команды);
исходный_код – соответствующая ассемблерная строка исходного файла.
Рассмотрим одну из строк листинга:
0005 BA 0000 R mov dx, OFFSET Greet ,
где 0005 – смещение команды в сегменте кода;
BA 0000 R – машинный код команды mov dx, OFFSET Greet, который содержит 3 байта (BA 00 00).
Каждая следующая машинная команда смещается в памяти компьютера на длину предыдущей команды. Например, смещение команды mov ds, ax равно 0003, поскольку длина предыдущей команды mov ax, DATA составляет 3 байта.
В конце машинного кода может присутствовать суффикс – в приведенном примере это суффикс R. Данный суффикс означает, что стоящее перед ним значение (смещение строки символов Greet) будет в дальнейшем скорректировано. Список возможных суффиксов и их назначение приведены в таблице 1.
Во второй части протокола трансляции присутствуют две таблицы. Первая из них (Segments and Groups) определяет используемые в исходной программе сегменты, а вторая – используемые метки. Первая таблица представляет собой список групп и сегментов. Каждая ее строка содержит следующие данные:
•идентификатор группы и сегмента (Name);
•размер данных в сегменте (Size);
•размер сегмента (Length);
•тип выравнивания сегмента (Align);
•тип объединения одноименных сегментов в группу (Combine);
•класс сегментов (Class).
Приведем пример описания сегмента:
Stack_ 16 Bit 0100 Para Stack
Здесь описывается сегмент стека с идентификатором Stack_. Размер данных в этом сегменте 16 бит, размер сегмента 10016 или 25610 байт, заданы выравнивание сегмента в памяти компьютера по границе параграфа (Para) (один параграф равен 16 байт), тип объединения и класс сегмента Stack.
Все метки во второй таблице (Symbols) перечислены в алфавитном порядке. Для каждой метки указаны ее тип (Type), значение (Value) и атрибут (Attr).
В конце протокола трансляции указывается количество обнаруженных в программе предупреждений (Warnings) и ошибок (Errors).

2.6. Пример протокола трансляции программы (файла листинга) в системе программирования Turbo Assembler

Структура протокола трансляции программы в системе программирования Turbo Assembler в основном соответствует структуре протокола трансляции в системе программирования Microsoft Assembler. Приведем пример листинга для программы, показанной в п. 2.4
Turbo Assembler Version 4.0 19/10/03 12:15:35 Page 1
example.asm

Каждая строка листинга компилятора Turbo Assembler имеет следующий формат:
<уровень><номер_строки><смещение><машинный_код><исходный_код>
где уровень – глубина вложенности фрагментов программы из включаемых файлов и макрокоманд;
номер_строки – номер строки оператора программы (не обязательно соответствует номеру строки в исходном файле);
смещение – смещение строки относительно начала соответствующего сегмента;
машинный_код – результат преобразования исходного кода в машинные команды (шестнадцатеричный код);
исходный_код – соответствующая ассемблерная строка исходного файла.
Рассмотрим одну из строк листинга:
11 0000 B8 0000s mov ax, @DATA
где 11 – номер строки,
0000 – смещение команды в сегменте кода;
B8 0000 s – машинный код ассемблерной команды mov ax, @DATA.
В конце машинного кода присутствует суффикс s. Данный суффикс означает, что стоящее перед ним значение (адрес начала сегмента данных) будет в дальнейшем скорректировано (см. таблицу 1). Машинный код приведенной команды содержит 3 байта (B8 00 00).
В этом протоколе трансляции также можно выделить две части. Первая содержит ассемблерный код программы, соответствующий машинный код, смещение команд и данных относительно начала сегмента. Во второй части присутствуют две таблицы. Первая из них определяет используемые в исходной программе метки, а вторая – используемые сегменты. Все метки перечислены в алфавитном порядке.
Вторая таблица представляет собой список программных групп и сегментов. Каждая ее строка содержит следующие данные: идентификатор группы и сегмента (Groups & Segments); размер данных (Bit); размер сегмента (Size); тип выравнивания сегмента (Align); тип объединения одноименных сегментов (Combine); класс сегментов (Class).
Приведенный листинг содержит также таблицу перекрестных ссылок. При наличии в листинге таблицы перекрестных ссылок в строках с метками, группами и сегментами появляются номера строк из первой части листинга, в которых встречаются эти метки, группы и сегменты. Номера с префиксом # определяют строки, в которых соответствующие символы (метки, группы или сегменты) определены. Информация из таблицы перекрестных ссылок может быть полезной для облегчения отладки сложной программы. Рассмотрим одну из строк:
GREET Byte DGROUP:0000 #6 13
Метка GREET определена в строке 6 и встречается в строках 6 и 13 исходной программы.

2.7. Пример оформления текста программы на ассемблере

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

;********************************************************
;* Пример оформления текста программы на ассемблере *
;* Программа умножения двух однозначных чисел *
;* Исходные данные вводятся с клавиатуры, *
;* результат выводится на дисплей *
;* Система программирования – Turbo Assembler *
;********************************************************
.MODEL small
.STACK 100H
str0 DB «****************************************»,13,10
DB «* ККР студента гр. 621222 Ххххххх Х.Х. *»,13,10
DB «****************************************»,13,10,»$»
str1 DB 13,10,»Введите множимое: «,»$»
str2 DB 13,10,»Введите множитель: «,»$» str3 DB 13,10,»Результат: «,»$»
num1 DB ?
num2 DB ?
.CODE
start:
mov ax,@data
mov ds,ax
; Вывод заставки
lea dx,str0 ; в DX — адрес строки
mov ah,9
int 21h ; вывод строки
input_1:
; Ввод множимого
lea dx,str1 ; в DX — адрес строки
mov ah,9
int 21h ; вывод строки
mov ah,1
int 21h ; ввод символа
cmp al,’0′ ; проверка введенного символа
jl input_1
cmp al,’9′
jg input_1
sub al,30h ; преобразование кода символа в число
mov num1,al ; запомнить множимое
input_2:
; Ввод множителя
lea dx,str2 ; в DX — адрес строки
mov ah,9
int 21h ; вывод строки mov ah,1
int 21h ; ввод символа<
cmp al,’0′ ; проверка введенного символа
jl input_2
cmp al,’9′ jg input_2
sub al,30h ; преобразование кода символа в число
mov num2,al ; запомнить множитель
xor ax,ax ; обнуление регистра AX
xor bx,bx ; обнуление регистра BX
mov al,num1
mov bl,num2
mul bl
aam ; коррекция результата в ax
mov dl,ah ; в DL старшая цифра
mov dh,al ; в DH младшая цифра
or dh,30h ; получение ASCII-кода младшей цифры
or dl,30h ; получение ASCII-кода старшей цифры
push dx ; сохранить регистр DX в стеке
lea dx,str3 ; в DX — адрес строки mov ah,9
int 21h ; вывод строки
pop dx ; восстановить регистр DX из стека
mov ah,2 ; вывод на экран старшей цифры int 21h
xchg dh,dl ; обмен значений в регистрах DH и DL
mov ah,2 ; вывод на экран младшей цифры<
int 21h
mov ax,4C00h
int 21h ; завершение программы с кодом 0
END start
Приведенная программа считывает с клавиатуры символы цифр от 0 до 9 и преобразует их в коды чисел от 0 до 9 путем вычитания из ASCII-кода символа цифры константы 30h (48). Программа содержит также проверку вводимых символов на принадлежность их к цифрам. В случае неправильного ввода программа предложит ввести число заново. После операции умножения выполняется команда AAM, которая преобразует двоичный код результат в код двузначного неупакованного двоично-десятичного числа (кодировка BCD). После этого коды старшей и младшей цифр результата преобразуются в ASCII- коды цифр от 0 до 9 и последовательно выводятся на дисплей. Для ввода и вывода данных, а также для завершения работы программы используются соответствующие функции прерывания 21H операционной системы MS-DOS.

3.Оборудование и программное обеспечение

IBM PC-совместимый ПК, операционная система MS-DOS или Windows, операционная оболочка типа Norton Commander, текстовый редактор, система программирования Ассемблер, дискета.

4. Задания на работу

Задание на лабораторную работу выдается каждому студенту в индивидуальном порядке. Оно содержит текст задачи, которую студент должен решить в виде программы на языке Ассемблер. Дополнительно в задании может определяться тип исполняемой программы – COM или EXE, а также используемая в программе модель памяти – Tiny или Small. Ниже приводятся тексты задач.
1.Ввести символ с клавиатуры и вывести его на дисплей.
2.Ввести символ с клавиатуры и вывести на дисплей его ASCII-код.
3.Ввести с клавиатуры целое число из диапазона 0-255 и вывести на дисплей эквивалентный этому числу ASCII-символ.
4.Ввести с клавиатуры целое число из диапазона 0-255 и использовать его в качестве кода завершения программы.
5.Вывести на дисплей скэн-код нажатой функциональной клавиши (F1–F12).
6.Вывести на дисплей в цикле цифры от 0 до 9.
7.Вывести на дисплей в цикле числа от 10 до 99.
8.Вывести на дисплей в цикле числа 10, 20, 30, 40, 50, 60, 70, 80, 90.
9.Вывести на дисплей в цикле буквы латинского алфавита от A до Z.
10.Вывести на дисплей в цикле буквы русского алфавита от А до Я.
11.Вывести на дисплей идентификатор текущего дискового привода (например, «Текущий привод С:»).
12.Вывести на дисплей наименование текущего каталога (текущей папки).
13.Вывести на дисплей объем свободного пространства на текущем магнитном диске.
14.Вывести на дисплей объем свободного пространства на заданном магнитном диске. Идентификатор диска (A–Z) ввести с клавиатуры.
15.Ввести с клавиатуры число из диапазона от 1 до 9 и вывести его на дисплей в цикле столько раз, сколько его значение.
16.Ввести с клавиатуры число из диапазона от 1 до 99 и вывести его на дисплей в цикле столько раз, сколько его значение
17.Ввести с клавиатуры символ и выдать звуковой сигнал, если этот символ цифра. Одновременно с сигналом вывести на дисплей сообщение «Это цифра».
18.Ввести с клавиатуры символ и выдать звуковой сигнал, если этот символ прописная буква латинского алфавита. Одновременно с сигналом вывести на дисплей сообщение «Это прописная буква».
19.Ввести с клавиатуры символ и выдать звуковой сигнал, если этот символ строчная буква латинского алфавита. Одновременно с сигналом вывести на дисплей сообщение «Это строчная буква».
20.Ввести с клавиатуры символ и вывести на дисплей одно из трех сообщений разного цвета: «Это цифра», «Это буква», «Это символ».
21.Ввести с клавиатуры строку символов и вывести ее на дисплей. Значение максимальной длины строки (например, 20 символов) ввести с клавиатуры.
22.Ввести с клавиатуры число из диапазона от 1 до 9 и вывести на дисплей значение квадрата этого числа.
23.Ввести с клавиатуры число из диапазона от 1 до 9 и вывести на дисплей утроенное значение этого числа.
24.Ввести с клавиатуры число из диапазона от 1 до 9 и вывести на дисплей половинное значение этого числа.
25.Ввести с клавиатуры двузначное целое число без знака и вывести на дисплей одно из двух сообщений: «Число четное» или «Число нечетное».
26.Ввести с клавиатуры четырехзначное целое число без знака и вывести на дисплей одно из двух сообщений: «Число четное» или «Число нечетное».
27.Ввести с клавиатуры двузначное целое число без знака и вывести на дисплей значение этого числа, уменьшенное на 1.
28.Ввети с клавиатуры четное двузначное целое число без знака и вывести на дисплей половинное значение этого числа.
29.Ввести с клавиатуры двузначное целое число без знака и вывести на дисплей удвоенное значение этого числа.
30.Ввести с клавиатуры четырехзначное целое число без знака и вывести на дисплей одно из двух сообщений: «Число четное» или «Число нечетное».
31.Ввести с клавиатуры четырехзначное целое число без знака и вывести на дисплей значение этого числа, уменьшенное на 100.
32.Ввести с клавиатуры четное четырехзначное целое число без знака и вывести на дисплей половинное значение этого числа.
33.Ввети с клавиатуры четырехзначное целое число без знака и вывести на дисплей удвоенное значение этого числа.
34.Ввести с клавиатуры двузначное шестнадцатеричное число и вывести на дисплей его десятичное значение.
35.Вывести на дисплей значение выражения Y=2N. Значение N ввести с клавиатуры.
36.Вывести на дисплей значение выражения Y=MN, где M=1, …, 9, N=1, …, 9. Значения M и N ввести с клавиатуры.
37.Вывести на дисплей значение выражения Y=X!, где X=1, …, 9. Значение X ввести с клавиатуры.
38.Вывести на дисплей значение выражения Y=√X, где X=4, 9, 16, 25, 36, 49, 64, 81. Значение X ввести с клавиатуры. Для вычисления корня использовать арифметический сопроцессор.
39Создать генератор случайных чисел и вывести на дисплей в цикле несколько случайных чисел.
40.Ввести с клавиатуры значение температуры в градусах Цельсия (целое положительное число из диапазона 0-99) и вывести на дисплей то же значение температуры в градусах Кельвина.
41.Ввести с клавиатуры значение температуры в градусах Кельвина (целое положительное число из диапазона 0-373) и вывести на дисплей то же значение температуры в градусах Цельсия.
42.Ввести с клавиатуры значение температуры в градусах Цельсия (целое положительное число из диапазона 0-99) и вывести на дисплей то же значение температуры в градусах Фаренгейта.
43.Ввести с клавиатуры значение температуры в градусах Фаренгейта (целое положительное число из диапазона 0-99) и вывести на дисплей то же значение температуры в градусах Цельсия.
44.Вывести на дисплей информацию о текущем режиме работы видеосистемы компьютера, например «Текущий видеорежим – текстовый» или «Текущий видеорежим – графический».
45.Установить режим работы видеоадаптера компьютера, цвет выводимых на дисплей символов и цвет фона. Необходимые параметры (код режима, код цвета символов, код цвета фона) ввести с клавиатуры.
46.Установить текстовый режим работы видеоадаптера компьютера (например, 25х40 или 25х80), ввести с клавиатуры номер строки и номер столбца экрана, установить курсор в заданную позицию и вывести на экран какой-либо символ.
47.В текстовом режиме работы видеосистемы компьютера включить окаймление изображения (бордюр) определенного цвета. Работу программы осуществить до нажатия любой клавиши, после чего выключить окаймление. Код цвета (0 – 7) окаймления ввести с клавиатуры.
48.Вывести на дисплей значение текущей даты.
49.Вывести на дисплей значение текущего времени.
50.Ввести с клавиатуры строчную букву латинского алфавита (a – z) и вывести на дисплей эту букву как прописную (A – Z).
51.Ввести с клавиатуры прописную букву латинского алфавита (A – Z) и вывести на дисплей эту букву как строчную (a – z).
52.Ввести с клавиатуры строку, содержащую только строчные буквы латинского алфавита (a – z), и вывести на дисплей эту строку, содержащую те же буквы как прописные (A – Z).
53.Ввести с клавиатуры строку, содержащую только прописные буквы латинского алфавита (A – Z), и вывести на дисплей эту строку, содержащую те же буквы как строчные (a – z).
54.Ввести с клавиатуры строку символов и вывести ее в текстовый файл с расширением имени TXT. Имя файла (до 8 символов) и величину максимальной длины строки (например, 20 символов) ввести с клавиатуры.
55.Ввести с клавиатуры строку символов и вывести ее на принтер. Величину максимальной длины строки (например, 20 символов) ввести с клавиатуры.
56.Ввести с клавиатуры строку символов и одиночный символ. Выполнить поиск символа в строке. Вывести на дисплей сообщение «Символ присутствует в строке» или «Символ отсутствует в строке». Величину максимальной длины строки (например, 8 символов) ввести с клавиатуры. Минимальная длина строки – 3 символа.
57.Ввести с клавиатуры две строки символов одинаковой длины. Выполнить посимвольное сравнение строк. Вывести на дисплей сообщение «Строки равны» или «Строки не равны». Величину максимальной длины строк (например, 8 символов) ввести с клавиатуры. Минимальная длина каждой строки – 3 символа.
58.Создать в корневом каталоге заданного дискового накопителя (от A: до Z:) подкаталог с заданным именем, которое вводится с клавиатуры.
59.Вывести на дисплей метку (label) заданного магнитного диска. Идентификатор диска (от A: до Z:) ввести с клавиатуры.
60.Вывести на дисплей строку символов, заданную в качестве параметра запуска разрабатываемой программы.
61.Вывести на дисплей информацию о количестве кнопок манипулятора «мышь», например: «Мышь имеет две кнопки» или «Мышь имеет три кнопки».
62.Вывести на дисплей координаты текущего положения курсора манипулятора «мышь».
63.Вывести на дисплей информацию о состоянии кнопок манипулятора «мышь», например: «Нажата левая кнопка», «Нажата правая кнопка», «Нажата средняя кнопка».
64.Вывести на дисплей координаты текущего положения рукоятки игрового манипулятора (джойстика).
65.Вывести на дисплей информацию о состоянии кнопок рукоятки игрового манипулятора (джойстика), например: «Нажата кнопка 1» или «Нажата кнопка 2».
66.Вывести на дисплей информацию о поддержке процессором команды CPUID («Микропроцессор поддерживает команду CPUID» или «Микропроцессор не поддерживает команду CPUID»).
67.Вывести на дисплей информацию о наличии (или отсутствии) в микропроцессоре интегрированного арифметического сопроцессора («Микропроцессор содержит арифметический сопроцессор» или «Микропроцессор не содержит арифметический сопроцессор»).
68.Вывести на дисплей информацию о наличии в микропроцессоре расширенного контроллера прерываний APIC («Микропроцессор содержит APIC» или «Микропроцессор не содержит APIC»).
69.Вывести на дисплей строку символов идентификации производителя микропроцессора компьютера.
70.Вывести на дисплей числовые коды семейства, модели и модификации микропроцессора компьютера.
71.Определить с помощью соответствующей команды программные возможности микропроцессора компьютера и вывести на дисплей следующие строки: «Микропроцессор поддерживает команды MMX», «Микропроцессор не поддерживает команды MMX».
72.Определить с помощью соответствующей команды программные возможности микропроцессора компьютера и вывести на дисплей следующие строки: «Процессор поддерживает команды 3DNow!», «Процессор не поддерживает команды 3DNow!».
73.Определить с помощью соответствующей команды программные возможности микропроцессора компьютера и вывести на дисплей следующие строки: «Процессор поддерживает не команды SSE», «Процессор поддерживает команды SSE», «Процессор поддерживает команды SSE2».
74.Вывести на дисплей сообщение о поддержке микропроцессором технологии Hyper-Threading («Микропроцессор поддерживает технологию Hyper-Threading» или «Микропроцессор не поддерживает технологию Hyper- Threading»).
75.Вывести на дисплей значение объема видеопамяти компьютера.
76.Вывести на дисплей значение полного объема оперативной памяти компьютера.
77.Вывести на дисплей значение объема расширенной оперативной памяти компьютера.
78.Вывести на дисплей значение объема «винчестерского» накопителя компьютера.
79.Вывести на дисплей строку идентификации видеоадаптера компьютера.
80.Вывести на дисплей строку идентификации монитора компьютера.
81.Переключить монитор компьютера в «спящий» режим до нажатия какой-либо клавиши на клавиатуре.
82.Создать программу, генерирующую в течение заданного времени (например, от 1 до 9 секунд или условных единиц) непрерывный звуковой сигнал. Величину интервала времени ввести с клавиатуры.
83.Создать программу, генерирующую до нажатия какой-либо клавиши на клавиатуре непрерывный звуковой сигнал с заданной частотой (например, 1000 Гц).
84.Создать программу, генерирующую до нажатия какой-либо кнопки «мыши» непрерывный звуковой сигнал с заданной частотой (например, 1000 Гц).
85.Вывести на дисплей информацию о состоянии режима работы клавиатуры: «Режим NumLock включен» или «Режим NumLock выключен».
86.Вывести на дисплей информацию о состоянии режима работы клавиатуры: «Режим CapsLock включен» или «Режим CapsLock выключен».
87.Разработать программу, включающую индикатор клавиатуры NumLock.
88.Разработать программу, включающую индикатор клавиатуры CapsLock.
89.Разработать программу, удаляющую на дискете (привод А) файл с заданной спецификацией. Спецификацию удаляемого файла ввести с клавиатуры.
90.Разработать программу, удаляющую на заданном магнитном диске файл с заданной спецификацией. Идентификатор диска (A: – Z:) и спецификацию удаляемого файла ввести с клавиатуры.
91.Разработать программу, которая выводит на дисплей тип дискетного накопителя А:, например: «Привод 5,25 дюйма, 1200 Кбайт».
92.Разработать программу, которая выводит на дисплей тип дискеты, установленной в приводе А:, например: «Дискета 3,5 дюйма, 1440 Кбайт».
93.Разработать программу, которая выводит на экране дисплея строку «Количество приводов CD/DVD – …».
94.Разработать программу, которая выводит на экране дисплея количество приводов CD/DVD и присвоенные приводам идентификаторы.
95.Разработать программу, которая выводит на дисплей идентификатор диска, с которого был произведен старт операционной системы, например: «Загрузочный привод: А:».
96.Разработать программу, которая выводит на дисплей номер версии операционной системы.
97.Разработать программу, которая выводит на дисплей информацию о состоянии режима проверки нажатия клавиш Ctrl+C или Ctrl+Break, например: «Проверка Ctrl+C/Ctrl+Break включена» или «Проверка Ctrl+C/Ctrl+Break выключена».
98.Разработать программу, которая активизирует определенную дочернюю программу. Спецификацию дочерней программы задать в форме константы.
99.Разработать программу, которая активизирует дочернюю программу, спецификацию которой ввести с клавиатуры в форме символьной строки.
100.Разработать программу, которая выводит на дисплей наименование разработчика и дату разработки BIOS.
101.Разработать программу, которая выводит на экран монитора содержимое заданного текстового файла. Спецификацию выводимого файла ввести с клавиатуры.
102.Вывести на дисплей строку идентификации «винчестерского» накопителя с интерфейсом IDE/ATA (*).
103.Вывести на дисплей строку идентификации привода для компакт- дисков (CD/DVD) с интерфейсом ATAPI (*).

5. Порядок выполнения работы

1.Ознакомиться с теоретическими положениями лабораторной работы, изучить функциональные возможности системы программирования, ответить на контрольные вопросы.
2.Уяснить содержание индивидуального задания, составить алгоритм решения задачи. Определить и изучить команды процессора, программные прерывания операционной системы и базовой системы ввода-вывода (BIOS), которые необходимо использовать для решения данной задачи.
3.Разработать программу на языке Ассемблер. Занести программу в память компьютера с помощью тестового редактора. Записать программу в файл с расширением имени ASM. В текст программы ввести комментарии, примеры которых приведены в п. 2.6.
4.Выполнить трансляцию программы, получить объектный файл и файл листинга. Изучить содержание протокол трансляции программы, устранить выявленные транслятором синтаксические ошибки.
5.Выполнить компоновку программы и получить исполняемый файл формата EXE или COM. Изучить протокол компоновки программы и устранить ошибки компоновки, если они были.
6.Запустить скомпонованную программу на выполнение. Выявить семантические ошибки и отладить программу. При необходимости воспользоваться программой-отладчиком, для чего рекомендуется самостоятельно изучить приемы работы с ней.
7.Распечатать отлаженную программу. Подготовить отчет о проделанной работе и защитить отчет перед преподавателем.

6. Содержание и оформление отчета

Отчет по лабораторной работе выполняется на листах писчей бумаги формата А4. По согласованию с преподавателем отчет может быть оформлен в ученической тетради. Страницы отчета должны быть пронумерованы. Отчет должен содержать:
1.титульный лист, выполненный по общепринятому образцу;
2.текст индивидуального задания;
3.схему алгоритма программы, выполненную по ГОСТ 19.701-90 (ИСО 5807-85) Единая система программной документации (ЕСПД). Схемы алгоритмов, программ, данных и систем. Обозначения условные и правила выполнения;
4.текст (распечатку) программы на языке Ассемблер;
5.описание алгоритма и программы;
6.распечатку результатов работы программы (она может быть получена, например, путем распечатки копии экрана монитора ПК).
7.библиографический список, выполненный по ГОСТ Р 7.0.100-2018 Система стандартов по информации, библиотечному и издательскому делу (СИБИД). Библиографическая запись. Библиографическое описание. Общие требования и правила составления .
Для более полного ознакомления с архитектурой и системой микропроцессоров 80х86, языком программирования Ассемблер, функциональными возможностями изучаемых систем программирования следует воспользоваться источниками из списка рекомендуемой литературы. Рекомендуется также при выполнении данной лабораторной работы воспользоваться фрагментами ассемблерных программ, приведенных в указанных источниках.

7. Контрольные вопросы

1.Какова область применения языка программирования Ассемблер?
2.Почему Ассемблер называется машинно-ориентированным языком программирования?
3.Какими особенностями характеризуются программы, разработанные на языке Ассемблер, относительно программ, разработанных на языках программирования высокого уровня?
4.Какие группы команд по функциональному назначению имеют микропроцессоры типа 80х86?
5.Какие форматы представления чисел используются в арифметических командах микропроцессоров типа 80х86?
6.Какие регистры микропроцессоров типа 80х86 являются доступными для программиста?
7.Какие способы адресации используются в командах микро- процессоров типа 80х86?
8.Каковы основные принципы организации системы прерываний в микропроцессорах типа 80х86?
9.Какова структура программы на языке Ассемблер для микро- процессоров типа 80х86?
10.Что такое «модель памяти»? Какие модели памяти предусматриваются в программах для микропроцессоров типа 80х86?
11.Чем различаются друг от друга модели памяти Tiny и Small?
12.Что такое «система программирования»?
13.Какие компоненты входят в систему программирования Microsoft Assembler?
14.Какие компоненты входят в систему программирования Turbo Assembler?
15.Какие функции выполняет транслятор с языка программирования?
16.Какие данные являются входными и выходными для транслятора- компилятора?
17.Каково назначения директив управления трансляцией?
18.Что такое «объектный файл»?
19.Какие функции выполняет компоновщик (редактор связей)?
20.Какие данные являются входными и выходными для компоновщика (редактора связей)?
21.Какие функции выполняет программа ML в системе программирова- ния Microsoft Assembler?
22.Какие существуют форматы исполняемых файлов? Чем они отличаются друг от друга?
23.Какая информация содержится в протоколе трансляции программы?
24.Каково назначение библиотечных файлов? С помощью каких программных средств они могут быть созданы?
25.Какие и методы и средства применяются для облегчения отладки программ на языке Ассемблер?

Помощь с дистанционным обучением
Получи бесплатный расчет за 15 минут
 

Введите контактный e-mail:

 

Введите номер телефона

 

Что требуется сделать?

 

Каким способом с Вами связаться?:

E-mail
Телефон
Напишем вам на вашу почту
 
Перезвоним вам для уточнения деталей
 
Перезвоним вам для уточнения деталей
 

или напишите нам прямо сейчас

Написать в WhatsApp
 

Оставить комментарий

 

Ваше имя:

Ваш E-mail:

Ваш комментарий

Inna Petrova 18 минут назад

Нужно пройти преддипломную практику у нескольких предметов написать введение и отчет по практике так де сдать 4 экзамена после практики

Иван, помощь с обучением 25 минут назад

Inna Petrova, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru

Коля 2 часа назад

Здравствуйте, сколько будет стоить данная работа и как заказать?

Иван, помощь с обучением 2 часа назад

Николай, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru

Инкогнито 5 часов назад

Сделать презентацию и защитную речь к дипломной работе по теме: Источники права социального обеспечения. Сам диплом готов, пришлю его Вам по запросу!

Иван, помощь с обучением 6 часов назад

Здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru

Василий 12 часов назад

Здравствуйте. ищу экзаменационные билеты с ответами для прохождения вступительного теста по теме Общая социальная психология на магистратуру в Московский институт психоанализа.

Иван, помощь с обучением 12 часов назад

Василий, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru

Анна Михайловна 1 день назад

Нужно закрыть предмет «Микроэкономика» за сколько времени и за какую цену сделаете?

Иван, помощь с обучением 1 день назад

Анна Михайловна, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru

Сергей 1 день назад

Здравствуйте. Нужен отчёт о прохождении практики, специальность Государственное и муниципальное управление. Планирую пройти практику в школе там, где работаю.

Иван, помощь с обучением 1 день назад

Сергей, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru

Инна 1 день назад

Добрый день! Учусь на 2 курсе по специальности земельно-имущественные отношения. Нужен отчет по учебной практике. Подскажите, пожалуйста, стоимость и сроки выполнения?

Иван, помощь с обучением 1 день назад

Инна, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru

Студент 2 дня назад

Здравствуйте, у меня сегодня начинается сессия, нужно будет ответить на вопросы по русскому и математике за определенное время онлайн. Сможете помочь? И сколько это будет стоить? Колледж КЭСИ, первый курс.

Иван, помощь с обучением 2 дня назад

Здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru

Ольга 2 дня назад

Требуется сделать практические задания по математике 40.02.01 Право и организация социального обеспечения семестр 2

Иван, помощь с обучением 2 дня назад

Ольга, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru

Вика 3 дня назад

сдача сессии по следующим предметам: Этика деловых отношений - Калашников В.Г. Управление соц. развитием организации- Пересада А. В. Документационное обеспечение управления - Рафикова В.М. Управление производительностью труда- Фаизова Э. Ф. Кадровый аудит- Рафикова В. М. Персональный брендинг - Фаизова Э. Ф. Эргономика труда- Калашников В. Г.

Иван, помощь с обучением 3 дня назад

Вика, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru

Игорь Валерьевич 3 дня назад

здравствуйте. помогите пройти итоговый тест по теме Обновление содержания образования: изменения организации и осуществления образовательной деятельности в соответствии с ФГОС НОО

Иван, помощь с обучением 3 дня назад

Игорь Валерьевич, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru

Вадим 4 дня назад

Пройти 7 тестов в личном кабинете. Сооружения и эксплуатация газонефтипровод и хранилищ

Иван, помощь с обучением 4 дня назад

Вадим, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru

Кирилл 4 дня назад

Здравствуйте! Нашел у вас на сайте задачу, какая мне необходима, можно узнать стоимость?

Иван, помощь с обучением 4 дня назад

Кирилл, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru

Oleg 4 дня назад

Требуется пройти задания первый семестр Специальность: 10.02.01 Организация и технология защиты информации. Химия сдана, история тоже. Сколько это будет стоить в комплексе и попредметно и сколько на это понадобится времени?

Иван, помощь с обучением 4 дня назад

Oleg, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru

Валерия 5 дней назад

ЗДРАВСТВУЙТЕ. СКАЖИТЕ МОЖЕТЕ ЛИ ВЫ ПОМОЧЬ С ВЫПОЛНЕНИЕМ практики и ВКР по банку ВТБ. ответьте пожалуйста если можно побыстрее , а то просто уже вся на нервяке из-за этой учебы. и сколько это будет стоить?

Иван, помощь с обучением 5 дней назад

Валерия, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru

Инкогнито 5 дней назад

Здравствуйте. Нужны ответы на вопросы для экзамена. Направление - Пожарная безопасность.

Иван, помощь с обучением 5 дней назад

Здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru

Иван неделю назад

Защита дипломной дистанционно, "Синергия", Направленность (профиль) Информационные системы и технологии, Бакалавр, тема: «Автоматизация приема и анализа заявок технической поддержки

Иван, помощь с обучением неделю назад

Иван, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru

Дарья неделю назад

Необходимо написать дипломную работу на тему: «Разработка проекта внедрения CRM-системы. + презентацию (слайды) для предзащиты ВКР. Презентация должна быть в формате PDF или формате файлов PowerPoint! Институт ТГУ Росдистант. Предыдущий исполнитель написал ВКР, но работа не прошла по антиплагиату. Предыдущий исполнитель пропал и не отвечает. Есть его работа, которую нужно исправить, либо переписать с нуля.

Иван, помощь с обучением неделю назад

Дарья, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru