
- •2) Работа с файлами в с
- •3) Регистры процессора Intel x86
- •1) Основные команды процессора Intel x86 Расширение операндов
- •Работа с битами
- •Работа с флагами процессора
- •3) Простые типы данных в Паскеле
- •1) Составные типы данных в паскале
- •2) Циклические конструкции в с
- •3) Арифметические операции ассемблера
- •1)Условные переходы
- •2) Условные операторы в с
- •1) Массивы и строки в с
- •3) Работа с памятью в с
- •2) Составные типы данных с. Структуры
- •3) Условные Операторы в паскале
- •1) Математический сопроцессор
- •2) Циклические конструкции Паскаля
- •1) Процедуры и Функции в паскале
- •2) Простые типы данных в с
- •3) Массивы и строки в ассемблере
- •2) Общая структура программы с
- •3) Видеобуфер
- •1) Циклические конструкции в с
- •2) Работа с видеопамятью
- •3) Процедуры и функции в паскале
- •1) Простые типы данных в с
- •2) Строки в ассемблере
- •3) Условные Операторы в паскале
- •1) Работа с файлами в с
- •2) Условные переходы
- •3) Массивы и строки в паскале
- •2) Флаги
- •3) Организация сложных структур данных в паскале. Списки.
- •1) Работа с памятью в с
- •3) Составные типы данных в паскале
- •1) Массивы и строки в с
- •2) Регистры процессора Intel x86
- •1) Простые типы данных в с
- •2) Математический сопроцессор
- •3) Файлы в паскале
- •1) Условные операторы в с
- •2) Регистры процессора Intel x86
- •1) Типы данных в с
- •3) Условные Операторы в паскале
- •1) Общая структура программы с
- •2) Основные команды процессора Intel x86 Расширение операндов
- •Работа с битами
- •Работа с флагами процессора
- •3) Файлы в паскале
2) Циклические конструкции Паскаля
For переменная := начальное_значение to/downto конечное_значение do
Тело цикла
Цикл forповторяет тело цикла несколько раз, при этом каждый раз значение переменной-счетчика изменяется на 1. Ключевое слово to/downto определяет порядок: to указывет на порядок по возрастанию, а downto – по убыванию.
Цикл whileповторяет действие до тех пор, пока указанное в нем условие истинно:
While условие do действие;
Repeat команды Until условие;
1) выполнение его тела происходит перед проверкой условия; 2) для завершения цикла условие должно быть истинным. Таким образом, тело цикла repeat выполняется хотя бы один раз.
3) Составные типы данных С. Структуры typedefиспользуется длясокращения сложных или просто длинных определений типов, или же длясокрытия реально используемых типов. Синтаксисtypedefочень прост: мы пишем обычное объявление стековой переменной и добавляем перед этим определением ключевое словоtypedef. При этом никакая переменная не создается, а имя «переменной» становится синонимом указанного типа. Например:typedefconstchar*string;/* string - указатель на константный символ */ typedefvoid(*fptr)(int);/* fptr - указатель на функцию, возвращающую void и принимающую int */
Структурыпредставляют собой агрегаты разнородных данных (полейраз-
ноготипа); в отличие от массивов, где все элементы имеютодинитотжетип.
struct{
int x,y; /* два целых поля */
char s[10]; /* и одно - для строки */
} s1;
Билет 9
1) Процедуры и Функции в паскале
Подпрограмма– именованная последовательность операций. Различают два вида подпрограмм – процедуры и функции.
Функции используются, когда требуется получить значение, зависящее от некоторых параметров.
Function ИМЯ_ФУНКЦИИ ( СПИСОК_АРГУМЕНТОВ ) : ТИП_ВОЗВРАЩАЕМОГО_ЗНАЧЕНИЯ;
ЛОКАЛЬНЫЕ_ПЕРЕМЕННЫЕ;
Begin
...
ИМЯ_ФУНКЦИИ := ВОЗВРАЩАЕМОЕ_ЗНАЧЕНИЕ;
…
End;
procedure имя процедуры(параметры);
раздел описаний процедуры
begin
исполняемая часть процедуры
end;
2) Простые типы данных в с
Char – один байт, содержащий один символ из локального символьного набора
Int–целое число, обычно имеющее типовой размер для целых чисел в данной системе
Float – вещественное число одинарной точности с плавающей точкой
Double – вещественное число двойной точности с плавающей точкой
3) Массивы и строки в ассемблере
массив - структурированный тип данных, состоящий из некоторого числа элементов одного типа. Специальных средств описания массивов в программах ассемблера нет.
array1 rb 10 ; массив из 10 байт
array2 rw 10 ; массив из 10 слов (16-битных элементов)
array3 rd 10 ; массив из 10 32-битных элементов
Для обращения к элементам массива используется запись:
mov [array1], 1 ; занести в 0-й элемент массива 1
mov [array2 + 2], 2 ; занести в 1-й элемент массива 2
mov [array3 + ecx * 4], 7 ; занести в ecx-й элемент массива 7
Строкипредставляют собой обычный массив. Есть несколько распространенных способов хранения длины строки:
В отдельной переменной,
В первом ее байте (Pascal)
string db 12, ‘hello world!’
Знак 0 на конце (Си)
string db ‘hello world!’, 0
Знак $ на конце(DOS)
string db ‘hello world!$’
Операции со строками:
movsb/movsw/movsd. Записывает 1 / 2 / 4 байта изds:[esi] вes:[edi]. Изменяетesiиediна 1 / 2 / 4. Если флагDFустановлен, то уменьшает, иначе увеличивает. Командаstdустанавливает флаг,cldсбрасывает.
lodsb/lodsw/lodsd. Записывает 1 / 2 / 4 байта изds:[esi] вal/ax/eax, изменяетesiна 1 / 2 /4.
stosb/stosw/stosd. Записывает 1 / 2 / 4 байта изal/ax/eaxвes:[edi], изменяетediна 1 / 2 / 4.
cmpsb/cmpsw/cmpsd. Сравниваетds:[esi] сes:[edi] и изменяетesiиediна 1 / 2 / 4.
scasb/scasw/scasd. Сравниваетds:[esi] сal, изменяетesiна 1 / 2 / 4.
Билет 10 1) Файлы в паскале
Для работы с файлами в Паскале используются файловые переменные. Файловые переменные бывают трех типов:
var f1: file; { нетипизированные }
var f2: file of integer; { содержащие набор данных заданного типа, в данном случае integer }
var f3: text; { содержащие набор строк }
Нетипизированные файловые переменные могут содержать данные смешанных типов и в данном занятии не рассматриваются.
Работа с файлом любого типа разбивается на следующие этапы:
Связывание файловой переменной с конкретным файлом на диске. Выполняется процедурой Assign. Например,Assign(f3, ‘a:\data.txt’).
Открытие файла. Для открытия файла в режиме чтения используется процедура Reset(f), записи –Rewrite(f), добавления информации в конец –Append(f), последнее только для текстовых файлов.
Чтение и запись в файл. Осуществляется командами Read(f,var1,var2, …) иWrite(f,var1,var2, …) для типизированных файлов иReadLn(f,str1,str2, …) /WriteLn(f,str1,str2, …) для текстовых.
Завершение работы с файлом. Close(f).
При чтении данных из файла неизвестного размера полезно пользоваться функцией Eof(f), которая возвращаетTrueв случае, если достигнут конец файла. Типовой констркуцией для чтения файла является
while not eof(f) do begin
read(f, x);
…
end;