Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

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



 

- Subs определяет множество субъектов в состоянии s;

 

- Objs определяет множество объектов в состоянии s;

 

- authlist – множество, состоящее из элементов в форме (sub, nc), где sub принадлежит множеству Subs, nc принадлежит множеству Objs; существование элемента (sub1, nc1) в множестве отмечает то, что субъект sub1 имеет право на связь с компонентом сети nc1;

 

- connlist – множество, состоящее из элементов в форме (sub, nc). Это множество отражает текущее множество допустимых соединений в данном состоянии;

 

- subcls – Sub -> SCls.

 

- subcls – функция, приписывающая каждому субъекту его степень доверия;

 

- objcls – Obj -> PS(SCls), где PS обозначает мощность множества.

 

Objcls – функция, приписывающая каждому объекту один или более уровней классификации. Предполагается, что входные устройства и информационные блоки имеют единственный уровень классификации, тогда как хосты могут иметь несколько классификаций;

 

curcls – Sub -> Scls.

 

curcls – функция, задающая текущую степень доверия субъекта.

 

subrefobj - Sub -> PS(Obj).

 

subrefobj – описывает множество объектов, к которым субъект может обратиться в данном состоянии.

 

role: Users->PS(Rset)

 

role описывает множество ролей, для которых авторизирован пользователь.

 

currole: Users-> Rset

 

currole описывает текущую роль пользователя.

 

term: Users->IOD

 

term определяет терминал, с которого пользователь вошел в систему.

 

contents-IU->strings

 

contents – функция, которая отображает множество информационных блоков в множество строк. Она выделяет содержание информационных объектов.

 

Для nc, принадлежащее множеству IOD\/OD, view(nc) – множество упорядоченных пар{(x1,y1), (x2,y2),…(xn,yn)}, где yi отображается на компоненте nc. Каждое xi – информационный блок и yi – результат применения функции contents к xi.

 

Предположения безопасности.

 

Модель сети содержит следующие предположения безопасности:

 

1. На хостах сети существует надежная схема пользовательской аутентификации. Каждый пользователь и процесс в сети имеет уникальный идентификатор.

 

2. Только пользователь с ролью администратор Безопасности Сети может присваивать классы безопасности субъектам и компонентам сети и роли пользователям.

 

3. Все сущности сети имеют сравнимые классы безопасности.

 

4. Имеет место надежная передача данных по сети.

 

Безопасное состояние.

 

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



 

Фаза доступа к системе.

 

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

 

Ограничения при доступе к системе.

 

Предложение 1. Состояние s удовлетворяет ограничениям при доступе к системе, если для любого x, принадлежащего множеству Users:

 

- subcls(x) ≥ objcls(term(x));- subcls(x) ≥ curcls(x);

- currole(x) принадлежит role(x).

 

Фаза установление связи.

 

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

 

Ограничение связи.

 

Предложение 2. Состояние s удовлетворяет ограничением связи, если для любого (sub,nc), принадлежащего connlist:

 

- (sub, nc) принадлежит autlist;

 

- если nc не принадлежит OD, то curcls(sub) ≥ sup(oc1, oc2,… ocj), где objcls(nc)={oc1, oc2,… ocj};

 

- если nc принадлежит OD, то objcls(nc) ≥ subcls(sub).

 

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

 

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

 

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

 

Другие условия

 

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

 

2. Роль пользователя в данном состоянии должна принадлежать к списку ролей, к которым авторизован пользователь.

 

Теперь определим безопасное состояние.

 

Определение. Состояние s безопасно, если:

 

1. s удовлетворяет Ограничениям при доступе к системе.

 

2. s удовлетворяет Ограничениям связи.

 

3. Для любого z, принадлежещего множеству IOD\/OD, для любого x, принадлежащего (x, contents(x)), который принадлежит view(x), следует, что objcls(z) ≥ objcls(x).

 

4. Для любого z, принадлежащего Users currole принадлежит role(u).

 

Начальное состояние.

 

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

 

Операции.

 

Операция связи.

 

Операция connect(sub,nc) позволяет субъекту sub связаться с удалённым объектом сети nc.

 

Операции манипуляции информацией.

 

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

 

Операция получения доступа.

 

Операция bind(iobj, nc) позволяет субъекту sub получить доступ к информационному объекту iuobj на сетевом компоненте nc.

 

Операция передачи информации.

 

Операция transfer(iuobj1, nc1. iuobj2, nc2) позволяет субъекту sub добавить содержание информационного блока объекта iuobj1 на сетевом компоненте nc1 к содержанию информационного блока объекта iuobj2 на сетевом компоненте nc2.

 

Операция освобождения.

 

Операция unbind(sub, iuobj) позволяет субъекту sub освободить связь с объектом iuobj. До выполнения данной операции iuobj принадлежит subrefobj(sub), а после выполнения iuobj не принадлежит subrefobj(sub).

 

Другие операции.

 

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

 

Присвоение классификации сетевому компоненту.

 

Операция assign-sclass-ncobj(nc, scls) позволяет субъекту sub установить классификацию сетевому компоненту nc. То есть objcls(nc)={scls}. Данная операция применима только в том случае, когда компонент не используется. Более того, только Администратор Безопасности Сети авторизован для проведения данной операции.

 

Присвоение степени доверия пользователю.

 

Операция assign-sclass-user(usr,scls) позволяет субъекту sub установить степень доверия пользователю usr.

 

Присвоение пользователю текущей степени доверия.

 

Операция assign-curclass-user(usr,scls) позволяет субъекту sub установить текущую степень доверия пользователю usr.

 

Присвоение пользователю роли.

 

Операция assign-role-user(usr, rlset) позволяет субъекту sub установить пользователю usr множество ролей.

 

Присвоение пользователю текущей роли.

 

Операция assign-currole-user(usr,rlset) позволяет субъекту sub изменить текущую роль пользователя usr.

 

Установка списка доступа.

 

Операция setauthlist(al) позволяет субъекту установить список доступа.

 

Функции системы.

 

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

 

А: Sub x O x S →S

 

s’=A(sub, op, s) – результатирующее состояние после применения операции o, принадлежащей О, примененной субъектом sub, принадлежащим Sub, в состоянии s, которое принадлежит S.

 

О функции А говорят, что переход безопасен, если он удовлетворяет условиям, описанным в предыдущих пунктах.

 

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

 

Применение принципов биометрической идентификации личности в системах информационной безопасности привело к созданию биометрических систем идентификации-аутентификации (БСИ) при доступе к объектам информатизации (в частности, к персональным компьютерам). Пользователи таких объектов для получения доступа к ним должны пройти процедуру биометрической идентификации-аутентификации.

 

Качество работы БСИ характеризуется процентом ошибок при прохождении процедуры допуска. В БСИ различают ошибки трех видов:

 

FRR (False Reject Rate) или ошибка первого рода – вероятность ошибочных отказов авторизованному пользователю (ошибочный отказ «своему»);

FAR (False Accept Rate) или ошибка второго рода – это вероятность допуска незарегистрированного пользователя (ошибочный пропуск «чужого»);

EER (Equal Error Rates) – равная вероятность (норма) ошибок первого и второго рода.

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

 

Для экспериментальной проверки характеристики FRR системе последовательно n раз предъявляются биометрические характеристики пользователей, успешно прошедших регистрацию. Далее подсчитывается отношение числа n1 неудачных попыток (отказ системы в допуске) к общему числу попыток n. Указанное отношение дает оценку вероятности ошибки FRR. Оценка считается достоверной при значениях n ³ 1/FRR.

 

Для экспериментальной проверки характеристики FАR системе последовательно m раз предъявляются биометрические характеристики пользователей, не проходивших регистрацию. Далее подсчитывается отношение числа n2 удачных попыток (положительное аутентификационное решение) к общему числу попыток m. Указанное отношение дает оценку вероятности ошибки FАR. Оценка считается достоверной при значениях m ³ 1/FAR.

 

В БСИ по рукописному почерку ввод факсимильной подписи осуществляется со стандартного графического планшета в виде колебаний пера как функций времени. Графические планшеты бывают одно-, двух- или трехкоординатные. В зависимости от типа планшета колебания пера контролируются соответственно по одной продольной оси в виде функции x(t), по двум ортогональным осям в плоскости планшета в виде пары функций x(t), y(t) или, наконец, по трем ортогональным осям в виде тройки функций x(t), y(t), z(t). В трехкоординатном планшете колебания пера по вертикали (функция z(t)) контролируются в виде степени давления пера на плоскость планшета. Существуют также планшеты, контролирующие угол наклона пера к плоскости планшета. Число учитываемых параметров колебания пера определяет точность биометрических систем контроля допуска по рукописному почерку. Чем больше параметров учитывается, тем выше точность.

 

Для повышения точности БСИ по рукописному почерку прибегают к замене факсимильной подписи биометрическим паролем (любое слово, возможно даже бессмысленное, написание которого пользователь тщательно отрабатывает и хранит в тайне).

 

При вводе пользователем с графического планшета своей подписи (или парольного слова) индивидуальные особенности воспроизведения им этой подписи (парольного слова) отражены в частотной структуре функций x(t),y(t), z(t), и задача биометрического анализа сводится к извлечению этой информации.

 

Реализации функций x(t),y(t) можно трактовать как полигармонические процессы, протекающие в интервале времени Т, соответствующем времени воспроизведения подписи (пароля). Поэтому функции x(t), y(t) можно представить рядами Фурье с некоторым конечным числом членов разложения n:

 

где

 

основная угловая частота;

коэффициенты разложения;

период разложения.

Коэффициенты разложения вычисляются по формулам:

 

и являются искомыми информативными параметрами для идентификации.

 

Свойство линейности ортогональных функционалов позволяет осуществить операцию масштабирования вводимых подписей. Для определения неизвестного масштаба вводимой очередной подписи xa(t),ya(t) относительно первой введенной x1(t), y1(t) (как масштабного эталона) достаточно решить уравнения:

 

где mx, my – коэффициенты масштабирования.

 

Коэффициенты разложения вычисленные для членов разложения, в совокупности рассматриваются как N-мерный вектор информативных биометрических параметров (где N=4n):

 

Вектор V является исходным для последующей процедуры идентификации-аутентификации.

1.1. Защита на уровне расширений BIOS

При начальной загрузке ПЭВМ первичная активизация производится специальной программой процессора, которая хранится в памяти основного BIOS (базовая система ввода/вывода).

 

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

В состав BIOS входит типовая процедура поиска расширений BIOS (BIOS Extention). Расширение BIOS - это фрагмент исполняемого кода, который оформлен по следующим правилам:

Поиск расширений заключается в сканировании с шагом 512 байт области памяти с C000h до F000h с целью нахождения фиксированной двухбайтовой сигнатуры 55AAh.

После нахождения указанной сигнатуры анализируется следующий (третий, начиная с 55h) байт, который указывает область расширения BIOS в 512-байтных страницах (блоках).

Если в указанных позициях находится число, отличное от 0, то вычисляется арифметическая байтовая контрольная сумма от области памяти с байтом 55h на длину, указанную в третьем байте.

В случае совпадения этой суммы с нулем на четвертый (от первого байта 55h) байт передается управление.

Если в теле кода, на которое передано управление, встречается процедура REFT (с учетом состояния стека на момент вызова расширения), то произойдет возврат к основному BIOS, т.е. к процедуре дальнейшего поиска расширений.

Если фрагмент кода оформлен по заданным правилам, то на него передается управление в ходе поиска расширений BIOS.

 

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

 

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

 

Идентификация и аутентификация пользователя (возможно с использованием аппаратного носителя).

Запрет несанкционированной загрузки операционной системы с избранных носителей (например, CD-ROM).

Контроль неизменности или целостности аппаратной или программной компоненты ПЭВМ.

Первый расширенный BIOS, код которого будет выполнен, - это расширение, которое определяет видеокарта (VideoBIOS). Оно размещено по адресу C000h.

 

Программирование расширенного BIOS связано с решением ряда проблем:

 

Программирование целесообразно с использованием языка низкого уровня в связи с малым объемом ПЗУ и необходимостью использования специальных функций низкого уровня.

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

На этапе выполнения кода BIOS доступен только ряд сервисных функций, которые могут быть использованы для программирования на низком уровне, - это сервис клавиатуры, реализованный в обработчиках 9h и 16h прерываний, видеосервис (10h прерывание) и сервисы диска (13h прерывание).

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

Как можно реализовать расширения BIOS (возможность перепрограммирования ПЗУ)?

1.2. Пример программы расширения BIOS для троекратного запроса пароля до загрузки операционной системы

Рассмотрим пример программы расширения BIOS для парольной идентификации и аутентификации пользователей. Необходимо троекратно производить запрос пароля и при верном его наборе работа ПЭВМ продолжается, в противном случае - происходит перезагрузка ПЭВМ, и процедура повторяется заново.

 

Данная программа реализована на языке Ассемблер.

 

,MODEL

 

.CODE

 

; данный модуль троекратно производит запрос пароля

 

; при правильном наборе пароля ПЭВМ загружается

 

; при троекратном неправильном наборе пароля ПЭВМ перезагружается

 

; BIOS equ TRUE - данная переменная должна быть установлена

 

; для компиляции кода при записи его в ПЗУ

 

BIOS equ TRUE

 

; макрос запроса пароля

 

; заголовок макроса запроса пароля (pass_password)

 

pass_password MACRO

 

mov ch,10

 

mov cl,36

 

mov di,offset null_str

 

call Put_string

 

mov ch,11

 

mov cl,36

 

mov di,offset null_str

 

call Put_string

 

mov ch,12

 

mov cl,36

 

mov di,offset null_str

 

call Put_string

 

END MACRO

 

org 0

 

zamok:

; формирование сигнатуры расширения BIOS - 55AAh

 

; длина кода 8192 байта

 

; начало исполняемого кода

 

IFDEF BIOS

db 055h

db 0AAh

db 16

ENDIF

; переход к исполняемому коду

 

jmp zamok_start

include video.asm

 

; начало исполняемого кода

 

zamok_start:

 

; сохранение адреса кодового сегмента для его последующего вывода

 

; через последнее слово первой видеостраницы

 

mov ax,cx

mov bx,0B800h

mov es,bx

mov bx,4000

mov es:[bx],ax

IFDEF BIOS

 

; код для расширения BIOS, который переносит код в оперативную память

 

; по адресу 07C0:0 (в данный адрес далее считывается загрузчик ОС)

 

; в регистре ax запоминаем адрес оперативной памяти 07C0h

mov ax,07C0h

; данный адрес также запоминаем в регистре es

mov es,ax

; сохраняем регистр cx в стеке

 

push cx

; переписываем содержимое стека в регистр ds

 

pop ds

mov si,offset zamok

mov cx,offset ozu_group_c

sub cx,offset zamok

mov di,offset zamok

cld

rep movsb

; переход на метку m_go

 

; переход выполнен путем записи команды перехода (jmp) с аргументами в

 

; виде данных (сегмент 07C)

 

db 0EAh

dw offset m_go

dw 07C0h

; на эту точку произойдет переход, поскольку смещения в рамках

 

; сегмента не изменились, и переменные перенесены вместе с кодом

 

m_go:

 

; адрес сегмента изменился, извлекаем сохраненное значение из видеобуфера

 

mov bx,0B800h

mov es,bx

mov bx,4000

mov ax,es:[bx]

ENDIF

; копируем регистр cs в регистры ds и es через стек

 

push cs

pop ds

push cs

pop es

IFNDEF BIOS

push cs

pop ax

ENDIF

mov pzu_seg,ax

call clear_screen

mov pb_col,1Fh

; вывод титульного сообщения

 

mov di,offset title_string

mov ch,0

mov cl,60

mov ah,0Fh

call Put_string

; вывод значения сегмента памяти

 

mov ch,24

mov cl,10

mov ah,02h

mov di,offset num_mem

call Put_string

mov dx,pzu_seg

mov ah,dh

call Hex2Char

mov al,dl

call Put_byte

mov al,dh

call Put_byte

mov dx,pzu_seg

mov ah,dl

call Hex2Char

mov al,dl

call Put_byte

mov al,dh

call Put_byte

ws_is_pas:

 

; запрос пароля

 

mov ah,1Eh

promt_password

mov di,offset use_pas

; ввод пароля

 

mov ch,12

mov cl,42

; сравнение введенного пароля с эталонным

 

mov di,offset user_pas

mov si,offset_etal_pas

mov cx,9

cld

rep cmpsb

je ws_good_pas

; неверный пароль

 

mov di,offset bad_pas

mov ch,16

mov cl,44

mov ah,0Ch

call Put_string

mov ah,0

int 16h

mov di,offset null_str

mov ch,16

mov cl,32

mov ah,07h

call Put_string

; увеличение счетчика попыток

 

cmp c_oper,2

je ws_err_pas

inc c_oper

jmp ws_is_pas

ws_err_pas:

 

; пароль трижды введен неправильно

 

mov di,offset ill_pass

mov ch,16

mov cl,36

mov ah,0Сh

call Put_string

mov ah,0

int 16h

; аппаратная перезагрузка ПЭВМ при неправильном вводе пароля

 

IFDEF BIOS

db 0EAh

db 0FFF0h

dw 0F000h

ELSE

mov ah,4Ch

int 21h

ENDIF

; верный пароль

 

ws_good_pas:

 

call clear_screen

; очистка рабочих переменных, включая буфер клавиатуры и переменные,

 

; куда был считан пароль и с чем он был сравнен

 

push es

xor ax,ax

mov es,ax

cmp byte prt es:[417h],20h

mov byte prt es:[417h],0

pop es

; очистка рабочих переменных

 

mov di,offset ozu_group

mov cx,offset ozu_group_c

sub cx,offset ozu_group

clear_lock2:

 

mov byte prt [di],0

inc di

loop clear_lock2

; очистка буфера клавиш

 

push ex

xor ax,ax

mov es,ax

mov byte prt es:[41Ah],1Eh

mov byte prt es:[41Ch],1Eh

pop es

; возврат к основному BIOS

 

IFDEF

reft

ELSE

mov ax,04C00h

int 21h

ENDIF

; переменные ПЗУ

 

title_string db "Электронный замок ",0

num_mem db "Память = ",0

end_pass db " Введите пароль ",0

null_str db " ",0

good_pass db "Правильный пароль ",0

bad_pass db "Неправильный пароль ",0

ill_pass db "Рестарт ",0

; переменные ОЗУ

 

ozu_group:

 

id_string db "Замок"

user_pass db 32 dup (0)

etal_pas db "goodpas"

c_oper dw 0

pzu_seg dw 0

ozu_group_e:

end zamok

 

 

Далее приведен код процедур, которые используются в данной программе и описаны в файле video.asm.

 

; процедура вывода строки Put_string

 

 

; параметры

 

 

; регистр ah - цвет

 

 

; регистры es:di - строка (окончание /0)

 

 

; регистр cl - x - столбец

 

 

; регистр ch - y - столбец

 

 

Put_string proc near

\

; сохранение регистров

 

push ax bx dx si di es ds

mov dx,ax

 

; определение типа монитора

 

 

mov ah,0Fh

int 10h

cmp al,7

jnz color1

jmp mono1

mov ax,0B000h

color1:

mov ax,0B800h

mono1:

mov ds,axx

 

; вычисление смещения в буфере

 

 

push cx

xor ax,ax

push dx

mov al,ch

mov bx,160

mul bx

pop dx

xor ch,ch

add ax,cx

mov si,ax

mov ax,dx

pop cx

put_c:

mov al,byte prt es:[di]

cmp al,0

je put_e

mov word prt ds:[si],ax

add si,2

inc di

add cl,2

jmp put_c

put_e:

 

; окончание

 

pop ds es di si dx bx ex

ret

Put_string endp

 

; процедура вывода символа Put_byte

 

 

; ax - символ

 

 

; регистр cl - x - столбец

 

 

; регистр ch - y - столбец

 

 

; значение цвета - pb_col

 

 

Put_byte proc near

 

 

сохранение регистров

push ax bx dx si di es ds

mov dx,ax

 

; определение типа монитора

 

 

mov ah,0Fh

int 10h

cmp al,7

jnz color2

jmp mono2

mov ax,0B000h

color2:

mov ax,0B800h

mono2:

mov ds,axx

 

; вычисление смещения в буфере

 

 

push cx

xor ax,ax

push dx

mov al,ch

mov bx,160

mul bx

pop dx

xor ch,ch

add ax,cx

mov si,ax

mov ax,dx

pop cx

mov bx,word prt ds:[si]

mov bl,al

mov bh, byte prt cs:[pb_col]

mov word prt ds:[si],bx

add cl,2

 

; окончание

 

pop ds es di si dx bx ax

ret

pb_col db 0

Put_byte endp

 


Дата добавления: 2015-08-27; просмотров: 117 | Нарушение авторских прав







mybiblioteka.su - 2015-2024 год. (0.119 сек.)







<== предыдущая лекция | следующая лекция ==>