русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Краткие теоретические сведения


Дата добавления: 2014-11-28; просмотров: 607; Нарушение авторских прав


 

Для подпрограмм, предназначенных для вызова из Си-программ, необходимо выполнять соглашения о характеристиках сегментов, модели памяти, правилах передачи параметров и использовании регистров.

Оформленная таким образом ассемблерная подпрограмма имеет вид

.MODEL SMALL,С

func PROC NEAR USES SI DI, a:WORD, b:WORD

LOCAL X:WORD, y:WORD

; текст подпрограммы

RET

func ENDP

Ассемблерной функции func соответствует следующий прототип в Си-программе:

 

int func(int a, int b);

 

В тексте программы в качестве операндов можно использовать имена локальных переменных и передаваемых параметров. По команде RET автоматически генерируются команды восстановления регистров SI, DI, ВР, SP и затем выполняется возврат содержимого регистра AX в вызывающую программу.

В ассемблерной процедуре можно свободно использовать регистры AX, BX, CX, DX. Остальные регистры должны быть сохранены и восстановлены.

Для обработки строковых данных ассемблер имеет пять команд обработки строк: MOVS – переслать один байт или одно слово из одной области памяти в другую; LODS – загрузить из памяти один байт в регистр AL или одно слово в регистр AX; STOS – записать содержимое регистра AL или AX в память; CMPS – сравнить содержимое двух областей памяти, размером в один байт или одно слово; SCAS – сравнить содержимое регистра AL или AX с содержимым памяти. Префикс REP позволяет этим командам обрабатывать строки любой длины.

Флаг направления DF = 0 (устанавливается командой CLD) задает направление слева направо, а DF = 1 (устанавливается командой STD) – справа налево.

В следующем примере выполняется пересылка 20 байт из STRING1 в STRING2:

 

STRING1 DB 20 DUP('*')

STRING2 DB 20 DUP(")

CLD ;Сброс флага DF

MOV СХ, 20 ;Счетчик на 20 байт

LEA DL, STRING2 ; Адрес области "куда"



LEA SI, STRING1 ;Адрес области "откуда"

REP MOVSB ;Переслать данные

Таблица 1

Передача строк в функцию Передача целых значений Действия над строками Формирование целого результата Возврат целого результата

 

Окончание табл. 1

 

Передача строк в функцию Передача целых значений Действия над строками Формирование целого результата Возврат целого результата

Таблица 2

Передача строк в функцию Передача целых значений Действия над строками Формирова-ние целого результата Возврат целого результата

 

Окончание табл. 2

 

Передача строк в функцию Передача целых значений Действия над строками Формирование целого результата Возврат целого результата

Таблица 3

Передача строк в функцию Передача целых значений Действия над строками Формирование целого результата Возврат целого результата

 

Окончание табл. 3

 

Передача строк в функцию Передача целых значений Действия над строками Формирование целого результата Возврат целого результата

Таблица 4

Передача строк в функцию Передача целых значений Действия над строками Формирование целого результата Возврат целого результата

 

Окончание табл. 4

 

Передача строк в функцию Передача целых значений Действия над строками Формирование целого результата Возврат целого результата

 

Таблица 5

Передача строк в функцию Передача целых значений Действия над строками Формирование целого результата Возврат целого результата

Окончание табл. 5

 

Передача строк в функцию Передача целых значений Действия над строками Формирование целого результата Возврат целого результата

 

Таблица 6

 

Передача строк в функцию Передача целых значений Действия над строками Формирование целого результата Возврат целого результата

Окончание табл. 6

 

Передача строк в функцию Передача целых значений Действия над строками Формирование целого результата Возврат целого результата

 

Таблица 7

Передача строк в функцию Передача целых значений Действия над строками Формирование целого результата Возврат целого результата

Окончание табл. 7

 

Передача строк в функцию Передача целых значений Действия над строками Формирование целого результата Возврат целого результата
                   

 

Таблица 8

Передача строк в функцию Передача целых значений Действия над строками Формирование целого результата Возврат целого результата

Окончание табл. 8

 

Передача строк в функцию Передача целых значений Действия над строками Формирование целого результата Возврат целого результата

 

ЛИТЕРАТУРА

 

1. Керниган В., Ритчи Д. Язык программирования Си. – М.: Мир, 1988.

2. Романовская и др. Программирование в среде Си для ПЭВМ ЕС. – М.: Финансы и статистика, 1992.

3. Подбельский В.В., Фомин С.С. Программирование на языке Си. – М: Финансы и статистика, 2000.

4. Абель П. Язык Ассемблера для IBM PC и программирования. – М: Высш. шк., 1992.

 

 

 
 

 




<== предыдущая лекция | следующая лекция ==>
К выполнению курсовой работы | 


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.461 сек.