Студопедия
Главная страница | Контакты | Случайная страница

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

Расширенные операции пересылки данных

Читайте также:
  1. Cохранение данных в двоичных файлах.
  2. CТРУКТУРЫ ДАННЫХ И АЛГОРИТМЫ
  3. I - операции с подакцизными товарами, совершаемые производителями этих товаров;
  4. I)Однофакторный дисперсионный анализ (выполняется с применением программы «Однофакторный дисперсионный анализ» надстройки «Анализ данных» пакета Microsoft Excel).
  5. MEDLINE - это база данных, которая содержит...
  6. O Операции над процессами.
  7. Активные операции
  8. Активные операции (А).
  9. Активные операции коммерческих банков
  10. Активные операции коммерческих банков. Оценка структуры активных операций банка с позиции ликвидности, доходности и риска банка. (20 баллов).

Рассмотрим процесс пересылки данных, которые имеют длину более двух байт, из одной области памяти непосредственно в другую область. Для этого проанализируем программу, которая пересылает данные из четырёхбайтового поля NAME1, находящегося в сегменте данных, в поле NAME2, находящееся также в сегменте данных.

 

TITLE EXMOVE

;-------------------------------------------

STACKSG SEGMENT PARA STACK ‘Stack’

DW 32 DUP(?)

STACKSG ENDS

;-------------------------------------------

DATASG SEGMENT PARA ‘Data’

NAME1 DB ‘ABCD’

NAME2 DB 4 DUP (‘ ‘)

DATASG ENDS

;-------------------------------------------

CODESG SEGMENT PARA ‘Code’

BEGIN PROC FAR

ASSUME CS:CODESG, DS:DATASG, SS:STACKSG

PUSH DS

SUB AX, AX

PUSH AX

MOV AX, DATASG

MOV DS, AX

CALL MOVE

RET

BEGIN ENDP

; расширенная пересылка, использующая команду цикла LOOP

;--------------------------------------------------

MOVE PROC

LEA SI, NAME1

LEA DI, NAME2

MOV CX, 4

M10: MOV AL, [SI]

MOV [DI], AL

INC DI

INC SI

LOOP M10

RET

MOVE ENDP

CODESG ENDS

END BEGIN

 

Процедура BEGIN инициализирует сегментные регистры и затем вызывает процедуру MOVE. Процедура MOVE пересылает содержимое поля NAME1 в поле NAME2. Так как каждый раз пересылается только один байт, то процедура начинает с самого левого байта в поле NAME1 и в цикле пересылает затем все остальные байты. Для продвижения в полях NAME1 и NAME2 в регистр СХ заносится значение 4, а регистры SI и DI используются в качестве индексных. Две команды LEA загружают относительные адреса полей NAME1 и NAME2 в регистры SI и DI. Квадратные скобки в командах MOV означают, что для доступа к памяти используется адрес в регистре, указанном в квадратных скобках. Команды INC увеличивают значения соответствующих регистров.

 

 

ЭКРАННЫЕ ОПЕРАЦИИ

Как известно, большинство программ требует ввода данных с клавиатуры, диска или модема и обеспечивают вывод данных в удобном формате на экран, принтер или диск. Данные, предназначенные для вывода на экран и ввода с клавиатуры, имеют ASCII-формат.

Для выполнения ввода и вывода используется команда INT (прерывание). Существуют разнообразные способы указать системе, какое действие (ввод или вывод) и на каком устройстве необходимо выполнить. Все необходимые экранные и клавиатурные операции можно выполнить с помощью команды INT 10H, которая передаёт управление непосредственно в BIOS. Для выполнения некоторых более сложных операций существует прерывание более высокого уровня INT 21H, которое сначала передаёт управление в DOS. При использовании в программе команды INT необходимо определить сегмент стека достаточно большим для записи в него значений регистров.

 




Дата добавления: 2014-12-19; просмотров: 88 | Поможем написать вашу работу | Нарушение авторских прав




lektsii.net - Лекции.Нет - 2014-2025 год. (0.005 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав