Читайте также: |
|
Классификация классов:
1) Сетевая ОС – это совокупность всех ОС локальной сети или операционная система, предоставляющая функции сетевого доступа.
2) Распределенная ОС – это ОС совокупности вычислительных систем локальной сети. Пользователю может быть не известно, на каком из узлов сети хранятся обрабатываемые им данные и на каком из узлов выполняются его процессы. В сетевой ОС пользователь это контролирует.
Сетевые ОС:
1) Одноранговые – ОС узла одноранговой сети.
Одноранговая сеть – это локальная сеть, в которой все узлы равны и одинаково используют клиентскую и серверную часть своей ОС.
2) С выделенными серверами – в которой присутствуют клиентские узлы и серверные узлы со специальными серверами ОС.
Серверная отличается от одноранговой поддержкой более производительного оборудования, большим количеством одновременных сетевых подключений и процессов, сетевых сервисов, продвинутыми возможностями администрирования и централизованного удаленного администрирования.
АСНОВА СЛОВА
Аснова – частка слова без канчатка.
вялікі грыб вялікага грыба вялікаму грыбу вялікім грыбам аб вялікім грыбе |
Ассемблер: памятка программиста
Это скорее памятка, которая рассчитана на людей, знакомых с C++ или другим зыком программирования высокого уровня, которые хотят быстро изучить ассемблер для написания высокоэффективных алгоритмов в составе своих программ или для иных целей (например для изучения программ в отладчике/дизассемблере).
Ассемблер - это язык низкоуровневого программирования, где каждый оператор соответствует команде процессора. Рассмотрим синтаксис этого языка.
Каждый оператор записывается на новой строке. Возможен пропуск строк и вставка пробельных символов, они просто игнорируются. Комментарии должны начинаться символом '; ' и заканчиваться символом новой строки.
; комментарий на отдельной строке
var1db "b"; переменная var1 из 1го байта со значением 'b'
db "abcd"; просто следующий набор байтов (строка)
var2dw 121; переменная var2 из 2х байт со значением 121
var3dd -0xFFFF; переменная var3 из 4х байт со значением -FFFF (16-чная система)
arraydb 99 dup 0;массив array из 99 байтов со значениями 0
v_64dq?; переменная v_64 из 8 байтов, значение не определено
array2 db 20 dup (5 dup "a");строка array2 из 100 символов 'a' (20*5*1)
;Ключевое слово DUP в этой псевдокоманде означает повторить (duplicate)
В данном примере использовались директивы ассемблера, резервирующие память, а именно:
db (DEFINE BYTE) - 8 бит (1 байт);
dw (DEFINE WORD) - 16 бит (2 байта);
dd (DEFINE DOUBLEWORD) - 32 бита (4 байта);
dq (DEFINE QUADROWORD) - 64 бита (8 байт)
dt (DEFINE TEN BYTE) – 80 бит (10 байт).
В операторах могут использоваться как ячейки памяти, так и регистры, которые представляют собой ячейки быстродействующей памяти в процессоре. Основные регистры - это eax, ebx, ecx и edx, также часто используются регистры ebp, esi, edi и esp, каждый по 32 бита, причём младшие 16 бит именуются без префикса 'e', а младшие и старшие байты из этих 16 бит именуются суффиксами ' l ' и ' h ' соответственно:
(ax - 0-15,биты eax,al - 0-7 биты ax, ah - 8-15 биты ax).
Также в процессоре имеется регистр флагов, биты которого устанавливаются при выполнении команд. Наиболее часто используются флаги o, c, s, d и z. Флаг o устанавливается, если знаковый результат вне диапазона (переполнение), c - при беззнаковом переполнении и используется как флаг переноса. Во всех операциях сдвигов и вращений в него копируется выталкиваемый или переносимый бит.
Флаг s означает отрицательный результат, а флаг z - нулевой.
Эти два флага устанавливаются всеми арифметическими и логическими
операциями кроме умножения, деления и вращения. Флаг d устанавливает
направление приращения указателей в строковых операциях.
Основные операторы можно разделить на несколько основных групп:
- операторы пересылки;
- логических и арифметических операций;
- сравнения и условных переходов;
- безусловных переходов и управления флагами.
mov x,y
Пересылка y в x, например:
mov ax, 0xFF
mov bx, ax
mov var_2, bx
lea x,y
Загружает в x адрес y, почти тоже, что mov x, offset y; или mov x, y; если y задано как сумма регистров в квадратных скобках, например:
lea eax, var_1
lea ebx, [ebp+esi]
add x,y
Сложение x=x+y, например:
mov ax, -1
add ax, 10;ax=9
sub x,y
Вычитание x=x-y, например:
mov ax,10
mov bx,100
sub bx, ax;bx=90
inc x
Увеличение x на 1, например:
mov var_1, 1
inc var_1;var_1=2
dec x
Уменьшение x на 1, например:
mov var_2, 0xFF
dec var_2; var_2=0xFE
neg x
Арифм. инверсия x=-x, например:
mov ax, 0xFF
mov bx, 0xFF
neg ax
add ax, bx;ax=0
mul x / imul x
Умножение на x
Операнд | Множитель | Результат |
1 байт | al | ax |
2 байта | ax | dx:ax |
4 байта | eax | edx:eax |
При этом под dx:ax и edx:eax понимается, что старшая часть результата помещается в dx/edx, а младшая - в ax/eax.
Команда imul может работать с отрицательными (знаковыми) числами.
Пример:
varx dw 10
mov ax, 65025;ax=255*255
mul varx
;AX=60426 DX=9, 60426+9*2^16=650250=255*255*10
div x / idiv x
Деление на x
Операнд | Делимое | Частное | Остаток |
1 байт | ax | al | ah |
2 байта | dx:ax | ax | dx |
4 байта | edx:eax | eax | edx |
При этом под dx:ax и edx:eax понимается, что старшая часть делимого берётся из dx/edx, а младшая - из ax/eax. Команда idiv может работать с отрицательными (знаковыми) числами, при этом знак остатка равен знаку делимого. Пример:
mov ax,0
mov dx,1;dx:ax=256
div 3
;AX=85, DX=1, 85*3+1=256
Логические и поразрядные операции
Использование | Название | Эквивалент С |
and x,y | "логическое и" | x=x&y |
or x,y | "логическое или" | x=x|y |
xor x,y | "исключающее или" | x=x^y |
not x | "логическое не" | x=!x |
shl x,(cl,[0-31]) | "логический сдвиг влево" | x<<[0-31] |
shr x,(cl,[0-31]) | "логический сдвиг вправо" | x>>[0-31] |
sal x,(cl,[0-31]) | "арифмет. сдвиг влево" | signed x<<[0-31] |
sar x,(cl,[0-31]) | "арифмет. сдвиг вправо" | signed x>>[0-31] |
rol x,(cl,[0-31]) | "логическое вращение влево" | x=_rotl(x,[0-31]) |
ror x,(cl,[0-31]) | "логическое вращение вправо" | x=_rotr(x,[0-31]) |
rcl x,(cl,[0-31]) | "арифмет. вращение влево" | ?????????? |
rcr x,(cl,[0-31]) | "арифмет. вращение вправо" | ?????????? |
test x,y | "тест на ноль лог. И x, y" | if(x&y==0) |
Команды переходов и сравнений
cmp x,y
Сравнивает x и y
test x или test x, x
Проверяет на 0
j<xx> x
Условный переход на адрес x, если:
Использование, Ключ, Условие или флаг
Использование | Ключ | Условие или флаг |
ja x | Above | > беззнаковые числа |
jae x | Above or Equal | >= беззнаковые числа |
jb x | Below | < беззнаковые числа |
jbe x | Below or Equal | <= беззнаковые числа |
jc x | Carry | c==1 (shr,shl,sar,sal,ror,rol…) |
jcxz x | CX is Zero | cx==0 |
je x | Equal | == |
jz x | Zero | ==0 |
js x | Sign | <0 |
jg x | Greater | > числа со знаком |
jge x | Greater or Equal >= | числа со знаком |
jl x | Less | < числа со знаком |
jle x | Less or Equal | <= числа со знаком |
Для каждого условия <xx> есть обратное условие < <n>xx>, например jnbe - переход по условию "не (меньше либо равно)", т.е. "больше". Пример применения:
mov ax,1
dec ax
test ax
jnz st1;>---------------------------*
inc ax;если ax==0 то ax++ |
st1:;обозначение адреса перехода |
mov bx,10
mul bx;<---------------------------*
JMP X
Условный переход на x, например:
jmp noblablabla
bla db "blablablablablablabla"
noblablabla:
mov eax, offset bla
offset
Помещает в регистр адрес строки, например:
01
02
03 mov DX, offset Message
...
11
12 Message db 'Hello'
13
, то в строке 03 в регистр DX будет помещено число 12.
Нужно это, чтобы не вычислять этот адрес самому. Все делает транслятор.
call x
Вызов функции x с последующим продолжением операций, например:
call function
mov ax,bx;просто так
ret x
Возврат из функции, при этом будет снято x байтов стека.
push x
Положить на вершину стека x, например:
mov ax, 10
push ax
push 15
;Как указатель стека используется регистр sp/esp.
pop x
Снять с верхушки стека и положить в x, например:
pop ax;ax=15
pop bx;bx=10
Команды управления флагами:
Использование | Действие | Название |
clc | с=0 | сброс флага переноса |
cld | d=0 | сброс флага направления |
stc | c=1 | установка флага переноса в 1 |
std | d=1 | установка флага направления в 1 |
Дата добавления: 2014-12-19; просмотров: 125 | Поможем написать вашу работу | Нарушение авторских прав |
<== предыдущая лекция | | | следующая лекция ==> |
ВВОД-ВЫВОД | | | Лабораторная работа №2 |