- •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) Условные переходы
Команда cmpимеет 2 операнда и предназначена для их сравнения. Результат сравнения помещается в регистр флагов и может быть использован командамиj*. Командыj* имеют 1 операнд – имя метки, к которой следует перейти, если выполняется заданное именем команды условие.
ja– перейти если больше (безннаковое сравнение)
jb– перейти если меньше (беззнаковое сравнение)
jg– перейти если больше (знаковое сравнение)
jl- перейти если меньше (знаковое сравнение)
je– перейти если равно
Если после jпоставить “n”, то получится отрицание, например:jne– если не равно,jna– если не больше. Если в конец команды дописать “e’”, то это будет иметь смысл «или равно»:jae– больше или равно,jle– меньше или равно.
3) Массивы и строки в паскале
Массив– это тип данных, описывающий упорядоченный набор однотипных элементов.
Var имя_массива:Array [первый_индекс..последний_индекс] of тип;
Строки Строка (строковая переменная) представляет собой набор упорядоченных символов. Для задания строковой переменной используется тип string:
program StringDemo;
var s: string;
var s64: string[64];
var c: char;
Над строками работают следующие операции: выбор сивола [] (по аналогии с массивом, символы имеют тип char и всегда нумеруются с 1) и конкатенация (сложение). Также при работе со строками полезно знать следующие встроенные функции и процедуры:
Функция Length(s) – получает текущую длину строки
Функция Copy(s, pos, len) – получает фрагмент данной строки. Фрагмент состоит из символов, начиная с pos, в количестве len. Copy(‘12345’, 2, 3) = ‘234’.
Функция Pos(s1, s2) – ищет строку s1 в строке s2, возвращает номер первого вхождения, либо 0. Pos(‘def’, ‘abcdefdef’) = 4. Pos(‘foo’, ‘bar’) = 0.
Функция PosEx(s1,s2,offs) – ищет строкуs1 в строкеs2 начиная с символа с номеромoffs.Pos(‘def’,’abcdefdef’, 5) = 7.
Процедура Insert(s1, s2, pos) – вставляет строку 2 в строку 1 начиная с позиции pos. a: = ‘13’; Insert(a, ‘2’, 2); даёт a = ‘123’.
Процедура Delete(s, pos, len) – удаляет из строки s len символов, начиная с pos-того. a := ‘123’; Delete(a, 2, 1); даёт a = ‘13’.
Функция Ord(c) – возвращает кодASCIIуказанного символа.Ord(‘0’) = 48.
Функция Chr(n) – возвращает символ, соответствующий указанномуASCIIкоду.Chr(87) = ‘W’.
Функции OrdиChrполезны при переводе символов ‘0’ – ‘9’ в значения 0 – 9, и наоборот.
Билет 14
1) Арифметические операции в С:сложение +, вычитание -, умножение *, деление /, остаток %. Оператор присваивания «=».
Операторы сравнения: ==, !=, <, <=, >, >= и логические операции && (AND), || (OR), ! (NOT).
2) Флаги
Команда cmp(отличающаяся отsubтолько тем, что не сохраняет результат) и математические операции влияют на флаги процессора.
ZF: результат = 0
CF: при сложении или вычитании произошел перенос из старшего двоичного разряда, например
Для проверки флага используются команды условного перехода jcc:
jz label ; перейти если ZF = 0
jc label ; перейти если CF = 0
Для других флагов команды аналогичны (OFjo,PFjp,AFja). Для управляющих флагов (IF,DF) таких команд нет. CF – флаг переноса; AF – флаг четности; ZF – флаг вспомогательного переноса; SF – флаг знака; TF – флаг трассировки; IF – флаг разрешения прерывания; DF – флаг направления; OF – флаг переполнения.