Как сохранить программу в алгоритме

Можно использовать DEBUG для сохранения программ на диске в следующих случаях:

1. После загрузки программы в память машины и ее модификации необходимо сохранить измененный вариант. Для этого следует:

u загрузить программу по ее имени: DEBUG n: имя файла [Enter]

u просмотреть программу с помощью команды D и ввести изменения по команде E

u записать измененную программу: W [Enter]

2. Необходимо с помощью DEBUG написать небольшую по объему программу и сохранить ее на диске. Для этого следует:

u вызвать отладчик DEBUG

u с помощью команд A (assemble) и E (enter) написать программу

u присвоить программе имя: N имя файла.COM [Enter].

Тип программы должен быть COM — так как только программист знает, где действительно кончается его программа, указать отладчику длину программы в байтах.

u запросить регистр CX командой: R CX [Enter] — отладчик выдаст на этот запрос CX 0000 (нулевое значение)

u указать длину программы — 6

Сохраняем алгоритм | Easy Logic Creators | Урок 1.4

u записать измененную программу: W [Enter]

В обоих случаях DEBUG выдает сообщение « Writing nnnn bytes » (Запись nnnn байтов). В случае, если nnnn равно 0, то произошла ошибка при вводе длины программы, и необходимо повторить запись cнова.

Важно: Отладчик DOS DEBUG это средство, полезное для отладки ассемблерных программ. Однако следует быть осторожным с ее использованием, особенно для команды E (ввод). Ввод данных в неправильные адреса памяти или ввод некорректных данных могут привести к непредсказуемым результатам.

На экране в этом случае могут появиться «странные» символы, клавиатура заблокирована или даже DOS прервет DEBUG и перезагрузит себя с диска. Какие-либо серьезные повреждения вряд ли произойдут, но возможны некоторые неожиданности, а также потеря данных, которые вводились при работе с отладчиком.

В случае, если данные, введенные в сегмент данных или сегмент кодов, оказались некорректными, следует, вновь используя команду E, исправить их. Однако, можно не заметить ошибки и начать трассиpовку программы. Но и здесь возможно еще использовать команду E для изменений. В случае, если необходимо начать выполнение с первой команды, то следует установить в регистре командного указателя (IP) значение 0100.

Введите команду R (register) и требуемый регистр в следующем виде:

Отладчик выдаст на экран содержимое регистра IP и перейдет в ожидание ввода. Здесь следует ввести значение 0100 и нажать для проверки результата команду R (без IP). Отладчик выдаст содержимое регистров, флагов и первую выполняемую команду. Теперь можно, используя команду T, вновь выполнить трассировку программы.

В случае, если ваша программа выполняет какие-либо подсчеты, то возможно потребуется очистка некоторых областей памяти и регистров. Но yбедитесь в сохранении содержимого регистров CS, DS, SP и SS, которые имеют специфическое назначение.

Лекция 14.
Макросредства

Простое макроопределение

Для каждой закодированной команды Ассемблер генерирует одну команду на машинном языке. Но для каждого закодированного оператора компиляторного языка Pascal или C генерируется один или более (чаще много) команд машинного языка. В этом отношении можно считать, что компиляторный язык состоит из макрооператоров.

Читайте также:
Программа как раскроить лист

Сохранение алгоритма в КуМир

Ассемблер MASM также имеет макросредства, но макросы здесь определяются программистом. Для этого задается имя макроса, директива MACRO, различные ассемблерные команды, которые должен генерировать данный макрос и для завершения макроопределения — директива MEND. Затем в любом месте программы, где необходимо выполнение определенных в макрокоманде команд, достаточно закодировать имя макроса. В результате Ассемблер сгенерирует необходимые команды.

Использование макрокоманд позволяет:

u упростить и сократить исходный текст программы;

u сделать программу более понятной;

u уменьшить число возможных ошибок кодирования.

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

Макроопределение должно находиться до определения сегмента.

Директива MACRO указывает Ассемблеру, что следующие команды до директивы ENDM являются частью макроопределения.

Директива ENDM завершает макроопределение. Команды между директивами MACRO и ENDM составляют тело макроопределения.

Имена, на которые имеются ссылки в макроопределении должны быть определены где-нибудь в другом месте программы.

Макрокоманда INIT1 может использоваться в кодовом сегменте там, где необходимо инициализировать регистры. Когда Ассемблер анализирует команду INIT1, он сначала просматривает таблицу мнемокодов и, не обнаружив там соответствующего элемента, проверяет макрокоманды. Так как программа содержит определение макрокоманды INIT1 Ассемблер подставляет тело макроопределения, генерируя необходимые команды — макрорасширение.

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

Использование параметров в макрокомандах

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

Формальный параметр может иметь любое правильное ассемблерное имя (включая имя регистра, например, CX), которое в процессе ассемблирования будет заменено на параметр макрокоманды. Отсюда следует, что Ассемблер не распознает регистровые имена и имена, определенные в области данных, как таковые. В одной макрокоманде может быть определено любое число формальных параметров, разделенных запятыми, вплоть до 120 колонки в строке.

Комментарии

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

PROMPT MACRO MESSGE; Эта макрокоманда выводит сообщения на экран

Так как по умолчанию в листинг попадают только команды генерирующие объектный код, то Ассемблер не будет автоматически выдавать и комментарии, имеющиеся в макроопределении.

В случае, если необходимо, чтобы в расширении появлялись комментарии, следует использовать перед макрокомандой директиву.LALL («list all» — выводить все), которая кодируется вместе с лидирующей точкой:

.LALL PROMPT MESSAG1

Макроопределение может содержать несколько комментариев, причем некоторые из них могут выдаваться в листинге, а другие — нет. В первом случае необходимо использовать директиву.LALL. Во втором — кодировать перед комментарием два символа точка с запятой (;; ) — признак подавления вывода комментария в листинг.

Читайте также:
Программа решение уравнения методом деления отрезка пополам

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

Для этого служит директива.SALL («suppress all» — подавить весь вывод), которая уменьшает размер выводимого листинга, но не оказывает никакого влияния на размер объектного модуля.

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

Использование макрокоманд в макроопределениях

Макроопределение может содержать ссылку на другое макроопределение.

Рассмотрим простое макроопределение DOS21, которое заносит в регистр AH номер функции DOS и выполняет INT 21H:

DOS21 MACRO DOSFUNC

Для использования данной макрокоманды при вводе с клавиатуры необходимо закодировать:

LEA DX, NAMEPAR DOS21 0AH

Предположим, что имеется другое макроопределение, использующее функцию 02 в регистре AH для вывода символа:

DISP MACRO CHAR

Для вывода на экран, например, звездочки достаточно закодировать макрокоманду DISP ‘*’. Можно изменить макроопределение DISP, воспользовавшись макрокомандой DOC21:

DISP MACRO CHAR

Теперь, если закодировать макрокоманду DISP в виде DISP ‘*’, то Ассемблер сгенерирует следующие команды:

Директива LOCAL

В некоторых макрокомандах требуется определять элементы данных или метки команд.

При использовании такой макрокоманды в программе более одного раза происходит также неоднократное определение одинаковых полей данных или меток. В результате Ассемблер выдаст сообщения об ошибке из-за дублирования имен.

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

LOCAL dummy-1, dummy-2. ; Формальные параметры

Источник: lektsia.com

Алгоритм 3.4. Сохранение файла командой Сохранить как

Для сохранения файла командой Сохранить как нужно выполнить следую­щие действия.

  1. При первом сохранении файла рекомендуется сначала выполнить коман­ду ФайлСвойства. После выбора этой команды появится окно, показан­ное на рис. 3.8. В случае отказа от этой рекомендации следует выполнить только п.3 данного алгоритма.
  1. Заполнить поля показанного на рис 3.8 окна Свойства и нажать кнопку ОК.
  1. Выполнить команду ФайлСохранить как. Откроется окно, показанное на рис. 3.9.

Ввести в поле Имя файла желаемое имя файла и нажать кнопку Сохранить.

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

3. ОПРЕДЕЛЕНИЕ СОСТАВА ЗАДАЧ С ОЦЕНКОЙ ПРОДОЛЖИТЕЛЬНОСТИ ИХ ВЫПОЛНЕНИЯ

Технически перечень задач (работ) может быть создан “вручную” или путем переноса данных из любого файла, например, баз данных FoxPro или Access, документа Word, таблицы Excel. Независимо от способа создания принципиально важна ориентация перечня работ на особенности конкрет­ного проекта. Применительно к рассматриваемому примеру первое прибли­жение состава задач предварительного графика реализации проекта опреде­лено в разд. 2.1 «Планирование предметной области и определение структуры работ на стадии предварительного планирования».

Читайте также:
Программа исправляет ошибки реестра

В укрупненном графике каждой из фаз проекта, перечень которых опреде­лен выше, может соответствовать одна работа. Объемы работ на этой стадии будут определены приближенно.

Алгоритм 3.5. «Ручной» ввод данных

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

  1. Запустить Project.
  2. Если в качестве открываемой по умолчанию формы представления дан­ных о графике реализации проекта установлена любая отличная от линейной диаграммы форма, командой ВидДиаграмма Ганта открыть линейную диаграмму.
  3. Выделить в нужной строке ячейку столбца Название задачи, используя для этого алгоритм 2.1.
  4. Ввести с клавиатуры наименование задачи.
  5. Завершить ввод данных в ячейку нажатием клавиши или переместить курсор с помощью клавиш перемещения курсора или щелчка мыши.
  6. Выделить в нужной строке ячейку столбца Длительность, используя для этого алгоритм 2.1.
  7. Ввести с клавиатуры значение длительности выполнения задачи. Это значе­ние рекомендуется вводить, явно указывая размерность этой величины по образцу: 60мин для минут, 10,00д для рабочих дней, 6,5ч для часов, 8,20нед для недель. Если длительность задачи определяется не рабочим, а астроно­мически временем, то единицы размерности следует записывать с указанием для единиц времени префикса а. Обязательным вводом размерности единиц времени можно пренебречь, если есть уверенность в корректной настройке программы и в правильной интерпретации ею вводимых показателей.

Применительно к перечню задач предварительного плана рассматривае­мого проекта длительность каждой задачи определена равной одной неделе, за исключением задачи “Закупка материалов” (ее длительность определена равной 3,4 недели).

  1. Завершить ввод данных в ячейку нажатием клавиши или любой клавиши перемещения курсора.

9. Повторить действия пп.3-8 данного алгоритма для других строк табли­цы. К этому пе­речню для наглядности добавлены две вехи: “Начало проекта” и “Окончание проекта”. После ввода названий каждой из вех командой ПроектСведения о задаче (см. алгоритм 2.36) открывалось окно управ­ления данными о задаче и на вкладке Дополнительно устанавливался флажок Пометить задачу как веху, причем длительность каждой из вех устанавливалась равной нулю.

  1. Сохранить результаты работы.

Рис. 3.10. Вид документа предварительного плана проекта

со сформированным перечнем задач

После выполнения данных действий файл сохранен с именем Ремонт0.mрр. Сформированный перечень задач еще не является графиком проекта, но позволяет перейти к следующему шагу: формированию ресурсного обеспе­чения и объема трудозатрат.

Источник: studfile.net

Как сохранить и запрограммировать алгоритм?

maxresdefault.jpg

Стоит такая задача, сделать что-то наподобие зенопостера .

То есть есть такой алгоритм действий(что на картинке не важно, просто пример).
Мне нужно сохранить его в mysql со всеми условиями, и выражениями, и переменными.

И потом запустить его на выполнение.
Вот тут самое сложное.
К примеру есть задача: передать запрос методом пост с определенными параметрами.
И как потом запустить на выполнение этот алгоритм?
Как вообще такое запрограммировать?

Буду рад любой подсказке .

  • Вопрос задан более двух лет назад
  • 135 просмотров

Источник: qna.habr.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru