Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


TEST Аналогична команде AND, но результат операции не записывается в 1 операнд.



Остальные команды данного раздела на самостоятельное изучение.

7.6.9. Битовые команды.

Возможны начиная с процессора 80386 (В PASCAL невозможны).

7.6.10. Команды условного перехода и действия.

 

Команды зависят от значения флагов. В зависимости от мнемоники команды осуществляют проверку того или иного флага.

Установить операнд:

SET[Cond]

Имеет 1 операнд, который представляет из себя целое байтное число. Если данное условие выполняется, то операнд устанавливается в 1, если не выполняется, то значение операнда равно нулю.

Команды условного перехода:

Аббревиатура команд SET [ Cond ] и J [ Cond ] аналогичная

J[Cond]

Имеет 1 операнд, который является меткой. Метка во встроенном Ассемблере начинается с @. Далее идет любая литерная информация, состоящая из букв латинского алфавита, цифр и знака подчеркивания. Запрещено использовать следующие метки: @DATA, @CODE, @RESULT. Метка @DATA хранит во встроенном Ассемблере адрес сегмента данных, @CODE – сегмента кода и @RESULT – адрес смещения результата функции.

JE, JZ

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

Пример:

CМP AX, BX

JZ @M1

Проверяем значения AX и BX путем вычитания из AX BX без сохранения результата. Если операнды совпадали, то осуществляем переход на метку М1.

JNE , JNZ

Переход по неравенству, если флаг ZF не равен нулю.

JC , JB , JNAE

 Переход , если флаг CF = 1

JAE , JNC , JNE

Переход, если CF=0

JS

Переход, если старший разряд установлен в единицу (число отрицательное)

JNS

Переход, если флаг SF = 0 (положительное число).

Другие команды данного раздела изучаем самостоятельно.

 

7.6.11. Команды безусловного перехода.

 

CALL – вызвать программу. Один параметр – имя подпрограммы. При вызове подпрограммы она может быть вызвана как по длинному адресу, так и по короткому. Вызов определяется объявлением подпрограммы. При ближнем вызове содержимое регистра SP уменьшается на содержимое регистра IP. Регистр IP запоминается в стеке. В регистр IP загружается адрес подпрограммы. При дальнем вызове в сегмент также запоминается регистр SP и в регистры SP и IP вносится новый адрес программы.

RET – возврат из подпрограммы. Параметров нет. Осуществляет действие, обратные команде CALL.

JMP – безусловный переход на метку. Один параметр – метка. Метка в программе записывается специальным образом: <имя метки>. При этом метка может быть как 1 в строке, так и перед командой ASM. Для успешной трансляции Assembler кода рекомендуется не ставить метку в пустой строке, в крайнем случае, писать команду NOP.

 

7.6.12. Команды циклов.

 

LOOP – Организовать цикл. Имеет один параметр – метка, на которую передается управление начала цикла (аналогично REPEAT – UNTIL с фиксированным количеством повторений), перед началом цикла в регистр CX должна быть занесена информация о количестве повторений. При каждом обращении к команде LOOP регистр CX уменьшается на один. Выход из цикла – когда CX =0.

Пример. Перенесем 10 байтный массив в 5 байтный массив из слов.

type

tm=array[1..10] of byte;

ts=array[1..5] of word;

var

 m:tm;

 s:ts;

 pm,ps:pointer;

 i:integer;

begin

for i:=1 to 10 do m[i]:=100-10*(i-1);

for i:=1 to 5 do s[i]:=0;

writeln;

for i:=1 to 5 do write(s[i]:6);

writeln;

pm:=@m;

ps:=@s;

ASM

PUSH ES

PUSH DS

LES DI, PM

LDS SI, PS

MOV CX,5

@CIK:

 MOV AL,[ES:DI]

 INC DI

 MOV AH,[ES:DI]

 MOV [DS:SI],AX

 ADD SI,2

 LOOP @CIK

POP DS

POP ES

END;

for i:=1 to 5 do write(s[i]:6);

writeln;

READLN;

END.

Другие команды данного раздела изучаем самостоятельно.

 

7.6.13. Команды обработки прерываний.

 

INT – вызвать прерывание. Один параметр - номер прерывания в виде константы. В процессе выполнения прерывания в стек заполняются регистры: ВS, IP, FLAGS. Перед выполнением прерывания анализируется флаг прерывания. Он должен быть равен 1. После выполнения команды флаг прерываний имеет значение 0, т.е. другие прерывания в данный момент запрещены. Флаг TF также имеет значение 0, т.е. запрещен пошаговый отладочный режим.

INTO – выполнить 4-ое прерывание (прерывания переполнения).

IRET , IRETD – возвратиться из прерывания. Употребляется только в программе обработчика прерывания – команда, обратная INT. Возвращает управление на команду, следующую за командой INT или INTO.

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

STI – разрешить обработку всех отложенных прерываний. Установить флаг прерывания в 1. Как правило, программа-обработчик прерывания начинается командой CLI, а заканчивается STI и IRET.

Пример.

Напишем процедуру установки пиксела, аналогичную примеру 2 пункта 5.5. Используем встроенный ассемблер и прерывание 10h. Пиксел устанавливаем для видеорежима 320х200 точек на 256 цветов.

Procedure my_pixel(x,y : word; Color : byte);

Begin

ASM

MOV AH,0Ch

MOV CX,X

MOV DX,Y

MOV AL,Color

INT 10h

END;

END;

 

7.6.14. Команды поддержки языков высокого уровня

 

Предназначены для защищённого режима и привилегий (не входят в встроенный ассемблер).

 

7.6.15. Разные команды.

 

NOP – нет операции. Команда позволяет выровнять программу на границу слова. Если длинна вашей программы на языке ASM не кратна слову, то в процессе выполнения программы могут происходить сбои. Операндов нет.

WAIT – ждать окончания работы мат. сопроцессора.

ESC – выполнить команду (передать данные мат. сопроцессору). Имеет 2 операнда:

1-ый – 6-битовая константа, определяющая команду мат. сопроцессора, 2-ой – данные, передаваемые мат. сопроцессору.

LOCK – запретить работу мат. сопроцессора. Операндов не имеет. Прерывает работу сопроцессора и передает управление следующей за ней команде.

BSWAP – переставить байты в обратном порядке. Имеет один операнд – dword.

 

7.7. Дополнительные атрибуты у подпрограмм на Turbo Pascal.

 

Описание пpоцедуpы или функции полностью состоящей из утверждений ассемблера должно содержать объявление "assembler". Компилятор не использует переменную результата функции, и ссылка на символ @Result является ошибкой для всех типов данных, кроме стpок. Компилятор автоматически генеpиpует коды входа и выхода из ассемблерных пpоцедуp. Функции, использующие директиву «assembler», должны возвращать результат в следующем виде: 8-битные данные - в pегистpе AL, 16-битные - в pегистpе АХ; 32-битные целые и указатели - в pегистpах DX и AX; 6-байтное действительное число - в pегистpах DX,BX и АХ; другие вещественные и целые числа в pегистpе стека ST(0) сопpоцессоpа 8087 /4/.

Реализуем пример программы из пункта 7.6.12 в виде процедуры реализованной на языке встроенного ассемблера.

type

tm=array[1..10] of byte;

ts=array[1..5] of word;

 

procedure conv(var s:ts; m:tm);assembler;

ASM

PUSH ES

PUSH DS

LES DI,[M]

LDS SI,[S]

MOV CX,5

@CIK:

 MOV AL,[ES:DI]

 INC DI

 MOV AH,[ES:DI]

 MOV [DS:SI],AX

 ADD SI,2

 LOOP @CIK

POP DS

POP ES

END;

 

var

 m:tm;

 s:ts;

 i:integer;

begin

for i:=1 to 10 do m[i]:=100-10*(i-1);

for i:=1 to 5 do s[i]:=0;

writeln;

for i:=1 to 5 do write(s[i]:6);

writeln;

conv(s,m);

for i:=1 to 5 do write(s[i]:6);

writeln;

READLN;

END.

 

В TURBO PASCAL возможно использование подпрограмм, написанных на других языках программирования или хранящих внутри себя файловые ресурсы. Существует единственное ограничение – длина 1 подпрограммы, хранящей ресурс или написанной на другом языке программирования, не должна превышать 1 стр. Существует 2 атрибута, определяющих тип подпрограммы. Это атрибут подпрограмма или ресурс, оттранслированные в другом языке программирования, и атрибут Assembler – подпрограмма, написанная на встроенном языке ASM’а. В программу на ТР можно вставить подпрограмму, написанную на языка С++ или Turbo Assembler. В этом случае подпрограмма в данном языке должна иметь атрибут Pascal . Программа должна быть оттранслирована в объектный код, т.е. до трансляции на языке Pascal в текущие директории должны храниться с расширением * OBJ.

 Пример: включения функции MYFUN, возвращающей целое значение, по написанной на C++ или на Assembler.

 FUNCTION MY FUN: Integer; External;

{$L My Fun. OBJ}

В первом объектном модуле могут храниться несколько подпрограмм. Для того чтобы включить в текст программы ресурс, используется утилита BINOBJ, которая имеет следующие параметры: BINOBJ<имя файла><имя объектного файла><имя процедуры>

Пример: BINOBJ MYDAT DAT MYDAT Proc Dat.

В результате выполнения этой утилиты текущей директории будет создан файл MYDAT.OBJ

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

Пример: P.dat: =@Proc Dat;

 

ЯЗЫК ПРОГРАММИРОВАНИЯ С.

 

8.1. Константы.

В языке С существует три вида арифметических констант.

десятичные (обязательно начинаются с цифры от 0 до 9)

восьмеричные (начинаются с цифры 0 и включают цифры от 0 до 7)

шестнадцатеричные (начинаются с 0х или 0Х и могут включать в себя цифры от 0 до 9 и символы от A до F

Кроме того, программист может задать длину константы. Если за числом не идет никакого символа, то константа является короткой, если же за числом есть символ l(L), тогда константа длинная.

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

Примеры:

100     - десятичное сто

0100     - восьмеричное

0х100   - шестнадцатеричное

100L     - десятичное длинное (4 байта)

0100L   - восьмеричное длинное

0х100L - шестнадцатеричное длинное

 

Вопрос: Как записать десятичное число 0,9 в восьмеричной форме? Ответ: 011Е-1.

В языке С различаются символьные и строковые константы. Символьная константа состоит из одного символа и заключается в апострофы (к примеру, можно записать так - ‘а’). Строковая константа состоит из нуля или более символов и заключается в двойные апострофы (например, “ас”). В конце строки обязательно ставится символ с кодом 0 (все строки в языке С типа PChar). Кроме того символ может быть задан специальной последовательностью, при этом такая последовательность обязательно начинается обратным знаком деления («\») и заключается в апострофы или двойные кавычки.

Предопределенные знаки:

\n – новая строка, перевод строки

\t – табуляция

\v – вертикальная табуляция

\b – возврат на шаг

\r – возврат каретки

\f – перевод формата

\\ - \ 

\’’ – '

\”” – “

\0 – код нуля

\<nnn> - , где nnn задает код символа от 0 до 255.

Для унификации программного обеспечения рекомендуется употреблять в строках только следующие обозначения: \n, \t, \r, \f, \\, \’ ,\”, \0.

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

 

8.2. Синтаксис С.

 

Тип строка записывается следующим образом Char[]. Символы [ и ] говорят о том, что пользователь задает массив. Нижняя граница массива всегда равна нулю. Верхняя граница может быть как заданной, так и незаданной. Если граница задана, то транслятор выделяет память под данные в начале работы программы. Если граница не задана, то массив будет распределен динамически в куче. При этом правильность выделения массива лежит полностью на программисте.

Комментарии начинаются на /* и заканчиваются на */.

 

Программа на языке С состоит из трех частей:

включаемые модули и директивы компилятора

определение типов и переменных внутри программы

программный код

 

8.3. Типы памяти переменных

 

В отличие от языка Паскаль программист в языке С имеет возможность переменную внутри любой части программы. При этом ее видимость распространяется внутри программного блока: минимум – программные скобки, подпрограмма, вся программа. Также в отличие от языка Паскаль программист в языке С имеет возможность задать компилятору связь переменной и используемой памятью. Переменная в языке С может иметь 4 атрибута:

auto (в соответствии с вышеперечисленными правилами, приписывается по умолчанию)

Extern (внешняя переменная, распространяет свою область на весь программный комплекс)

Register (целые короткие нормальные или длинные числа, которые связываются с регистрами центрального процессора. При использовании этого типа вычисления идут быстрее, чем при использовании всех прочих типов переменных. Запрещается базирование на данный тип переменных)

Static (тип переменных, которые уничтожаются после завершения работы функции или операторных скобок).

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

 

8.4 Структуры в С.

 

Структура языка С имеет ключевое слово struct <имя> { здесь перечисляются поля}

Обращение аналогично обращению в языке Паскаль. Структура с переменной частью имеет в языке С следующее описание:

Union <name> {перечисляемые поля}

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

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

Пример.

struct my {

              unsigned int bi10:10;

              unsigned int bi6:6;

              unsigned char a;

              char b;

              long int c

           }

В данной структуре my определены два поля bi10 и bi6, которые объединяются в одно слово.

 

8.5. Операции в выражениях.

 

8.5.1. Арифметические операции.

“+” – сумма, может быть определена между числами и указателями

“-” – аналогично

“*” – аналогично в языке Паскаль (только между числами)

“/” – аналогично в языке Паскаль, но результат деления определяется типами участвующих чисел по следующему правилу: если один из целых операндов длиннее другого, то короткий операнд преобразуется к более длинному. Если один из операндов – действительное число, то второй операнд преобразуется к действительному. Если одно из действительных чисел длиннее второго, то второе преобразуется к более длинному. В некоторых трансляторах иногда происходит ошибка, поэтому рекомендуется при сложных вычислениях задавать порядок преобразований непосредственно программисту. Порядок преобразования задается утверждением (<тип>) <данное>, например (real)I.

“%” – остаток от деления на цело (соответствует Mod в Паскале)

“++” – увеличивает значение выражения на 1, но возвращает результат равный предыдущему, например, {j=4; I=++j;} в результате I=4, j=5.

“<выр>++” – аналогично, только результат возвращается равный значению переменной, например, { j=4; I=++j;} в результате I=5, j=5.

“<выр>--” – аналогично “<выр>++”

“--<выр>” – аналогично “++<выр>”. Операции ++ и – могут быть проделаны как над числами, так и над указателями.

Операция присваивания =, например, I=4

Присваивание с модификацией переменной “+=”, например, {I=5;j+=7}, в результате I=12

“+=” – аналогично предыдущей. Данные операции могут производиться как над переменными числовых типов, так и над указателями.

“*=” - только над числовым типом, например, {I=2;j=3;I*=j++}, в результате I=8.

“/=” – аналогично предыдущему.

“%=” – аналогично

“>>=” – сдвиг вправо, например, {I=4;I>>=1;}, в результате I=2.

 “<<=” – сдвиг влево

“&=” - логическое умножение, пример, {I=12;j=4;I&=J}, в результате I=4.

“!=” – логическое сложение, например, {I=12;j=4;I!=J}, в результате I=12.

“^=” - исключающее или

Пример, {I=12;j=4;I^=J}.

 

8.5.2. Адресные операции.

& - вычисляет адрес переменной (в Паскале @). Пример, I=&N.

* - присваивание значения указателю. Пример, {N=5;I=&N;*I=10;}.

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

 

8.5.3. Операции отношения.

Операции отношения употребляются в логических операторах и операторах цикла.

== - проверить на равенство, допускается как арифметический тип, так и строковый, а также указатели.

!= - проверка на неравенство, допускается как арифметический тип, так и строковый, а также указатели.

< - операция меньше, допускается все типы данных, а также указатели.

<= - операция меньше или равно, допускается все типы данных, а также указатели.

> - операция больше, допускается все типы данных, а также указатели.

>= - операция больше или равно, допускается все типы данных, а также указатели.

Операции отношения могут быть объединены с помощью логических операций, допускается три вида логических операций:

! – отрицание.

!! – логическое сложение.

&& - логическое умножение.

 

8.5.4. Специальные операции.

Встроенная логическая операция:

синтаксис: (<лог. выр.>?< выр.1>:< выр.2>)

<лог. выр.> - выражение, которое проверяется до выполнения < выр.1> или < выр.2>.

< выр.1> - выполняется, если логическое выражение истинно.

< выр.2> - выполняется, если логическое выражение ложно.

           

       Пример : C=((A<0) ? A/2 : SQRT(A));

Определить размер:

синтаксис: SIZE of (<тип/массив>)

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

(<тип>) – функция явного преобразования.

Пример : в Turbo Pascal Word(I), Real(K) в Си (Word)I, (Real)K соответственно.

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

 

В основу TURBO PASCAL положен принцип получения правильно работающей программы за минимальное время, он заключается в четких проверках типов и длин данных и минимального использования преобразования между переменным. для С положен принцип минимального времени получения программы. В отличие от TURBO PASCAL не производится четких проверок между типами переменных и более развита работа с указателями. Кроме того, в Си в одном операторе можно может производиться массовая обработка данных в отличие от языка Turbo Pascal.

Си : I++, J=0, k=--4; - один оператор.

 

8.6. Операторы языка Си.

 

Оператор { } (в Turbo Pascal “ Begin End ;”)

Логический

If (<ЛВ>) <ОП true > [ else <ОП false >]

Пример:    If (A<3)

                               If (A<5)

                               Else B=2;

Else относится ко второму If.

Сложный логический оператор:

Switch (<B ыр. >){

Case <const>:<O П 1 >  ;…; < ОП N >;

Else <const> < ОП >1

…………………………………

Case <constK>:<O П 1 >;…; < ОП N >;

[default : <O П 1 >  ;…; < ОП N >;]}

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

Пример : Turbo Pascal:

Case of

1 : A:=1

2 : A:=2

end;

 

Си:

Switch {

Case 1 : A=1

Case 2 : A=2

}

Если I=1, то case в Turbo Pascal присваивает переменной 1, в Си Switch присваивает переменной A – значение 2.

Для того чтобы выйти из любого цикла существует оператор Break.

В Си есть оператор продолжить цикл Continue (т.е. тело цикла игнорируется).

Оператор с фиксированным значением повторений:

For (< B 1 >[;< B 2 >;[< B 3 >]]) <ОП>;

B1 – начальные параметры цикла.

В2 – выражение истинность которого выполняется для продолжения цикла

В3  - постоянная часть цикла.

Пример: в Turbo Pascal:

For I:=0 to 9 do M[I]:=0;

В Си:

For (I=0; I<10; I++) M[I]=0;

Так как в Си может состоять из нескольких выражений то одним оператором цикла for можно описать сразу несколько циклов.

For (i=0; j=N-1; i<N; I++, j--) a[i]=a[j];

 

Оператор Do While

DO <ОП> While (<ЛВ>) – повтор один или несколько раз.

(в Turbo Pascal: repeat - until)

While

While (<ЛВ>) <ОП>;

(в Turbo Pascal: While)

 

8.7. Функции в языке Си.

 

В языке Си употребляются только функции, при этом функция может возвращать, а может не возвращать значение, если функция не возвращает значение то вместо типа возвращаемого значения записывается ключевое слово VOID, в отличии от Turbo Pascal, количество посылаемых в функцию параметров может не соответствовать параметрам, определенным для функции, обмен информации происходит по следующему алгоритму, в стек записываются все переменные и Const пересылаемые в функцию, вызывается функция и из стека последовательно считываются данные соответствующие типам аргумента функции, при этом проверка правильности типов не осуществляется.

Описание функции:

<TB>

<имя Ф>[(<П1>,<П2>,…,<ПN>)]

<Тип1><n1>;

<Тип2><n2>;

…………….

<ТипN><nN>;

{

/*Tело Ф*/

[Return(<B>);]

}

<TB> - тип возврата

- имя функции и необязательные параметры передаваемые в функцию, если для функции определены параметры передачи, то они обязательно должны быть описаны. Команды и если функция возвращает какое-то значение, внутри нее должен быть хотя бы один оператор Return, при попадании на данный оператор работа функции заканчивается и также через стек происходит возврат значения, также как и в Turbo Pascal может быть несколько точек выхода из функции.

Double

LimFunc(x,a,b)

Double : x

Double : a

Int registers b;

{Return (a*b+x)

}

 

Пример обращения:

Правильный: L= LimFunc(2e-1,3e-2,14)

Не правильный: L= LimFunc(2e-1,5,14)

 

Во втором случае стек будет заполнен только первыми 12 байтами в оставшихся 6 байтах будет храниться неопределенная информация поэтому функция выполняется неверно.

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

 

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

 

main (arqc, arqv, envp)

int arqv

char ** arqv

char ** enpv

{

/*меню программы/

}

 

arcc – кол-во элементов программы, передающихся в главный модуль.

В TP соответствует ParamCount

arqv – массив параметров, передающий в программу символьная матрица неопределенной длины.

enpv – символьная матрица, передающая в себя установки в ОС. Данная матрица не заполняется, а формируется транслятором автоматически.

 

8.9. Включаемые библиотеки

 

В языке Си существует множество директив к транслятору, позволяющих создавать независимые от платформы программное обеспечение. Директивы к транслятору начинаются со знака #. Наиболее часто употребляются директивы #include </”<ф>”/> - включить файл. Включение текстов программ. Файл имеет расширение *.h (в языке Си *.c или *.cpp). Если имя файла идет в знаках < >, например, #include <math.h>, то файл math.h ищется в стандартной директории языка Си. Если имя файла заключено в “”, то файл ищется по директориям:

текущей директории;

директории определяемой ОС, с атрибутом path;

стандартной директории языка Си.

 

“!” с помощью первой записи описываются стандартные библиотеки, с помощью второго - пользовательские.

 

Кроме include существуют:

#define

#undef

#if<ЛВ>

#ifdef<ЛВ>

#else

#endif

#line

 

Стандартные библиотеки

 

Stdio.h – библиотека ввода/вывода. Определяет понятие файла, операции с файлами, вывод и ввод информации в соответствии с правилами ввода/вывода текстовых файлов, форматирование вывода информации в строку или файл. В стандартном языке Си существует * обработка файлов, которая соответствует обработке файлов, с атрибутом file в Паскале. В настоящее время лишние функции ввода/вывода в некоторых трансляторах отсутствуют; в языке Паскаль используемые библиотеки являются независимыми, а в языке Си существуют несколько направлений библиотек. Библиотека ввода/вывода, математики, обработки строк и т.д. При этом чтобы использовать более развитую библиотеку необходимо в тексте программы описать более простые, в соответствии данному направлению.

 

 Библиотека проверки строк ctype.h. Осуществляет проверку символов, находящихся в строке и различные преобразования над ними. Занимается распределением кучи.

 

Math.h осуществляет арифметические функции над действительными и целыми числами.

 

“!” Описание библиотек идет перед описанием переменных. Правила использования библиотек в СИ соответствуют правилам использования библиотек в языке Паскаль.

 

ЛИТЕРАТУРА

1. Ложкин А.Г. Компьютерная графика. Конспект лекций по курсу «Компьютерная графика» для специальностей 220200, 220300, 552800, Ижевск, 2003.

2. Абель. П. Ассемблер. Язык и программирование для IBM PC, M.: Век, 2003 (5-е издание)

3. Юров В. И. Assembler. Учебник для вузов СПб.: Питер, 2003, 640 стр.

4. Ложкин А.Г. Программирование на смеси языков высокого уровня и Ассемблера. УМК 53/95. Метод. указ. для практ. и лаб. занятий по курсу “Системное программное обеспечение” для студ. спец. 220200, Ижевск, ИжГТУ, 1995(1 изд.), 2002 (2 изд.). 37 с.

 

 

ЭКЗАМЕНАЦИОННЫЕ ВОПРОСЫ

 

Назначение системного ПО

Обмен информации в компьютере (супервизор, поиск информации)

Обработка текстовых файлов

Обработка типизированных файлов

Обработка не типизированных файлов

Адресация памяти на платформе ЭВМ PC

Обращение к ОП на языке Паскаль(сегмент команд, данных, стек, куча)

Предопределенные массивы

Основные регистры процессора 80286 

Флаговый регистр

Библиотека DOS. работа с файлами

Обработка прерываний(прерывание, вектор прерываний и принципы переопределения векторов прерываний)

Библиотека DOS. Процедуры и функции, работающие с прерываниями ОС.

Понятие программного оверлея(Overlay, перекрестная ссылка)

Режимы адресации в Ассемблере(правила использования, использования Ассемблера в языке Паскаль общих для любого билета по встроенному Ассемблеру)

Выражения Ассемблера

Команды общего назначения(типы данных для языка Паскаль и Ассемблера)

Команды ввода/вывода и адресные команды

Команды работы с файлами

Арифметические команды(+, -)

Арифметические команды(*,/)

Команды перехода

Строковые команды

Логически команды

Команды циклов и битовые команды

Команды обработки прерываний

Специальные команды

Вставка двоичных файлов. Текст программы на Паскале

Описание (типов) count на языке Си

Типы памяти. Описание структуры языка Си

Арифметические выражения языка Си

Логические выражения и операции с адресами

Операции отношений и специальные операции

Логические операторы языка Си

Операции циклов языка Си (break, continue)

Использование файлов в языке Си

Структура головной программы и включение библиотек в языке Си

СТРУКТУРА ТЕХНИЧЕСКОГО ЗАДАНИЯ НА КУРСОВУЮ РАБОТУ

 

ЗАГОЛОВОК:

Техническое задание на курсовую работу

Название курса – СПО

На тему: название темы

 

1. Цель создания системы (программы)

Обязательно:

-  Конкретное назначение программы;

    2-3. Преимущества разрабатываемого программного продукта по сравнению с существующими;

1. Конкретные особенности программы.

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

 

- Технические средства проекта. В этом пункте описывается технические и программные средства, на которых будет функционировать разработанный в курсовой работе программный продукт.

- Технические характеристики компьютера. Их необходимо писать в соответствии с общепринятыми обозначениями:

1. тип платформы;

2. процессор;

3. быстродействие процессора;

4. оперативная память;

5. объем винчестера;

6. тип видеопроцессора;

7. объем оперативной видеопамяти.

- – 2.3 Дополнительное периферийное оборудование;

2.4 Операционная система;

2.5 Язык программирования, на котором разрабатывался программный продукт.

3. Задачи, реализуемые в ходе курсового проекта:

3.1 Перечень задач, решаемых подсистемой (больше чем в п.1);

3.2 Технические средства, на которых разработана подсистема;

3.3 Языки программирования, используемые в курсовом проекте;

3.4 Общие требования к программе. В курсовом проекте должны быть использованы системные средства и конкретные требования, предъявляемые научным руководителем;

· Состав отчета (состав пояснительной записки).

Состав пояснительной записки:

 

Пояснительная записка должна содержать следующие пункты:

· Введение (обосновать необходимость СПО);

· Обзор существующих языков программирования (не менее 3-х языков), обязательные ссылки на литературу. После обзора необходимо обосновать выбор языка с точки зрения системного программирования;

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

· Описание алгоритма программы обязательно с блок-схемой. Блок-схема не должна быть выделена в отдельную подглаву. Описание блок-схемы обязательно.

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

· Список литературы. Указать не менее трех источников по языкам программирования и 1-2 источника по математической модели. Ссылки только на имена сайтов недопустимы, ссылки на имена электронных документов на сайте возможны;

· Приложения.

1. Текст программы;

2. Результаты работы программы;

 

 


Поделиться:



Последнее изменение этой страницы: 2019-04-19; Просмотров: 199; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.246 с.)
Главная | Случайная страница | Обратная связь