Программы перекодировщики текста. Планирование кодирования и тестирования программ

Программа в машинных кодах (исполняемый код) – это последовательность команд (инструкций), которые помещаются в памяти и выполняются процессором в указанном порядке. Исполняемый код обычно сохраняется на диске в файлах с определенными расширениями (.exe, .dll, .com и др.)

Команда размещается в комбинированной ячейке следующим образом. Первый байт содержит код операции (КОП) (например + или – или *), которую необходимо выполнить над содержимым ячеек памяти. Далее в одной, двух или трех ячейках (операндах команды) по 2 или 4 байта содержатся адреса ячеек (А1, А2, А3), над которыми нужно выполнить указанную операцию. Номер первого байта команды называется ее адресом (рис. 11.1).

Конец работы -

Эта тема принадлежит разделу:

Структура программы на языке СИ. Этапы выполнения программы

Лексемы.. из символов алфавита формируются лексемы языка минимальные значимые единицы.. идентификаторы..

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ:

Что будем делать с полученным материалом:

Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Все темы данного раздела:

Алфавит языка Си
Алфавит языка Си включает: - прописные и строчные буквы латинского алфавита, а также знак подчеркивания (код ASCII 95); - арабские цифры от 0 до 9; - специальные символы:

Идентификаторы и ключевые слова
Идентификатор (в дальнейшем, для краткости - ID) – это имя программного объекта (константы, переменной, метки, типа, функции, модуля, поля в структуре). В иден

Общая структура программы на языке Си
Программа, написанная на языке Си, состоит из одной или нескольких функций, причем одна функция обязательно имеет идентификатор (имя) main() – основная, гла

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

Этапы обработки программы
Язык Си относится к языкам высокого уровня, т.е. предназначенным для записи программы в форме, удобной для человека и не "привязанной" к конкретному типу машин. Ис

Роль препроцессора
Перед компиляцией программа на языке Си обрабатывается специ­альной программой – препроцессором, который работает под управле­нием директив. Препроцессорные директи

Основные типы данных
Данные в языке Си разделяются на две категории: простые (скалярные), будем их называть базовыми, и сложные (составные) типы данных. Тип данных определяет: внутреннее представлени

Константы в программах
Константы - объекты, не подлежащие использованию в левой части оператора присваивания, т.к. константа - является неадресуемой величиной и, хотя она хранится в памяти ЭВМ, обычно нет никакого способ

Целочисленные константы
Общий формат: ±n (+ обычно не ставится). Десятичные константы - последовательность цифр 0...9, первая из которых не должна быть 0. Например, 22 и 273 - обычные целые констант

Константы вещественного типа
Данные константы размещаются в памяти по формату double, а во внешнем представлении могут иметь две формы: 1) с фиксированной десятичной точкой, формат записи: ±n.m, где n

Символьные константы
Символьная константа - это символ, заключенный в одинарные кавычки: "A", "х" (занимает 1 байт). В языке Си используются и. специальные (управляющие) символы,

Строковые константы
Строковая константа представляет собой последователь­ность символов кода ASCII, заключенная в кавычки (”) . Во внутреннем представлении к строковым константам добавляется нулевой символ "", еще на

Операция присваивания
Формат операции присваивания: Операнд_1 = Операнд_2 Операндом_1 может быть только переменная. Этот (левый) операнд операции присваивания получил

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

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

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

Стандартная библиотека языка Си
В любой программе кроме операторов и операций используются средства библиотек, входящих в среду программирования. Часть библиотек стандартизована и поставляется с компилятором. Функции, входящие в

Стандартные математические функции
Математические функции языка Си декларированы в файлах math.h и stdlib.h. В приведенных здесь функциях аргументы и возвращаемый результат имеют

Потоковый ввод-вывод
Поток – это абстрактное понятие, которое относится к любому переносу данных от источника к приемнику. Потоки С++ обеспечивают надежную работу как со стандартными (stdin, stdout), так

Консольные функции вывода данных на экран
Наряду с потоковым вводом-выводом, в консольных приложениях применяются и функции ввода-вывода языка Си. Их декларации приведены в заголовочных файлах stdio.h и c

Консольные функции ввода информации
Функция scanf предназначена для форматированного ввода исходной информации с клавиатуры: scanf (управляющая строка, список адресов объектов ввода

Советы по программированию
1. Выбирайте тип для переменных с учетом диапазона их возможных значений и требуемой точности представления данных. 2. Старайтесь давать переменным ID (имена), отражающие их назначе

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

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

Советы по программированию
1. Выражение, стоящее в круглых скобках операторов if, while и do – while вычисляется по правилам стандартных приоритетов операций. 2. Если в какой-либо ветви вычислен

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

Одномерные массивы
В программе одномерный массив объявляется следующим образом: типID_массива [размер] = {список начальных значений}; тип – тип эл

Одномерные массивы. Нахождение суммы, произведения, количества
Задача 2. Найти сумму элементов массива. #include #include #include void main() {

Одномерные массивы. Удаление и вставка в массивах
Задача 11. Удалить из массива второй по счету элемент. Поскольку полное количество элементов в массиве задано в его объявлении, физически "удалить" элемент

Одномерные массивы. Обмен местами
Задача 14. Поменять местами первый и последний элемент массива. При обмене, чтобы не потерять одно из значений, потребуется дополнительная переменная:  

Одномерные массивы. Сортировка массива
Задача 16. Отсортировать массив по возрастанию (т.е. расположить его элементы в порядке возрастания). Для этой задачи придумано множество различных алгоритмов. Один

Одномерные массивы. Поиск совпадений
Задача 17. Найти в массиве элемент, повторяющийся наибольшее количество раз. (Если таких элементов несколько, вывести любой из них). for(max=i=0; i

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

Многомерные массивы. Диагонали квадратной матрицы
Квадратной называется матрица, у которой число строк равно числу столбцов. Ее главной диагональю называется диагональный ряд элементов, идущий из верхнего левого угла

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

Компонента StringGrid
В оконном режиме ввод и вывод массивов обычно организуется с использованием компоненты StringGrid, предназначенной для отображения информации в виде двумерной таблицы, каждая ячейка которой

Общие понятия
Данные и программы во время работы ПЭВМ размещаются в оперативной памяти (ОЗУ), которая представляет собой последовательность пронумерованных ячеек. По указанному номеру процессор находит нужную яч

Операция sizeof
Данная операция позволяет определить размер объекта по ID или типу, результатом является размер памяти в байтах (тип результата int). Формат записи: sizeof(параметр

Регистры
Заметим, что кроме собственно ОЗУ, в компьютере имеются ячейки памяти, размещенные непосредственно в процессоре. Такие ячейки памяти называются регистрами. В процессоре обыч

Регистры. Ввод-вывод строк - массивов char
Для ввода с консоли строк - массивов char обычно используются две стандартные функции: scanf() (см. тему "Функции ввода-вывода"; специфик

Регистры. Поэлементная работа со строками
В языке С не допускается ни присваивание, ни сравнение массивов. Операции над строками могут быть выполнены либо непосредственно действиями над отдельными символами (как над элементами масси

Регистры. Перевод строк - массивов char в числа и наоборот
Функции преобразования строки S в число: - целое: int atoi(char *S); - длинное целое: long atol(char *S); - действительное: doub

Русификация консольных приложений
При работе в консольном приложении ввод-вывод выполняется в кодировке ASCII (см. тему "Кодирование символов", кодовые таблицы). В тексте же программы символы отображаются в принятой в Win

Б) Действия над типом String
Основными операциями с типом String являются: 1) Присваивание: S1=S2; 2) Сравнение: S1==S2, S1<=S2, S1!=S2 и т.д. Здесь знак <

А) Преобразование из массива char в String и наоборот
Как упоминалось выше, для преобразования массива char к типу String достаточно просто присвоить его переменной типа String: char c="Привет!"; String s=

Б) Преобразование из String в простую переменную типа char
При таком присваивании нужно указать номер символа в строке, который будет присвоен: String s="*"; char c=s; Обратное же присваивание н

Сущность и предназначение функций
С увеличением объема программы ее код становится все более сложным. Одним из способов борьбы со сложностью любой задачи является ее разбиение на части. В языке Cи, как и в любом языке прог

Тип_результата имя_функции (список параметров)
{ код функции return выражение; } Параметры - это переменные, доступные внутри функции, значения которы

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

Область видимости
Область видимости (действия) объекта (переменной и др.) – это та часть кода (текста) программы, в которой его можно использовать. В сложных программах ограничение этой области помогает изб

Разбиение программы на модули
Разбиение программы на модули (отдельные файлы с текстом программы) позволяет использовать готовые модули в разных программах, а также является важнейшим способом разделения труда при работе в колл

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

Декларация структурного типа данных
Структурный тип данных задается в виде шаблона, общий формат описания которого следующий: struct ID структурного типа { описание полей

Объявление структурных переменных
Как уже отмечалось само описание структуры не приводит к выделению под нее места в ОП. Теперь необходимо создать нужное количество переменных с приведенной структурой и сделать это можно двумя спос

Обращение к полям структуры
Обращение к полю структуры производится при помощи составных имен, которые образуются с использованием операции принадлежности (.) в виде: ID_струк

Вложенные структуры
Структуры могут быть вложенными, т.е. поле структуры может cамо быть структурой, описание которой должно предшествовать описанию внешней структуры. Например, в структуре person, содержащей

Массивы структур
Структурный тип "struct ID_структуры", как правило, используют для декларации массивов, элементами которых являются структурные переменные. Это позволяет создавать программы, оперирующие

Размещение структурных переменных в памяти
Элементы структур в общем случае размещаются в памяти последо­ва­тельно с учетом выравнивания начальных адресов полей. Выравнивание (align) означает, что ком

Битовые поля
Наряду с "обычными" типами, допустимыми и для "отдельных" переменных, поля структуры могут иметь особый целочисленный тип, допустимый только для них - битовые поля

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

Генерация псевдослучайных чисел
В языке Си есть возможность генерации т.н. псевдослучайных чисел, т.е. чисел, выглядящих для человека как случайные, хотя в действительности вычисляемых по некоторому алгоритму. К числу фу

Типы файлов
В файле может храниться любая информация. Если там хранится текст в виде последовательности символов (включая символы перевода строк, хранимые по определенным правилам - см. ниже) и не содержится и

Открытие файла
Каждому файлу, с которым работает программа, присваивается внутреннее логическое имя, используемое в дальнейшем при обращении к нему. Логическое имя (идентификатор файла) - это указатель на файл, т

Закрытие файла
После окончания работы с файлом доступ к нему необходимо закрыть. Это выполняет функция fclose(указатель файла). Например, файл из предыдущего примера закрывается так: fclose (f);

Запись - чтение информации
Все действия по чтению-записи данных в файл можно разделить на три группы: - операции посимвольного ввода-вывода; - операции построчного и форматированного ввода-вывода;

А) Посимвольный ввод-вывод
В функциях посимвольного ввода-вывода происходит прием одного символа (байта) из файла или передача одного символа в файл: int fgetc(FILE *f) - считывает и возв

Б) Построчный и форматированный ввод-вывод
Эти функции служат для чтения/записи текста и обычно применяются для текстовых файлов. В функциях построчного ввода-вывода происходит пере­нос из файла, или в файл

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

Д) Сброс буфера файла
Заметим, что если после записи данных файл не был закрыт, часть «записанных» данных может не сохраниться. Это связано с тем, что данные вначале записываются в буфер файла, и

Текстовые файлы
Для работы с текстовыми файлами удобнее всего пользоваться функциями fprintf(), fscanf(), fgets() и fputs(). Создание текстовых результирующих файлов обычно необходимо для оформления отчет

Перенаправление стандартного ввода-вывода
В консольном режимесуществует понятие стандартных файловых потоков: stdin - ввод (по умолчанию - клавиатура), stdout - выв

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

Дополнительные полезные функции
Рассмотрим некоторые функции, которые могут пригодиться для работы с файлами (они работают с любыми файлами, но чаще применяются к бинарным): int fileno(FILE *f)

Определение указателей
Как говорилось выше, машинная память состоит из байт. Все байты в памяти пронумерованы. Адресом байта называется его номер. (Нумерация при этом идет либо в пределах всей

Связь указателей и массивов
Идентификатор массива указывает адрес памяти, начиная с которого он расположен, т.е. адрес его первого элемента. Работа с массивами тесно связана с применением указателей. Пусть объявлен м

Указатели на указатели
В языке Си можно описать и переменную типа «указатель на указатель». Это ячейка оперативной памяти, в которой будет храниться адрес указателя на какую либо переменную. Признак такого типа да

Указатели как параметры функций
В языке Си аргументы при стандартном вызове функции передаются по значению. Это означает, что в стеке, как и в случае локальных данных, выделяется место для формальных параметров функции. В выделен

Указатели на структуры
Указатели могут указывать и на структурный тип данных: struct Point{ int x,y; } r, *p; p=&r; Для обращения к полю ст

Указатели на функции
В языке Си допускаются указатели не только на данные, но и на функции. Они позволяют, например, создать функцию, строящую таблицу значений любой другой функции (с заданным видом списка параметров);

Динамическое выделение и освобождение памяти
В процессе работы программы автоматически выделяется место в памяти для всех ее объектов. Как будет показано ниже, иногда требуется явно указать момент выделения памяти для некоторых объектов и раз

Создание одномерного динамического массива
В языке С размерность массива при объявлении должна задаваться константным выражением. При необходимости работы с массивами перемен­ной размерности нужно объявить вместо массива указат

Создание двуxмерного динамического массива
Операция new способна выделить память лишь под одномерный массив. А как быть, если массив двумерный? Наиболее удобный способ - это представить двумерный массив как массив из массивов

Операция typedef
Любому типу данных, как стандартному, так и определенному пользователем, можно задать новое имя с помощью операции typedef: typedef тип новое_имя; Вве

Отладка и пошаговое выполнение программы
Как показывает практика, даже профессиональные программисты допускают ошибки в процессе написания программ. Поэтому задача обучающегося программированию - не столько научиться писать программу сраз

Бывает такая ситуация, что открываешь какой-то текст, а там вместо слов какие-то каракули или иероглифы. И чаще всего это происходит с текстами на русском языке. И это не удивительно, потому что кириллицу используют не так часто, как латиницу. К примеру, у меня возникли подобные проблемы при переходе с Windows 7 на Windows 8. Я решил открыть свои рабочие текстовые файлы, а там вместо слов, какие-то каракули. И я в начале растерялся, уже потом вспомнил, что нужно поменять кодировку. И после этого уже всё наладилось.

Есть ещё одна ситуация, когда вы, к примеру, создаёте или редактируете какой-то сайт или какую-то HTML-страничку, и там опять проблема с отображением кириллицы. И опять надо менять кодировку. Раньше эта проблема была очень частой, в особенности таких букв, как "ё", "ь" и "ъ"- знаки. Да и сейчас тот-же Google Chrome не очень любит подобные буквы. Но это его проблема.

И теперь встаёт логический вопрос: "Как решить эти две проблемы?!" А тут есть такие простые и не очень простые решения:

  • заново перепрограммировать весь текст. Если вы программист и отлично разбираетесь в двоичной кодировке, то можете смело переписать нужный текст или нужную HTML-страничку. Однако, это очень долгий и кропотливый путь. Я не думаю, что сейчас найдётся очень много программистов, которые смогут это сделать.
  • использовать специальный онлайн сервис для конвертирования одних файлов в другие. Их пока ещё не очень много, и большинство из них работает с текстами на латинице, но всё же это перспективный вариант. То есть вам не нужно будет устанавливать на свой ПК какую-либо прогу, а просто зайти на нужный сайт, отправить владельцам необходимый текстовый файл для перекодировки и всё будет сделано. Минус подобных сервисов в том, что они поддерживают мало форматов и пока они ещё работают намного хуже следующего варианта.
  • использовать программу перекодировщик текста. Это отличный вариант. Вам нужно будет установить на свой комп специальную прогу и потом уже с помощью неё всё сделать. То есть поменять кодировку текста.

Теперь подробнее поговорим о последнем варианте. И он может реализовываться с помощью:

  • текстовых редакторов. Я сам ни раз использовал подобный вариант, когда у меня в текстовых файлах появлялись разные каракули и иероглифы. Этот вариант хорошо подойдёт для единичного файла, а вот для пакетного перекодирования не подойдёт. Лучше использовать второй вариант.
  • специальные программы перекодировщики текста. Это уже профессиональные проги, у них только одна задача и они под неё заточены.

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

Программы перекодировщики текста

(просто нажмите на её название, чтобы перейти к анализу и затем её скачать):

Её ценят за отличные показатели перекодировки; за то, что не требует установки; за умение читать файлы vnt-формата; за выправление текстов, в которых намешано много разных кодировок; за умение перекодировать базы данных из latin1 в win125; за маленький размер; за отличную работу из года в год.

Все операции в ЭВМ выполняются над электрическими сигналами, закодированными двоичной цифрой 0 или 1. Поэтому перед занесением в память данные и команды должны быть вручную или аппаратно преобразованы в двоичную форму. Однако при написании программы команды могут быть записаны в любой другой форме (например, мнемонической, как в табл. 1). В общем случае программа может кодироваться четырьмя способами: в двоичной, восьмеричной, шестнадцатеричной и символической или мнемонической форме.

Двоичная форма команды . Эта форма является единственной, которую понимает машина. Каждой ЭВМ присуща система команд в двоичном коде, которая понятна ей. Регистр команд, куда помещается команда из памяти, связан электрическими цепями с устройством управления ЭВМ, где производится декодирование команды и инициируются сигналы по реализации команды. В табл. 2 приведено содержимое части памяти ЭВМ, где хранятся программа и данные для суммирования двух чисел из примера параграфа 2.1. Левый столбец - это адреса ячеек в двоичной форме. Правый столбец представляет содержимое ячеек в двоичной форме. Адрес имеет 11 разрядов (память ЭВМ состоит из 2048 = 2 11 ячеек), а каждая из ячеек - по 16 разрядов. Для удобства чтения двоичных чисел и их перевода в шестнадцатеричную систему они разбиты на тетрады .

Восьмеричное и шестнадцатеричное кодирование . Из предыдущего примера ясно, что записывать программу в двоичном коде очень неудобно и утомительно, если учесть, что средняя по сложности программа состоит из нескольких сотен или тысяч нулей и единиц. Для сокращения записи целесообразно использовать систему счисления с основанием 2 3 = 8 или 2 4 = 16. Выбор для кодирования команд той или иной системы счисления в основном связан с форматом команд ЭВМ. В нашем случае удобнее шестнадцатеричная система, так как большинство полей в командах базовой ЭВМ (см. рис. 3) равно или кратно 4. В табл. 3 приведена та же программа, что и в табл. 1 и 2, только закодированная в шестнадцатеричной системе. Для программиста такое кодирование более удобно, чем двоичное.

Таблица 2 Таблица 3

Пример двоичного кодирования Пример шестнадцатеричного кодирования

содержимого памяти содержимого памяти

Мнемоническое (символическое) кодирование . Шестнадцатеричное (или восьмеричное) кодирование имеет очевидное преимущество перед двоичным. Однако для длинных программ и оно неудобно. Программист должен выучить наизусть шестнадцатеричные коды всех команд, использующихся в машине (в некоторых ЭВМ их более сотни). Чтобы упростить процесс написания, отладки и чтения программы, предложен мнемонический или символический код: каждая команда представляется простым двух-, трех- или четырехбуквенным мнемоническим символом. Мнемонические символы значительно легче связать с машинными операциями, так как их можно выбирать таким образом, чтобы они напоминали название команды. Большинство мнемонических кодов - это сокращения английских названий команд: SUB от SUB tract (вычесть), BR от Br anch (перейти), BPL от B ranch if Pl us (перейти по положительному числу) и т. п. Намного легче запомнить, что инвертирование аккумулятора (C oM plement A ccumulator) кодируется СМА, чем запомнить двоичный код 1111010000000000 или даже его шестнадцатеричный эквивалент F400. Пример символического кодирования программы был приведен в параграфе 1 (см. табл. 1).

Хотя символическое кодирование очень удобно для программиста, оно не может быть понято машиной. Единственным языком, понятным машине, является язык двоичных кодов. Следовательно, необходимо транслировать символическую программу в ее двоичный эквивалент. Это можно сделать вручную, используя таблицы соответствия (вида табл. 4). На практике трансляция осуществляется специальной машинной программой.

Классификация команд . ЭВМ способна понимать и выполнять определенный набор команд. При составлении программы программист ограничен этими командами. Количество и тип команд изменяются в зависимости от возможностей и назначения ЭВМ.

В зависимости от того, к каким блокам машины обращается команда или на какие блоки она ссылается, команды можно разделить на три группы: обращения к памяти (адресные команды); обращения к регистрам (регистровые или безадресные); ввода-вывода.

Команды обращения к памяти предписывают машине производить действия с содержимым ячейки памяти, адрес которой указан в адресной части команды. Например, команда ADD 20 из табл. 2.1 является командой обращения к памяти. Она предписывает машине обращение по адресу 20 и использование содержимого этой ячейки в качестве первого операнда. Второй операнд находится в аккумуляторе. Эти два операнда суммируются.

Безадресные команды выполняют различные действия без ссылок на ячейку памяти. Например, команда CLA из табл. 1 предписывает машине очистить аккумулятор. Эта команда имеет дело с операндом, расположенным в конкретном месте - в аккумуляторе. Другой пример безадресной команды - команда HLT из табл. 1.

Команды ввода-вывода осуществляют обмен данными между ЭВМ и внешними устройствами. В них задаются адрес (название) устройства ввода-вывода и код той операции, которую должно выполнить это устройство (приказ на ввод-вывод).

В табл. 4 дан перечень команд базовой ЭВМ. Подробно действия, выполняемые машиной по этим командам, рассмотрены в следующих параграфах. Поясним одно из описаний: (СК) + 1 => СК в командах ISZ и TSF. После выполнения этой операции счетчик команд будет указывать не на следующую команду программы, а на команду, расположенную за ней. Это произойдет потому, что после выборки команды ISZ или TSF содержимое счетчика команд уже было увеличеноавтоматически на единицу.

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

Форматы команд и способы адресации . Ранее рассматривались различные форматы (структуры) команд. Разработчики базовой ЭВМ выбрали три формата 16-битовых (однословных) команд с 4-битовым кодом операций (рис. 4).

Таблица 4.Система команд базовой ЭВМ

С помощью 4-битового числа можно закодировать не более чем 2 4 =16 различныхопераций. Разработчики отвели два кода (1110 и 1111) на команды ввода-вывода и безадресные команды, а так как в этих командах либо используется меньшая по длине адресная часть (8-битовый адрес устройства ввода-вывода на рис. 4, в), либо эта часть вообще отсутствует (рис. 4, б), то появилась возможность иметь до 2 4 = 16 команд ввода-вывода (4-битовый приказ на ввод-вывод) и до 2 12 = 4096 безадресных команд (12-битовое расширение кода операции).

В командах обращения к памяти на адрес отведено 11 бит, что позволяет осуществить прямое адресование всех 2048 (2 м) ячеек памяти базовой ЭВМ. Однако встречаются приложения, когда в команде целесообразнее размещать не сам адрес операнда (результата или перехода), а его указатель, т. е. адрес ячейки памяти, в которой сохраняется адрес операнда (результата или перехода). Такое косвенное адресование упрощает построение циклических программ, организацию работы с подпрограммами, а также создает условия для расширения адресуемого пространства (косвенное адресование 16-битовых ячеек базовой ЭВМ позволяет ей иметь память объемом до 2 16 = 65536 слов).

Для указания вида адресации в командах используется бит с номером 11 (рис. 4, а), в который при прямой адресации следует записывать 0, а при косвенной- 1. В мнемонических изображениях команд для указания косвенной адресации операнд помещается в скобки. Так, на рис. 5 команда ADD 25 или 4025 указывает, что из ячейки 25 должно быть взято число (53), которое нужно сложить с содержимым аккумулятора. Команда же ADD (25) или 4825 указывает, что из ячейки 25 должен быть взят адрес ячейки (53), в которой хранится число (47), которое и нужно сложить с содержимым аккумулятора. («А это веселая птица-синица, которая ловко ворует пшеницу, которая в темном чулане хранится в доме, который построил Джек.» Похоже?).

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

«До чего дошел прогресс: видеомагнитофон с телевизором умещаются на ладони», — такие слова мы нередко слышим от людей старшего поколения. Результаты миниатюризации сейчас можно увидеть во всем, что иметь отношение к сфере развлечений и связи.

Кодирование музыки

Мобильные устройства с возможностью воспроизведения мультимедийного контента — традиционная область применения новейших технологий. Поэтому, как ни крути, о каждой сфере развлечений нужно получить хотя бы минимум знаний. Даже для прослушивания музыки теперь недостаточно ориентироваться в названиях альбомов и композиций — желательно также знать размер музыкального трека, который зависит от битрейта (чем он выше, тем больше «весит» файл при той же длительности композиции). Кроме того, стоит обратить внимание и на качество звучания, на которое, в свою очередь, влияет тип кодека (алгоритм кодирования).

Кодирование фильмов

С фильмами все обстоит еще сложнее: нужно знать не только параметры видео, которые поддерживает портативное устройство, но и способы «подогнать» под них имеющийся материал. Подготовку видео можно разделить на два типа: конвертирование DVD с фильмом в соответствующий формат и преобразование готового видеофайла, который по каким-то причинам не воссоздается, например, на КПК, в поддерживаемый этим устройством формат.

Видео кодеки

Почему же нельзя просто взять имеющийся файл и воспроизвести его на своем мобильном устройстве? Причиной «забастовки» плеера может стать отсутствие нужного кодека, а также слишком высокое разрешение или битрейт фильма, из-за которых устройство не может обработать предложенное видео. Это напрямую относится к устройствам, оснащенным процессорами с тактовой частотой 300-400 МГц. Более мощные модели (520 — 624 МГц) способны справиться с большинством фильмов без перекодирования даже при размере экрана 640х480 точек.

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

XviD4PSP

Условия распространения: бесплатно. XviD4PSP является мультиформатным конвертером. Эта программа создана на движке AviSynth и разрешает создавать файлы для Хbох 360, PSP, PS3, iPhone, iPod, iPod Touch, PC, Hardware DVD, Apple TV. Кроме этого, допустимо импортирование 26 форматов, а экспортировать данные разрешается в 19 форматов. Для того чтобы избежать вероятных проблем, советуем вначале поставить пакет К-Lite Codec Pack, а затем уже XviD4PSP.

Программа разрешает кодировать как отдельные файлы, так и несколько подряд. Кроме того, можно соединить в один фильм несколько видеороликов, выбрав в верхнем меню «Файл — присоединить файл». Разрешение и битрейт всех фрагментов должны быть одинаковыми.

Изменить размер кадра

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

Интерфейс программы довольно легок и понятен. Широкие возможности и обилие настроек вызывают уважение. Но чтобы воспользоваться всем этим, требуются глубокие познания в области специфики видеокодирования — а значит, советовать XviD4PSP неопытным пользователям нельзя. На наш взгляд, программа больше ориентирована на кодирование видео с высоким качеством для просмотра на домашних бытовых плеерах, но при этом разрешает преобразовывать контент и для его воспроизведения на портативных устройствах, что подтверждает ее универсальность.

PocketDivXEncoder

Условия распространения: бесплатно. PocketDivXEncoder — настоящая находка для обладателей КПК и портативных плееров, поддерживающих воспроизведение видео в формате AVI. Она разрешает конвертировать файлы OGM или AVI в DivX, адаптированный под экраны смартфонов (220×164точек) и КПК (от QVGA, 320х240 точек, до VGA, 640х480 точек).

При кодировании совершается оптимизация файла в соответствии с возможностями процессора мобильного устройства. Также можно усилить яркость изображения и нормализовать звучание аудиодорожки.

Помимо всего прочего, данная программа позволяет кодировать видео не только для мобильных устройств, но и бытовых плееров с возможностью вывода контента на экран телевизора в HD-разрешении (1080х720 точек).

PocketDivXEncoder не нуждается в инсталляции. Запустить программу можно из той директории, в которую она была скопирована. Сначала откроется панель выбора устройства, для которого нужно перекодировать фильм, а затем главное окно PocketDivXEncoder. Пункты меню пронумерованы — запутаться в них невозможно. Первоначально следует выбрать объект кодирования, а затем директорию и указать название итогового файла. Прочие пункты предлагают дополнительные настройки. В частности, изменить видео- и аудиопараметры конечного файла можно, передвигая ползунки и регулируя таким образом, качество материала. Также PocketDivXEncoder позволяет видоизменять яркость, насыщенность, контраст и уровень звука. Кнопка «Изменить» открывает дополнительное окно, в котором будет показано ваше устройство (например, КПК), а на его экране — избранное вами видео. Причем все вносимые изменения будут наглядно воссоздаваться и на нем.

Кстати, программа разрешает обрезать фильм в начале и в конце — например, удалить титры, чтобы уменьшить объем конечного файла. Это особенно полезно при кодировании сериалов.

Пакетная обработка файлов

Еще одной особенностью PocketDivXEncoder является поддержка пакетной обработки файлов.

Из минусов стоит обозначить невозможность работы с форматом DVD. Кроме того, PocketDivXEncoder, к сожалению, не умеет склеивать видеоролики. В остальном эта программа является отличным инструментом для быстрого перекодирования «тяжелых» AVI-файлов и их оптимизации под конкретное мобильное устройство. С ней справится даже ленивый пользователь, которому понадобится всего три клика мышью, чтобы желаемый фильм без проблем воссоздавался на коммуникаторе или смартфоне. Кроме того, программа распространяется бесплатно, а ее интерфейс полностью русифицирован.




Top