Разработка программ на языке Ассемблер и на языке HTML
Составление и подготовка деятельности программы для выполнения системы команд процессора. Разработка программы "Получение данных из командной строки" на языке Ассемблер, работа со строками. Cоздание HTML-документа, вставка изображений, медиафайлов.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | учебное пособие |
Язык | русский |
Дата добавления | 16.02.2016 |
Размер файла | 3,6 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Содержание
Введение
Раздел 1.Основы работы в ассемблере
1.1.Теоретическая часть
1.1.1.Основные понятия
1.1.2.Регистры ЦП
1.1.3.Команды
1.2.Практическая часть
Раздел 2.Основы HTML
2.1.Теоретическая часть
2.1.1.Работа с текстом, изображения, мультимедия
2.1.2.Работа с таблицами
2.1.3.Фреймы и формы
2.2.Практичекая часть
Заключение
Список используемой литературы
Введение
Учебная практика по МДК 01.01 “Системное программирование” и МДК 01.03 “WEB-программирование” предназначена для закрепления теоретических знаний, практических навыков и умений в разработке программ на языке Ассемблер и на языке HTML 5.0 соответственно.
Программирование - это процесс составления и подготовки деятельности программы, которое при выполнении должно привести к определённым результатам.
Машинный код - система команд конкретной вычислительной машины (процессора), которая интерпретируется непосредственно процессором. Команда, как правило, представляет собой целое число, которое записывается в регистр процессора. Процессор читает это число и выполняет операцию, которая соответствует этой команде. Язык программирования низкого уровня (низкоуровневый язык программирования) - это язык программирования, максимально приближенный к программированию в машинных кодах. В отличие от машинных кодов, в языке низкого уровня каждой команде соответствует не число, а сокращенное название команды (мнемоника). Например, команда ADD - это сокращение от слова ADDITION (сложение). Поэтому использование языка низкого уровня существенно упрощает написание и чтение программ (по сравнению с программированием в машинных кодах).
Язык ассемблера - это машинно-зависимый язык низкого уровня, в котором короткие мнемонические имена соответствуют отдельным машинным командам. Используется для представления в удобочитаемой форме программ, записанных в машинном коде.
Язык ассемблера помогает раскрыть все секреты аппаратного и программного обеспечения. С его помощью можно получить представление о том, как аппаратная часть взаимодействует с операционной системой и как прикладные программы обращаются к операционной системе. Большинство программистов работают с языками высокого уровня, где отдельное утверждение преобразовывается во множество процессорных команд. Ассемблер язык машинного уровня; каждая команда непосредственно интерпретируется в машинный код, что дает основание считать его языком низкого уровня. Наиболее часто язык ассемблера используется для написания дополнений к операционной системе или для написания программ прямого доступа к аппаратуре. Он необходим также при оптимизации критических блоков в прикладных программах с целью повышения их быстродействия.
HTML (от англ. HyperTextMarkupLanguage - «язык гипертекстовой разметки») - стандартный язык разметки документов во Всемирной паутине. Большинство веб-страниц содержат описание разметки на языке HTML (или XHTML). Язык HTML интерпретируется браузерами; полученный в результате интерпретации форматированный текст отображается на экране монитора компьютера или мобильного устройства.
HTML - теговый язык разметки документов. Любой документ на языке HTML представляет собой набор элементов, причём начало и конец каждого элемента обозначается специальными пометками - тегами. Элементы могут быть пустыми, то есть не содержащими никакого текста и других данных (например, тег перевода строки<br>). В этом случае обычно не указывается закрывающий тег. Кроме того, элементы могут иметь атрибуты, определяющие какие-либо их свойства (например, размер шрифта для элемента font). Атрибуты указываются в открывающем теге.
Web-страницы - это документы в формате HTML, содержащие текст и специальные тэги (дескрипторы) HTML. По большому счету тэги HTML необходимы для форматирования текста (т.е. придания ему нужного вида), который "понимает" браузер. Документы HTML хранятся в виде файлов с расширением .htm или .html.
Раздел 1. Основы работы в ассемблере
1.1Теоретическая часть
1.1.1 Основные понятия
Ассемблер -- транслятор исходного текста программы, написанной на языке ассемблера, в программу на машинном языке.
Как и сам язык, ассемблеры, как правило, специфичны для конкретной архитектуры, операционной системы и варианта синтаксиса языка. Вместе с тем существуют мультиплатформенные или вовсе универсальные (точнее, ограниченно-универсальные, потому что на языке низкого уровня нельзя написать аппаратно-независимые программы) ассемблеры, которые могут работать на разных платформах и операционных системах. Среди последних можно также выделить группу кросс-ассемблеров, способных собирать машинный код и исполняемые модули (файлы) для других архитектур и ОС.
Ассемблирование может быть не первым и не последним этапом на пути получения исполнимого модуля программы. Так, многие компиляторы с языков программирования высокого уровня выдают результат в виде программы на языке ассемблера, которую в дальнейшем обрабатывает ассемблер. Также результатом ассемблирования может быть не исполнимый, а объектный модуль, содержащий разрозненные блоки машинного кода и данных программы, из которого (или из нескольких объектных модулей) в дальнейшем с помощью редактора связей может быть получен исполнительный файл.
Переносимые ассемблеры
Также существует открытый проект ассемблера, версии которого доступны под различные операционные системы, и который позволяет получать объектные файлы для этих систем. Называется этот ассемблер NASM (Netwide Assembler).
YASM -- это переписанная с нуля версия NASM под лицензией BSD (с некоторыми исключениями).
Flat asembler (fasm) -- молодой ассемблер под модифицированной для запрета перелицензирования (в том числе под GNU GPL BSD-лицензией. Есть версии для KolibriOS,Linux,DOS и Windows; использует Intel-синтаксиз и поддерживает инструкции x86-64.
1.1.2 Регистры ЦП
Для выполнения арифметических действий, пересылки данных и адресации, компьютер имеет ряд регистров. Регистр - это область памяти для временного хранения данных. По назначению различают:
Аккумуляторы - хранение промежуточных результатов арифметических и логических операций, инструкций ввода-вывода.
Флаговые - хранение признаков результатов арифметических и логических операций.
Общего назначения - хранение операндов арифметических и логических выражений, индексы, адреса.
Индексные - индексы исходящих и целевых элементов массива.
Указательные - указатели на специальные области памяти, указатели текущей операции, указатели базы, указатели стека.
Сегментные - адреса и селекторы сегментов памяти.
Управляющие - информация управляющая состоянием процессора, адреса системных таблиц.
Регистры общего назначения
ЕАХ (Accumulator) - хранение промежуточных данных
EBX (Base) - хранение базового адреса
ECX (Counter) - регистр-счетчик применяется в командах, производящих некоторые повторяющееся действия, его использование зачастую не явно - скрыто в алгоритме работы команды.
EDX (Data)-хранение промежуточных данных. Данные Регистры являются 32-разрядными и делятся на две части по 16 бит, старшая часть - не доступна, а младшая тоже делится на две части по 8 бит.
Регистры указатели
ESI и EDI-индексы источника и приемника, используются при обработке длинных полей.
EBP и ESP-указатели базы и вершины, используются при работе со стеком. Эти регистры также 32-разрядные и имеют младшие 16-ти разрядные части SI, DI, BP, SP соответственно.
Сегментные регистры
Структура программы разделена на блоки - сегменты, выделяют следующие типы сегментов:
Сегмент кода содержит команды программы, адрес сегмента кода с которым в настоящий момент работает программа располагается в сегментном регистре сs.
Сегмент данных содержит данные, которыми оперирует программа. Программа одновременно может работать с несколькими сегментами данных. Адрес основного сегмента данных располагается в регистре ds, а дополнительных -- в es, gs, fs.
Сегмент стека - специальная область памяти, ее адрес располагаться в регистре ss.
Сегментные регистры являются 16-разрядными.
Регистр указателя инструкций
EIP-32
IP-16
Содержит смещение следующей подлежащей выполнению команды относительно начала сегмента кода. После выполнения команды меняется автоматически.
Полный адрес команды формирует пара регистров CS:IP
Регистр флагов
EFLAGS-32
FLAGS-16
Биты этих регистров называются флагами.
Различают флаги состояния, управляющие, системные и зарезервированные флаги.
Флаг переноса CF
(Carry Flag) идентифицирует перенос или заем при выполнении арифметических операций, а также служит индикатором ошибки при обращении к системным функциям.
Флаг паритета PF
(Parity Flag) устанавливается в 1, если младшие 8 бит результата операции содержат четное число двоичных единиц.
Флаг вспомогательного переноса AF
(Auxiliary Flag) используется в операциях над упакованными двоично-десятичными числами.
Он идентифицирует перенос или заем из старшей тетрады (бита 4).
Флаг нуля ZF
(ZeroFlag) устанавливается в 1, если результат операции равен нулю.
Флаг знака SF
(SignFlag) показывает знак результата операции, устанавливаясь в 1 при отрицательном результате.
Флаг переполнения OF
(OverflowFlag) фиксирует переполнение,т.е. выход результата операции за пределы допустимого для данного процессора диапазона значений.Флаги состояния автоматически устанавливаются процессором после выполнения каждой команды.
Управляющий флаг трассировки TF
(TraceFlag) используется в отладчиках для осуществления пошагового выполнения программы. Если TF = 1, то после выполнения каждой команды процессор реализует процедуру прерывания 1 (через вектор прерывания с номером 1).
Управляющий флаг разрешения прерываний IF
(InterruptFlag) разрешает (если равен 1) или запрещает (если равен 0) процессору реагировать на прерывания от внешних устройств.
Управляющий флаг направления DF
(DirectionFlag) используется особой группой команд, предназначенных для обработки строк.Если DF = 0, строка обрабатывается в прямом направлении, от меньших адресов к большим; если DF = 1, обработка строки идет в обратном направлении.
1.1.3 Команды
Команды пересылки данных. Команды пересылки данных осуществляют обмен данными и адресами между ячейками памяти и регистрами или портами ввода-вывода.
Эти команды разделены на четыре группы:
команды общего назначения,
команды ввода-вывода,
команды пересылки адресов
и команды пересылки флагов.
Основная команда общего назначения MOV (MOVe - переслать) может переслать байт или слово между регистром и ячейкой памяти или между двумя регистрами. Она может также переслать непосредственно адресуемое значение в регистр или ячейку памяти.
Команда MOV имеет следующий формат: MOV приемник, источник.
Команды работы со стеком. Для временного сохранения данных (содержимого регистра или ячейки памяти) удобно использовать стек.
Для работы со стеком есть две команды
PUSH (поместить слово в стек) и POP (извлечь слово из стека). Команда PUSH помещает содержимое регистра или ячейки памяти размером в слово на вершину стека. Команда POP, наоборот, снимает слово с вершины стека и помещает его в регистр или ячейку памяти.
Команды PUSH и POP имеют следующие форматы:
PUSH источник
POP приемник
Будучи взаимно обратными командами, PUSH и POP обычно используются парами, т.е. каждой команде PUSH в программе должна соответствовать команда POP.
Вершина стека - это ячейка в сегменте стека, адрес которой содержится в указателе стека SP.
Регистр SP всегда указывает на слово, помещенное в стек последним.
Следовательно, команда PUSH вычитает 2 из значения указателя стека, а затем пересылает операнд-источник в стек.
Команды ввода-вывода. Команды ввода-вывода используются для взаимодействия с периферийными устройствами системы.
Они имеют формат:
IN аккумулятор,порт OUT порт, аккумулятор
Где аккумулятор - регистр AL при обмене байтами или регистр AX при обмене словами. Операндом порт может быть десятичное число от 0 до 255, что позволяет адресоваться к 256 устройствам.
Команды пересылки адреса. Команды пересылки адреса передает не содержимое переменных, а их адреса.
Команда LEA (load effective address - загрузить эффективный адрес) пересылает смещение ячейки памяти в любой 16-битовый регистр общего назначения, регистр указателя или индексный регистр.
Она имеет формат: LEA регистр16,память16
Где операнд память16 должен иметь атрибут WORD.
Сложение и вычитание. Для сложения и вычитания используются инструкции ADD и SUB. ADD прибавляет содержимое операнда- источника (правый) к содержимому операнда приемнике и сохраняет результат в операнде приемнике.
SUB работает так же, за исключением того, что он вычитает операнд источника из операнда приемника.
Команды приращения и уменьшения приемника на единицу
Когда ассемблерной программе требуется производить сложение, хорошо, если добавляемое значение это 1.
Это называется инкремент
Аналогично, когда значение 1 вычитается из регистра или переменной это называется декремент.
Для таких операций, как изменение счетчика цикла или изменение регистра указателя при просмотре памяти, Вы используете инкремент и декремент.
В соответствии с частым использованием инкремента и декремента ассемблер предоставляет инструкции INC и DEC.
Как можно, ожидать INC прибавляет к регистру или переменной 1 и DEC вычитает 1 из регистра или переменной.
Умножение и деление
Инструкция MUL умножает два 8 или 16-битных беззнаковых сомножителя, генерируя 16 или 32- битное число.
Один из сомножителей при умножении 8-битовых чисел должен быть запомнен в AL; другой может быть в любом 8-битном регистре общего назначения или быть операндом памяти. MUL всегда сохраняет 16 битный результат в AX. Например, MOVAL,25 MOV DH,40 MUL DH ... умножает AL на DH, сохраняя результат 1000 в AХ.
Заметим, что MUL требует только один операнд; другой сомножитель всегда в AL (или в AX в случае умножения слов).
При умножении слов один сомножитель должен быть сохранен в AX, в то время как другой может быть любым 16-битным регистром общего назначения или операндом памяти. MUL помещает 32-битный результат в DX:AX с младшими 16 битами результата в AX и старшими 16 битами результата в DX.
Команда DIV (divide - разделить) выполняет деление чисел без знака, а команда IDIV выполняет деление чисел со знаком.
Команды имеют формат DIV источник IDIV источник
Где источник делитель размеров в байт или слово, находящееся в регистре общего назначения или в ячейке памяти.
Делимое должно иметь двойной размер; оно извлекается из регистра AX (при делении на 8-битовое число) или из регистров DX и AX при делении на 16-битовое число).
Результат возвращается следующим образом: Если операнд-источник представляет собой байт, то частное возвращается в регистр AL, а остаток в AH.
Если операнд-источник слово, то частное возвращается в AX, а остаток - в регистр DX.
Изменение знака
Инструкции NEG может изменить знак содержимого регистра общего назначения или переменной.
Логические операции
Ассемблер поддерживает полный набор инструкций, которые производят логические операции, включая END, OR, XOR и NOT.
AND устанавливая каждый бит в назначении в 1 только тогда, когда соответствующие биты источников - 1
Инструкция OR устанавливая каждый бит в назначении в 1 если хотя бы 1 соответствующий исходный бит установлен в 1. OR позволяет Вам устанавливать исходный бит(ы) в 1.
Инструкция устанавливая каждый бит назначения в 1, только если 1 из соответствующих битов источника был 0, а другой 1
Сдвиги и циклические сдвиги
Микропроцессор Intel обеспечивает ряд способов для передвижения битов в регистре или переменной памяти вправо или влево.
Простейший из них - логический сдвиг. SHL (сдвиг влево, так же известный как SAL) передвигает каждый бит в назначении на 1 разряд влево или в направлении к старшему значащему биту.
Умножение при помощи сдвига много быстрее, чем использование инструкции MUL.
SHR (сдвиг вправо) во многом подобен SHL: он сдвигает биты операнда вправо, либо на 1, либо на CL бит, при этом младший значащий бит сдвигается во флаг переноса, а старший значащий бит устанавливается в 0.
SHR - это быстрый способ беззнакового деления на 2.
SAR - арифметический сдвиг вправо, такой же как SHR, за исключением того, что в SAR старший значащий бит операнда сдвигается вправо на следующий бит и затем возвращается в самого себя.
Работа со строками. В ассемблере под строкой понимается последовательность соседних байтов или слов. В связи с этим все строковые команды имеют две разновидности - для работы со строками из байтов (в мнемонику операций входит буква B) и для работы со строками из слов (в мнемонику входит W).
Имеются следующие операции над строками:
пересылка элементов строк (в память, из памяти, память-память);
сравнение двух строк;
просмотр строки с целью поиска элемента, равного заданному.
Каждая из этих операций выполняется только над одним элементом строки, однако, одновременно происходит автоматическая настройка на следующий или предыдущий элемент строки.
Имеются специальные команды повторения (REP и др.), которые заставляют следующую за ними строковую команду многократно повторяться (до 216 раз), в связи с чем, такая пара команд позволяет обработать всю строку, причем намного быстрее, чем запрограммированный цикл.
Команда Lea
LEA SI,<начальный/конечный адрес строки> Если же надо загрузить сразу оба регистра DS и SI, тогда можно воспользоваться командой LDS SI,m32 которая в регистр SI заносит первое слово, а в регистр DS - второе слово из двойного слова, имеющего адреc m32 (таким образом, по адресу m32+2 должен храниться сегмент, а по адресу m32 - смещение начального или конечного элемента строки). Начальную загрузку регистров ES и DI обычно осуществляют одной командой LES DI,m32 которая действует аналогично команде LDS. Перечислим вкратце строковые команды ассемблера.
Команда загрузки элемента строки в аккумулятор (LODSB или LODSW) пересылает в регистр AL или AX очередной элемент строки, на который указывает пара DS:SI, после чего увеличивает (при DF=0) или уменьшает (при DF=1) регистр SI на 1 или 2. Команда записи аккумулятора в строку (STOSB или STOSW) заносит содержимое регистра AL или AX в тот элемент строки, на который указывает пара ES:DI, после чего изменяет регистр DI на 1 или 2.
Команда пересылки строк (MOVSB или MOVSW) считывает элемент первой строки, определяемый парой DS:SI, в элемент второй строки, определяемый парой ES:DI, после чего одновременно меняет регистры SI и DI.
Команда сравнения строк (CMPSB или CMPSW) сравнивает очередные элементы строк, указываемые парами DS:SI и ES:DI, и результат сравнения (равно, меньше и т.п.) фиксирует в флагах, после чего меняет регистры SI и DI.
Команда сканирования строки (SCASB или SCASW) сравнивает элемент строки, адрес которого задается парой ES:DI, со значением регистра AL или AX и результат сравнения фиксирует в флагах, после чего меняет содержимое регистра DI.
Перед любой строковой командой можно поставить одну из двух команд, называемых "префиксами повторения", которая заставит многократно повториться эту строковую команду.
Команды переходов
В систему команд ассемблера входит обычный набор команд перехода: безусловные и условные переходы, переходы с возвратами и др.
По способу изменения счетчика команд переходы делятся на абсолютные и относительные. Если в команде перехода указан адрес (смещение) той команды, которой надо передать управление, то это абсолютный переход.
Однако в команде может быть указана величина (сдвиг), которую надо добавить к текущему значению регистра IP, чтобы получился адрес перехода, и тогда это будет относительный переход при этом сдвиг может быть положительным и отрицательным, так что возможен переход вперед и назад.
По величине сдвига относительные переходы делятся на короткие (сдвиг задается байтом) и длинные (сдвиг - слово).
Абсолютные же переходы делятся на прямые и косвенные:
при прямом переходе адрес перехода задается в самой команде, а при косвенном - в команде указывается регистр или ячейка памяти, в котором (которой) находится адрес перехода
JMP но в зависимости от типа операнда, ассемблер формирует разные машинные команды. 1) Внутрисегментный относительный короткий переход.
Циклы
Цикл это ничего более, чем блок кода, который заканчивается условным переходом так, что этот код может выполняться постоянно, до тех пор, пока не выполнится условие окончания. Циклы используются для обработки массивов, проверки статуса портов ввода-вывода, пока не будет достигнуто определенное состояние, очистки блоков памяти, чтения строк с клавиатуры, вывода строк на экран и т.п. Поэтому они часто используются, и Ассемблер предоставляет несколько специальных инструкций для циклов: LOOP, LOOPE, LOOPNE и JCXZ.
Когда Вам нужен цикл, который повторяется до тех пор, пока счетчик не достигнет нуля, загрузите счетчик в CX и используйте инструкцию LOOP.
Процедуры в языке ассемблера команде CALL, когда надо вызвать процедуру. Это же имя должно быть повторено в директиве ENDP, заканчивающей описание процедуры.
Предложения между этими двумя директивами образуют тело процедуры (подпрограмму).
Имя процедуры является фактически меткой первой из команд тела, поэтому данную команду не надо специально метить
Прерывания INT
Команда INT прерывает обработку программы, передает управление в DOS или BIOS для определенного действия и затем возвращает управление в прерванную программу для продолжения обработки.
Наиболее часто прерывание используется для выполнения операций ввода или вывода.
Формат команды INT тип_прерывания
Для выхода из программы на обработку прерывания и для последующего возврата команда INT выполняет следующие действия:
- уменьшает указатель стека на 2 и заносит в вершину стека содержимое флагового регистра;
- очищает флаги TF и IF;
- уменьшает указатель стека на 2 и заносит содержимое регистра CS в стек;
- уменьшает указатель стека на 2 и заносит в стек значение командного указателя;
- вычисляет адрес вектора прерывания, умножая тип_прерывания на 4; загружает второе слово вектора прерываний в регистр CS;
- загружает в IP первое слово вектора прерывания;
- обеспечивает выполнение необходимых действий;
- восстанавливает из стека значение регистра и возвращает управление в прерванную программу на команду, следующую после INT.
1.2 Практическая часть
Лабораторная работа 1
Тема: Регистры, памяти и логическая адресация
Задание: Написать программу “Получение данных из командной строки” на языке Ассемблер
1) Запустил программу MASM32 Editor
2) Написал текст исходного кода
.486
.model flat, stdcall
optioncasemap: none
include/masm32/include/windows.inc
include/masm32/include/user32.inc
include/masm32/include/kernel32.inc
includelib/masm32/lib/user32.lib
includelib/masm32/lib/kernel32.lib
include/masm32/macros/macros.asm
uselib masm32, comctl32, ws2_32
.data
.code
start:
callGetCommandLine
push 0
pushchr$("Command Line")
pusheax
push 0
callMessageBox
push 0
callExitProcess
endstart
3) Выполнил отладку программы командой project-run program
4) Создал exe-файл
5) Запустил программу OllyDbg. Просмотрел код
Лабораторная работа 2
Тема: Передача параметров через стек
Задание 1: Передача параметров через стек, возврат результата через регистр EAX
1) Запустил программу MASM32 Editor
2) Написал текст исходного кода
.686
.model flat, c
optioncasemap: none
include\masm32\include\windows.inc
include\masm32\include\kernel32.inc
includelib\masm32\lib\kernel32.lib
.data
add 76
b dd-8
ddd ?
.code
program:
push b
push a
call Procedure
add esp,8
movd,eax
push 0
Procedure proc
moveax,[esp+4]
movedx,[esp+8]
subeax,edx
ret
Procedureendp
endprogram
3) Выполнил отладку программы командой project-run program
4) Создал exe-файл
5) Запустил программу OllyDbg. Просмотрел код
Задание 2: Передача параметров через стек, возврат результат по адресу
1) Запустил программу MASM32 Editor
2) Написал текст исходного кода
.486
.model flat, stdcall
optioncasemap:none
include/masm32/include/windows.inc
include/masm32/include/kernel32.inc
includelib/masm32/lib/kernel32.lib
.data
add 76
b dd-8
ddd ?
.code
program:
push offset d
push b
push a
call Procedure
addesp, 8
movd,eax
push 0
Procedure proc
moveax,[esp+4]
movedx,[esp+8]
subeax,edx
movedx,[esp+12]
mov [edx],eax
ret
Procedure endp
endprogram
3) Выполнил отладку программы командой project-run program
4) Создал exe-файл
5) Запустил программу OllyDbg. Просмотрел код
Лабораторная работа 3
Тема: Команды обработки данных на языке Ассемблер
Задание: Сложение двух чисел
1) Запустил программу MASM32 Editor
2) Написал текст исходного кода
.486
.model flat, stdcall
optioncasemap:none
include/masm32/include/windows.inc
include/masm32/include/user32.inc
include/masm32/include/kernel32.inc
includelib/masm32/lib/user32.lib
includelib/masm32/lib/kernel32.lib
include/masm32/macros/macros.asm
uselib masm32,comctl32,ws2_32
.data
.code
start:
moveax, 123
movebx, -90
addeax, ebx
testeax, eax
jz zero
invoke MessageBox,0, chr$("Вeaxне 0!"), chr$("info"), 0
jmplexit
zero:
invokeMessageBox, 0, chr$("Вeax 0!"), chr$("info"), 0
lexit:
invokeExitProcess, 0
endstart
3) Выполнил отладку программы командой project-run program
4)Создал exe-файл
5)Запустил программу OllyDbg. Просмотрел код
Лабораторная работа 4
Тема: Применение команд цикла на языке Ассемблер
Задание 1:Организация цикла.Repeat
1) Запустил программу MASM32 Editor
2) Написал текст исходного кода
.486
.model flat, stdcall
optioncasemap:none
include/masm32/include/windows.inc
include/masm32/include/user32.inc
include/masm32/include/kernel32.inc
includelib/masm32/lib/user32.lib
includelib/masm32/lib/kernel32.lib
include/masm32/macros/macros.asm
uselib masm32,comctl32,ws2_32
.data
msg_titledb "Title",0
A DB 1h
bufferdb 128 dup(?)
formatdb "%d",0
.code
start:
mov AL, A
.REPEAT
inc AL
.UNTIL AL==7
invokewsprintf, addr buffer, addr format, AL
invokeMessageBox, 0, addr buffer, addrmsg_title, MB_OK
invokeExitProcess, 0
endstart
3) Выполнил отладку программы командой project-run program
4) Создал exe-файл
5) Запустил программу OllyDbg. Просмотрел код
Задание 2: Организация цикла While
1) Запустил программу MASM32 Editor
2) Написал текст исходного кода
.486
.model flat, stdcall
optioncasemap:none
include/masm32/include/windows.inc
include/masm32/include/user32.inc
include/masm32/include/kernel32.inc
includelib/masm32/lib/user32.lib
includelib/masm32/lib/kernel32.lib
include/masm32/macros/macros.asm
uselib masm32,comctl32,ws2_32
.data
msg_titledb "Title",0
A DB 1h
bufferdb 128 dup(?)
formatdb "%d",0
.code
start:
moveax, 1
movedx, 1
.WHILE edx==1
inceax
.IF eax==7
.BREAK
.ENDIF
.ENDW
invokewsprintf, addr buffer, addr format, AL
invokeMessageBox, 0, addr buffer, addrmsg_title, MB_OK
invokeExitProcess, 0
endstart
3) Выполнил отладку программы командой project-run program
4) Создал exe-файл
5) Запустил программу OllyDbg. Просмотрел код
Лабораторная работа 5
Тема: Программирование действий с массивами данных на языке Ассемблер
Задание: Сумма всех элементов массива
1) Запустил программу MASM32 Editor
2) Написал текст исходного кода
.486
.model flat, stdcall
option casemap:none
include/masm32/include/windows.inc
include/masm32/include/user32.inc
include/masm32/include/kernel32.inc
includelib/masm32/lib/user32.lib
includelib/masm32/lib/kernel32.lib
include/masm32/macros/macros.asm
uselib masm32,comctl32,ws2_32
.data
msg_title db "Title",0
A DB 1h
x dd 0,1,2,3,4,5,6,7,8,9,10,11
n dd 12
buffer db 128 dup(?)
format db "%d", 0
.code
start:
mov eax, 0
mov ecx, n
mov edx, 0
L:add eax, x[ebx]
add ebx, type x
dec ecx
cmp ecx, 0
jne L
invoke wsprintf, addr buffer, addr format, AL
invoke MessageBox, 0, addr buffer, addr msg_title, MB_OK
invoke ExitProcess, 0
end start
3) Выполнил отладку программы командой project-run program
4) Создал exe-файл
5) Запустил программу OllyDbg. Просмотрел код
Лабораторная работа 6
Тема: Особенности работы с процедурами на языке Ассемблер
Задание 1: Передача параметров и возврат из процедуры с использованием соглашения о вызовах stdcall
1) Запустил программу MASM32 Editor
2) Написал текст исходного кода
.686
.model flat, stdcall
option casemap:none
include/masm32/include/windows.inc
include/masm32/include/kernel32.inc
includelib/masm32/lib/kernel32.lib
.data
x dd 0
y dd 4
.code
program:
push y
push x
call Procedure
push 0
call ExitProcess
Procedure proc
ret 8
Procedure endp
end program
3) Выполнил отладку программы командой project-run program
4) Создал exe-файл
5) Запустил программу OllyDbg. Просмотрел код
Задание 2: Передача параметров и возврат из процедуры с использованием соглашения о вызовах cdecl
1) Запустил программу MASM32 Editor
2) Написал текст исходного кода
.686
.model flat, с
option casemap:none
include/masm32/include/windows.inc
include/masm32/include/kernel32.inc
includelib/masm32/lib/kernel32.lib
.data
x dd 0
y dd 0
.code
program:
push y
push x
call Procedure
add esp, 8
push 0
Procedure proc
ret
Procedure endp
end program
3) Выполнил отладку программы командой project-run program
4) Создал exe-файл
5) Запустил программу OllyDbg. Просмотрел код
Задание 3: Рекурсивная процедура вычисления факториала целого беззнакового числа. Процедура получает параметр через стек и возвращает результат через регистр EAX
1) Запустил программу MASM32 Editor
2) Написал текст исходного кода
.686
.model flat, c
option casemap:none
include/masm32/include/windows.inc
include/masm32/include/kernel32.inc
includelib/masm32/lib/kernel32.lib
.data
a dd 76
b dd -8
d dd ?
.code
program:
push offset d
push b
push a
call factorial
add esp, 8
mov d, eax
push 0
factorial proc
mov eax,[esp+4]
test eax,eax
jz L1
dec eax
push eax
call factorial
add esp,4
mul dword ptr[esp+4]
jmp L2
L1:inc eax
L2:ret
factorial endp
end program
3) Выполнил отладку программы командой project-run program
4) Создал exe-файл
5) Запустил программу OllyDbg. Просмотрел код
Лабораторная работа 7
Тема: Работа со строками в языке Ассемблер
Задание: Расчет формулы на Ассемблере
1) Запустил программу MASM32 Editor
2) Написал текст исходного кода
.486
.model flat, stdcall
option casemap:none
include/masm32/include/windows.inc
include/masm32/include/user32.inc
include/masm32/include/kernel32.inc
includelib/masm32/lib/user32.lib
includelib/masm32/lib/kernel32.lib
include/masm32/macros/macros.asm
uselib masm32,comctl32,ws2_32
.data
msg_title db "Title", 0
A DB 1h
x dd 0,1,2,3,4,5,6,7,8,9,10,11
n dd 12
buffer db 128 dup(?)
format db "%d", 0
.code
start:
mov eax, 0
mov ecx, n
add edx, 0
L:add eax, x[ebx]
add ebx, type x
dec ecx
cmp ec[, 0
jne L
invoke wsprintf, addr buffer, addr format, AL
invoke MessageBox, 0, addr buffer, addr msg_title, MB_OK
invoke ExitProcess, 0
end start
3) Выполнил отладку программы командой project-run program
4) Создал exe-файл
5) Запустил программу OllyDbg. Просмотрел код
программа ассемблер строка документ медиафайл
Раздел 2. Основы HTML
2.1 Теоретическая часть
2.1.1 Работа с текстом, изображения, мультимедия
Теги заголовков - <H1>,<H2>,<H3>,<H4>,<H5>,<H6>
Всего 6 видов заголовков - от H1 до H6. Тегу H1 соответствует самый большой заголовок, тегу H6 - самый маленький. Закрывающий тег обязателен.
Атрибуты:
Align - выравнивает заголовок в соответствии со следующими значениями:
center - по центру.
left - по левому краю.
right -по правому краю.
title - всплывающая подсказка.
Тег <p> создает новый параграф.
Атрибуты:
Align - выравнивает параграф относительно одной из сторон документа
left - выравнивание по правому краю (по умолчанию)
right - выравнивание по правому краю
center - выравнивание по центру
justify - выравнивание по ширине
title - всплывающая подсказка
Контейнер <b> </b> выделяет текст жирным шрифтом.
Аналогичный тег - <strong> </strong>, он тоже выделяет текст жирным. Но его не рекомендуется использовать больше 1-2 раз на странице - при большом количестве тегов <strong> на странице поисковые системы могут воспринять это как спам.
Атрибуты:
title - Всплывающая подсказка.
Тег <hr> добавляет в документ горизонтальную линию.
Закрывающий тег не обязателен.
Атрибуты:
size - устанавливает толщину линии
width - устанавливает ширину линии в пикселах или процентах
noshade - создает линию без тени
color - Задает линии определенный цвет
<hr noshade="noshade" width="80%" color="#00FF33" />
Тег <br /> переводит текст на новую строку.
Закрывающий тег не обязателен.
Очень длинный текст, который нужно разбить на две строки.
Очень длинный текст, но уже разбитый на две строки вставкой тега <br /> после слова "текст,"
Контейнер <nobr> </nobr> запрещает перевод строки.
Текст, заключенный между тэгами , будет в одну строку без переноса на другую. Если строка не уместится на экране, то для ее просмотра появится полоса прокрутки.
Очень длинный текст, который не переносится на две строки и заключен в контейнер <nobr> </nobr>.
Контейнер <sub> </sub> делает подиндекс.
Контейнер <sup> </sup> делает надиндекс.
Контейнер <big> </big> выводит более крупный, чем окружающий текст.
Контейнер <i> </i> выделяет текст курсивом.
Вместо него рекомендован Контейнер <em> </em>.
Контейнер <em> </em> выделяет текст курсивом.
Рекомендован вместо контейнера <i> </i>.
Тег <s> делает текст зачеркнутым.
Закрывающий тэг </s> обязателен. Не рекомендован для использования.
Тег <tt> выделяет текст моноширинным шрифтом.
Закрывающий тэг </tt> обязателен.
Вместо него рекомендован контейнер <kbd> </kbd>.
Тег <kbd> выделяет текст моноширинным шрифтом.
Закрывающий тэг </kbd> обязателен.
Контейнер <u> </u> делает текст подчеркнутым.
Тег <font> определяет цвет, размер и выводимый шрифт.
Закрывающий тег </font> обязателен.
color - определяет цвет текста.
face - определяет гарнитуру шрифта.
size - определяет размер текста в пределах от 1 до 7, где 1 - самый мелкий шрифт. По умолчанию равен 3.
<font color="#0000CC" face="Verdana" size="5"></font>.
<font color="#CA0000" face="Times New Roman" size="2"></font>.
Тег <pre> предварительно отформатированный текст.
Преформатированный текст отображается моношириным шрифтом.
<pre>предварительно отформатированный текст, с сохранением последовательно поставленных пробелов.</pre>
Тег <marquee> заставляет текст перемещаться из стороны в сторону.
Закрывающий тег </marquee> обязателен.
Атрибуты:
behavior - определяет вид движения.
alternate - колебательные движения налево и направо.
scroll - перемещение текста в направлении, указанном в direction. Достигнув края экрана, надпись появляется снова с противоположной стороны.
Slide - схоже с scroll, но текст перемещается только один раз и останавливается.
direction - Определяет направление движения.
down - движение вниз.
left - движение справа налево (по умолчанию).
right - движение слева направо.
up - Движение вверх.
Тег <q> предназначен для включения в документ короткой цитаты.
Закрывающий тег </q> обязателен.
Тег <blockquote> предназначен для включения в документ длинной цитаты.
Закрывающий тег </blockquote> обязателен. Тег <blockquote> создает отступы с обеих сторон и отделяется от остального текста пустыми строками.
Какой-то текст,
здесь цитата
и текст продолжается.
Контейнер <address> </address> применяют для указания сведений об авторе.
Сюда же обычно помещаются и сведения об авторских правах, а также дата создания и последней модификации документа.Текст обычно отображается курсивом. .
Тег <cite> используется для цитат.
Контейнер <code> </code> применяют для выделения программного кода
Изображения в HTML.В HTML изображения вставляются с помощью тега img. Тег img-- пустой, он содержит атрибуты и у него нет закрывающего тега. Для отображения изображения на странице используется атрибут src.Src появилось от source, что означает Источник. Значением атрибута src является url-адрес изображения.Строка выше означает, что изображение находится в той же директории (папке), что и сам html-файл, ссылающийся на данное изображение. Допустим, у Вас есть папка html, в которой содержится index.html с указанным выше кодом и само изображение с названием image.jpg.
В таком случае при открытии index.html в браузере Вы увидите данное изображение. Если же оно у Вас где-либо в другом месте (на папку выше или ниже), то вместо этого у Вас отобразится либо белое поле, либо небольшой прямоугольник с красным крестиком (не удалось загрузить изображение). Изображения не всегда находятся в той же директории (папке), что и сам файл, поэтому прописывание путей конкретнее будет описано чуть позже.
Атрибуты тега imgПомимо src у тега img есть и другие атрибуты, которые отвечают за размеры отображаемого изображения, подпись к нему и прочее.
src - адрес изображения width- ширина изображения height- высота изображения title- подпись, которая высвечивается при наведении на изображение alt- альтернативный текст. Нужен для поискового робота и индексации изображенийborder- толщина границы изображения. 0 - нет границы, 1 - самая тонкая граница и тд
Адрес вставленного изображения (примеры)Как правило, изображения хранятся не в той же папке, что и сам html-файл. Для этого в той же директории создаётся папка images(или img, тут на вкус и цвет). А в неё уже кладутся все нужные изображения. В случае с отдельным хранением нужно будет прописывать для атрибута src уже другой адрес. Можно также вставить изображение вообще с другого сайта, при этом, не загружая его к себе в папку. Для этого у Вас должно быть стабильное подключение к интернету и примерно следующий код, в котором в адресе Вы прописываете адрес изображения в интернете:
Фоновое изображение в HTML В качестве фонового изображения могут выступать файлы с расширениями gif, jpg, jpeg и png. В том случае, если размер изображения меньше окна браузера, то изображение будет автоматически дальше заполнять оставшийся фон. В body используем атрибут background, в котором прописываем путь к изображению
2.1.2 Работа с таблицами
Описание таблиц должно располагаться внутри раздела документа <BODY>. Документ может содержать произвольное число таблиц, причем допускается вложенность таблиц друг в друга. Каждая таблица должна начинаться тэгом <TABLE> и завершаться тэгом </TABLE>. Внутри этой пары тегов располагается описание содержимого таблицы. Любая таблица состоит из одной или нескольких строк, в каждой из которых задаются данные для отдельных ячеек.
Каждая строка начинается тэгом <TR> (Table Row) и завершается тэгом </TR>. Отдельная ячейка в строке обрамляется парой тегов <TD> и </TD> (Table Data) или <TH> и </TH> (Table Header). Тег <TH> используется обычно для ячеек-заголовков таблицы, а <TD> -- для ячеек-данных. Различие в использовании заключается лишь в типе шрифта, используемого по умолчанию для отображения содержимого ячеек, а также расположению данных внутри ячейки. Содержимое ячеек типа <TH> отображается полужирным (Bold) шрифтом и располагается по центру (ALIGN=CENTER, VALIGN = MIDDLE). Ячейки, определенные тэгом <TD> по умолчанию отображают данные, выровненные влево (ALIGN = LEFT) и посередине (VALIGN=MIDDLE) в вертикальном направлении.
Тэги <TD> и <TH> не могут появляться вне описания строки таблицы <TR>. Завершающие коды </TR>, </TD> и </TH> могут быть опущены. В этом случае концом описания строки или ячейки является начало следующей строки или ячейки, или конец таблицы. Завершающий тег таблицы </TABLE> не может быть опущен.
Количество строк в таблице определяется числом открывающих тегов <TR>, а количество столбцов -- максимальным количеством <TD> или <TH> среди всех строк. Часть ячеек могут не содержать никаких данных, такие ячейки описываются парой следующих подряд тегов -- <TD>, </TD>. Если одна или несколько ячеек, располагающихся в конце какой-либо строки, не содержат данных, то их описание может быть опущено, а браузер автоматически добавит требуемое количество пустых ячеек. Отсюда следует, что построение таблиц, в которых в разных строчках располагается различное количество столбцов одного и того же размера, не разрешается.
Таблица может иметь заголовок, который заключается в пару тегов <CAPTION> и </CAPTION>. Описание заголовка таблицы должно располагаться внутри тегов <TABLE> и </TABLE> в любом месте, однако вне области описания любого из тегов <TD>, <TH> или <TR>. Согласно спецификации языка HTML расположение описания заголовка регламентировано более строго: оно должно располагаться сразу же после тега <TABLE> и до первого <TR>. Мы рекомендуем придерживаться этого правила.
По умолчанию текст заголовка таблицы располагается над ней (ALIGN=TOP) и центрируется в горизонтальном направлении.
Перечисленные теги могут иметь параметры, число и значения которых различны. Однако в простейшем случае теги используются без параметров, которые принимают значения по умолчанию.
Этих сведений вполне достаточно для построения элементарных таблиц. Приведем пример простейшей таблицы, состоящей из двух строк и двух столбцов, отображение которой показано на рис. 4.3.
Заголовок таблицы <CAPTION>
Тэг заголовка таблицы <CAPTION> имеет единственный допустимый параметр ALIGN, принимающий значения ТОР (заголовок над таблицей) или BOTTOM (заголовок под таблицей). Параметр ALIGN может быть опущен, что соответствует значению ALIGN=TOP. В горизонтальном направлении заголовок таблицы всегда располагается по ее центру. Таблица может не иметь заголовка. В качестве заголовка таблицы в большинстве случаев используется простой текст, что регламентируется спецификацией HTML, однако в действительности между тэгами <CAPTION> и </CAPTION> допустимо записывать любые HTML-элементы, употребляемые в разделе <BODY>. Приведем пример записи заголовка таблицы:
Браузер Microsoft Internet Explorer предоставляет дополнительные возможности для выбора расположения заголовка. Параметр ALIGN допускает значения LEFT, CENTER и RIGHT для горизонтального выравнивания наряду с описанными выше значениями. Отметим, что это один из редких случаев, когда широко распространенный параметр ALIGN может использоваться и для горизонтального выравнивания, и для вертикального. Например, запись ALIGN = RIGHT обеспечит расположение заголовка, прижатого к правой стороне и размещенного над таблицей. Если записать ALIGN = BOTTOM, то так же, как и в приведенном выше примере, заголовок будет расположен под таблицей. Однако двойное использование в одном заголовке параметра ALIGN недопустимо. Поэтому дополнительно введен специальный параметр для вертикального выравнивания -- VALIGN, принимающий значения ТОР или BOTTOM. Например, для заголовка, располагаемого внизу таблицы с выравниванием влево, описание имеет следующий вид:
<CAPTION ALIGN = LEFT VALIGN = ВОТТОМ > Заголовок, располагаемый внизу с выравниванием влево </CAPTION>
Возможности горизонтального выравнивания заголовка таблицы являются расширением спецификации HTML, не поддерживаются браузером Netscape Navigator, и поэтому ими следует пользоваться только в крайней необходимости.
Параметры тега <TABLE>
Основным тэгом, применяемым при создании таблиц, является тег <TABLE>. Он может использоваться с рядом параметров, каждый из которых допустимо опускать. Набор допустимых параметров зависит от браузера. Согласно спецификации HTML в тэге <TABLE> могут использоваться следующие параметры: BORDER, CELLSPACING, CELLPADDING, WIDTH, ALIGN. Браузеры NetScape и Microsoft Internet Explorer разрешают кроме перечисленных пяти параметров использовать параметры HEIGHT и BGCOLOR. Отдельные браузеры позволяют также задавать и другие параметры. Рассмотрим назначение общеупотребительных параметров тега <TABLE>.
Параметр BORDER
Параметр BORDER управляет изображением рамки вокруг каждой ячейки, которые, по сути, дают линии сетки таблицы, и вокруг всей таблицы. По умолчанию рамки не рисуются, и на экране пользователь увидит лишь ровно расположенный текст ячеек таблицы. Существует немало ситуаций, когда использование таблиц без рамок вполне оправданно, например, для многоколонных списков, реализованных при помощи таблиц, или задания точного взаимного расположения рисунков и текста. Однако в большинстве случаев для традиционного использования таблиц ее ячейки полезно отделить друг от друга линиями сетки, что облегчает восприятие и понимание информации, содержащейся в таблице.
Для добавления в таблицу рамок необходимо включить в код <TABLE> параметр BORDER, который может иметь численное значение.
Например, <TABLE BORDER> или <TABLE BORDER = 10>.
Численное значение параметра определяет толщину рамки в пикселах, рисуемую вокруг всей таблицы, однако на толщину рамок вокруг каждой ячейки это значение не влияет. При отсутствии численного значения обычно оно принимается равным минимальному значению (1), хотя для различных браузеров стиль показа рамок может отличаться. Возможность независимого управления отображением рамки вокруг всей таблицы и рамками вокруг ячеек отсутствует.
В спецификации HTML 3.0 не было включено значение для параметра BORDER. Это сделано лишь в HTML 3.2. Так, в частности, ранние версии Microsoft Internet Explorer не разрешали задания численного значения.
Отметим, что при отсутствии параметра BORDER рамки не прорисовываются, но место под них оставляется (это относится только к Netscape). Общий размер таблицы при отсутствии параметра BORDER или его наличии не изменяется (исключением является случай задания BORDER = 0). Таким образом, минимальное расстояние между двумя соседними ячейками в этих случаях будет равно удвоенной толщине рамки, т. е. двум пикселам. Расположить ячейки как можно ближе друг к другу возможно заданием BORDER=0, что означает отсутствие рамок. Некоторые браузеры могут не поддерживать задание численного значения параметра BORDER, тогда значение, равное нулю, будет проигнорировано, и таблица будет прорисована с рамками.
Параметр CELLSPACING
Форма записи параметра: CELLSPACING = num, где num -- численное значение параметра в пикселах, которое не может быть опущено. Величина num определяет расстояние между смежными ячейками (точнее между рамками ячеек) как по горизонтали, так и по вертикали. По умолчанию значение принимается равным двум. Заметим, что традиционно в издательских системах смежные ячейки таблицы имеют общую границу. В HTML-таблицах по умолчанию между ними оставляется место, что хорошо видно на приведенном выше рисунке. При задании CELLSPACING=0 рамки смежных ячеек сольются и создадут впечатление единой сетки таблицы (рис. 4.7).
Параметр CELLPADDING
Форма записи параметра аналогична CELLSPACING. Величина num определяет размер свободного пространства (отступа) между рамкой ячейки и данными внутри ячейки. По умолчанию значение принимается равным единице. Установка параметра CELLPADDING равным нулю может привести к тому, что некоторые части текста ячейки могут касаться ее рамки, что выглядит не очень эстетично.
Действие параметров CELLPADDING и CELLSPACING очень похоже друг на друга. Для таблицы без рамок изменение того или другого параметра приводит к одному и тому же результату. Оба параметра влияют на соответствующие отступы одновременно по горизонтали и по вертикали. К сожалению, раздельного управления горизонтальными и вертикальными отступами так, как это сделано, например, для отступов от изображений (параметры HSPACE и VSPACE тега <IMG>), не предусмотрено.
Все три параметра -- BORDER, CELLPADDING и CELLSPACING действуют независимо друг от друга, если какой-нибудь из них опущен, то берется его значение, принятое по умолчанию. В частности, если опущены все перечисленные параметры, то минимальное расстояние между данными из смежных ячеек будет равно 6 пикселам (для Netscape). Это значение складывается из двух пикселов для CELLSPACING, одного пиксела для CELLPADDING и одного пиксела для рамки каждой из ячеек. Наиболее компактная таблица будет получена заданием следующего описания:
Подобные документы
Ввод и вывод чисел при помощи подключаемого модуля IO. Особенности работы с одномерными и двухмерными массивами. Тестирование состояние флагов. Рринципы и навыки работы с компилятором и отладчиком. Разработка схемы алгоритма программы на языке ассемблер.
курсовая работа [1,3 M], добавлен 02.12.2009Анализ технического задания. Разработка программы по вычислению функции на языке ассемблер для микропроцессора Кр580ВМ80. Алгоритмы программного умножения, деления, сложения, вычитания и сдвига влево многобайтных чисел. Расчет времени работы программы.
курсовая работа [88,2 K], добавлен 19.09.2012Изучение команд для обработки строк, приемов, используемых в работе со строками, приемы их использования. Команды префикса повторения. Приемы программирования на языке Ассемблера с использованием подпрограмм, работа с командами вызова подпрограмм.
методичка [121,0 K], добавлен 18.12.2011Принципы и алгоритмы обработки прерываний. Набор действий по реализации этапов обработки прерываний микропроцессора. Разработка структуры и алгоритма резидентной программы. Реализация программы на языке Ассемблер, методы её отладки и тестирования.
курсовая работа [348,7 K], добавлен 22.12.2014Программный комплекс для разработки программы транслирующей программу с языка Pascal на язык С++. Построение логической и арифметической модели решения. Разработка компилятора для программы. Методы отладки программы и создание для нее документации.
курсовая работа [742,6 K], добавлен 03.07.2011Изучение языка низкого уровня ассемблер для написания примера программы для 16 битного приложения. Разработка и реализация алгоритма поднесения чисел к степени чисел над полем за основанием 2 (mod 2). Иллюстрация техники создания DOS приложения.
курсовая работа [33,3 K], добавлен 08.11.2011Написание модуля на языке Ассемблер для вычисления значения выражения. Составление программы корректного ввода исходных данных в таблицу и вывода результата в виде таблицы. Создание модуля для обработки строк и программы корректного ввода исходных данных.
курсовая работа [36,8 K], добавлен 18.09.2010Создание web-сайта "Мастер по обработке цифровой информации" на языке программирования HTML. Структура и тэги тела документа. Исследование программ, с помощью которых можно написать web-страницы. Особенности работы с файлами разных форматов и расширений.
курсовая работа [144,2 K], добавлен 31.10.2013Процесс трансляции программы на языке ассемблера в объектный код. Разработка интерфейса для взаимодействия и связи программ. Понятие компиляции. Структура модели микропроцессора. Пример структуры двухбайтной команды. Арифметическо-логичесткие операции.
дипломная работа [3,3 M], добавлен 26.11.2012Описание функциональных блоков микрокомпьютера. Основы построения программных средств. Принципы соединения аппаратных средств микропроцессорных систем. Разработка электрической принципиальной схемы и программы функционирования на языке Ассемблер.
курсовая работа [176,8 K], добавлен 12.01.2015