Книжный каталог

Assembly Language Programming With 8051 MICROCONTROLLER

Перейти в магазин

Сравнить цены

Описание

This book is designed for undergraduate students to lay a foundation for assembly language programming with 8051 micro-controller. It contains basic principles, pin description, format of special function registers, instruction set and its classification. The main focus of this book is to inculcate the interest for assembly language programming. A systematic, step by step approach is used to understand the assembly language programming. This book contains six chapters and two appendixes.Each chapter includes programs (written in assembly language),review questions and exercise questions.

Характеристики

  • Вес
    501
  • Ширина упаковки
    1
  • Высота упаковки
    1
  • Глубина упаковки
    1
  • ISBN
    9783659865961
  • Год выпуска
    2016
  • Количество страниц
    72
  • Язык издания
    Английский

Сравнить Цены

Предложения интернет-магазинов
Vincent Mahout Assembly Language Programming. ARM Cortex-M3 Vincent Mahout Assembly Language Programming. ARM Cortex-M3 7238.5 р. litres.ru В магазин >>
1pcs 1set PIC K150 ICSP Programmer USB Automatic Programming Develop Microcontroller +USB ICSP cable 3237 1pcs 1set PIC K150 ICSP Programmer USB Automatic Programming Develop Microcontroller +USB ICSP cable 3237 290.35 р. Aliexpress VIP В магазин >>
Dogan Ibrahim Using LEDs, LCDs and GLCDs in Microcontroller Projects Dogan Ibrahim Using LEDs, LCDs and GLCDs in Microcontroller Projects 8324.79 р. litres.ru В магазин >>
PICKIT3 PIC KIT3 PICKIT 3 Programmer Offline Programming Simulation PIC Microcontroller Chip Monopoly PICKIT3 PIC KIT3 PICKIT 3 Programmer Offline Programming Simulation PIC Microcontroller Chip Monopoly 829.09 р. Aliexpress VIP В магазин >>
PICKIT3 PIC KIT3 PICKIT 3 Programmer Offline Programming Simulation PIC Microcontroller Chip PICKIT3 PIC KIT3 PICKIT 3 Programmer Offline Programming Simulation PIC Microcontroller Chip 584.09 р. Aliexpress VIP В магазин >>
Barry Burd A. Beginning Programming with Java For Dummies Barry Burd A. Beginning Programming with Java For Dummies 2029.76 р. litres.ru В магазин >>
Jeff Duntemann Assembly Language Step-by-Step. Programming with Linux Jeff Duntemann Assembly Language Step-by-Step. Programming with Linux 4399.28 р. litres.ru В магазин >>

Статьи, обзоры книги, новости

Просмотр темы - 8051 микроконтроллеры начинающим - вопросы и ответы

roboforum.ru

Технический форум по робототехнике.

8051 микроконтроллеры начинающим - вопросы и ответы

Разработка и изготовление печатных плат для модулей.

8051 микроконтроллеры начинающим - вопросы и ответы

avr123.nm.ru » 10 фев 2007, 03:39

avr123.nm.ru » 10 фев 2007, 19:50

Программатор и отладчик "FlashBlaster JTAG programming"

для 8051 микроконтроллеров Silabs.com

danil » 25 июл 2007, 14:06

я освоил за месяц, а через 3 месяца уже было первое устройство на 2 контроллерах, работающих в паре

Vooon » 25 июл 2007, 17:54

согласен, хотя у меня есть только 2ая и 3я части.

правда я так и не освоил mcs-51 - купил книжки когда еще не имел малейших представлений о том, что такое МК.

в итоге стал пользовать avr совмесно с Си компиляторами (асм таки до сих пор плохо знаю :oops: )

сейчас правда перехожу с CV на AVR-GCC - пока не написал ни одной программы с новым компилятором.

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

avr123.nm.ru » 25 июл 2007, 19:28

avr123.nm.ru » 15 авг 2007, 20:19

три 16-битных таймера/счетчика общего назначения с тремя входами остановки таймера,

сторожевой таймер, и

49 источников прерывания использующих 16 векторов прерывания.

Re: 8051 микроконтроллеры начинающим - вопросы и ответы

valery559 » 05 янв 2008, 00:04

Подскажите, чем лучше программировать AT89S53 ? Мне бы хотелось работать на Ассемблере или Бейсике. Можно ли пользоваться в моем случае BASCOMом в моем случае. Он мне симпатичен.Извините, если примитивно излагаю свой вопрос.

Re: 8051 микроконтроллеры начинающим - вопросы и ответы

avr123.nm.ru » 05 янв 2008, 01:38

Re: 8051 микроконтроллеры начинающим - вопросы и ответы

avr123.nm.ru » 12 апр 2008, 19:01

EdGull » 12 апр 2008, 20:33

я освоил за месяц, а через 3 месяца уже было первое устройство на 2 контроллерах, работающих в паре

Могу кому нибуь подарить 1 и 2 том.

Re: 8051 микроконтроллеры начинающим - вопросы и ответы

Я' РОБОТ » 30 июн 2008, 12:25

Кафедра: Автоматики и Информатики в технических системах

Спец.: "ЭЛЕКТРОПРИВОД И АВТОМАТИКА ПРОМЫШЛЕННЫХ УСТАНОВОК И ТЕХНОЛОГИЧЕСКИХ КОМПЛЕКСОВ"

Re: 8051 микроконтроллеры начинающим - вопросы и ответы

avr123.nm.ru » 30 июн 2008, 12:27

Re: 8051 микроконтроллеры начинающим - вопросы и ответы

Vooon » 02 фев 2009, 13:33

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5

Источник:

roboforum.ru

Программирование микроконтроллеров MCS-51 - Книга, страница 18

Программирование микроконтроллеров MCS-51

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

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

10. Провести мысленный эксперимент по определению работоспособности алгоритма в реальной среде функционирования микроконтроллера.

Практика разработки прикладного программного обеспечения для микропроцессорной техники и, в частности, для микроконтроллеров семейства MCS-51 показала, что применение описанной процедуры проектирования алгоритмов, базирующейся на декомпозиции и структурном программировании, позволяет уверенно получать работоспособные МК-программы.

Этап "от исходной МК-программы к загрузочному модулю" предусматривает получение машинных (объектных) кодов МК-программы, настроенных на определенное адресное пространство памяти программ микроконтроллера. Этот этап поддерживается специальными программными средствами, функционирующими на базе широко распространенных персональных компьютеров (ПК). Указанные средства, а точнее кросс-средства (т.к. системы команд микроконтроллера 8051 и микропроцессора ПК не совпадают) обычно включают кросс-ассемблер и кросс-редактор связей.

Кросс-ассемблер X8051 работает в среде операционной системы MSDOS (версия не ниже 3.30) и дает пользователю возможность преобразовывать исходные модули МК-программ, написанные на языке АСМ51 и содержащие не более 30000 строк, в эквивалентные объектные модули, которые впоследствии могут быть скомпонованы с другими объектными модулями и настроены на определенное адресное пространство памяти программ МК кросс-редактором связей Link.

Основные функции кросс-ассемблера X8051:

- синтаксический и семантический контроль исходного модуля

- преобразование (трансляция) исходного текста в объектный код;

- формирование листинга трансляции.

Работа кросс-ассемблера начинается с запуска файла x8051.exe и ведется в диалоговом режиме. Сразу после запуска указанного файла на экран выдается заголовок, а затем запрос на вывод листинга с указанием ключей:

Listing Destination (N, T, D, E, L, P, =N):

T - выводить на терминал;

D - выводить на диск;

E - выводить только ошибки;

L - выводить листинг (вкл./выкл.);

P - выводить на принтер;

Если ответить "D" или "P", то задается вопрос - выводить ли таблицу перекрестных ссылок:

Generate Cross Reference ? (Y/N =N):

где Y - да, N - нет.

Если ответить "L" (вывод листинга контролируется директивами LIST, NLIST языка АСМ51), то выводится дополнительное сообщение:

LIST ON/OFF Listing Destination (T, D, P, =T):

где значение ключей остается прежним.

Если ответить "E" (в листинг будут выводиться только ошибки), то выводится дополнительное сообщение:

Error Only Listing Destination (T, D, P, =T):

где значение ключей остается прежним.

Затем запрашиваются имена входного и выходного файлов:

Если расширение входного файла (исходного модуля МК-программы) не указано, то оно по умолчанию принимается равным .asm. Расширение выходного файла (объектного модуля МК-программы) по умолчанию равно .obj. Если не указано имя выходного файла, то ему присваивается имя входного файла с расширением .obj. Файл листинга трансляции имеет расширение .lst. Таблица перекрестных ссылок, в случае ее вывода, заносится в файл листинга.

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

Пример листинга трансляции (файл prim.lst):

2500 A.D. 8051 Macro Assembler - Version 4.02a

Input Filename: prim.asm

Output Filename: prim.obj

1 0000 75 F0 64 BINBCD MOV B,#100

2 0003 84 DIV AB

3 0004 F9 MOV R1,A

4 0005 74 0A MOV A,#10

5 0007 C5 F0 XCH A,B

6 0009 84 DIV AB

7 000A C4 SWAP A

8 000B 25 F0 ADD A,B

9 000D F8 MOV R0,A

Lines Assembled: 10 Assembly Errors: 0

Здесь крайний слева (первый) столбец содержит номера строк, а второй и третий столбцы указывают соответственно адреса ячеек памяти программ микроконтроллера и коды команд, используемых в МК-программе.

Кросс-редактор связей Link работает в среде операционной системы MSDOS (версия не ниже 3.30) и дает пользователю возможность объединять до 20 сформированных кросс-ассемблером X8051 объектных модулей, настраивая их на выполнение с определенного адреса. При этом создается загрузочный модуль МК-программы.

Основные функции кросс-редактора связей Link:

- настройка объектных модулей на заданное адресное пространство памяти программ микроконтроллера 8051;

- разрешение внешних ссылок;

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

- выявление ошибок редактирования;

- формирование листинга редактирования в виде карты загрузки.

Работа кросс-редактора связей начинается с запуска файла link.exe и ведется в диалоговом режиме. Сразу после запуска указанного файла на экран выдается заголовок, а затем запрашивается имя входного файла и значение смещения объектного модуля, входящего в этот файл:

Enter Offset For 'Code':

Эти сообщения повторяются до тех пор, пока все входные файлы не будут перечислены. Расширение входных файлов по умолчанию принимается равным .obj. Шестнадцатеричное значение смещения прибавляется к начальному адресу объектного модуля МК-программы, устанавливаемому, как известно, директивой ORG.

После того, как все входные файлы перечислены, на запрос имени следующего входного файла надо нажать клавишу "Enter" и на экране появится запрос имени выходного файла (загрузочного модуля):

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

После нажатия клавиши "Enter" на экране появится запрос имени файла библиотеки:

Ответ из нажатия клавиши "Enter" завершает ввод имен библиотечных файлов, расширение которых по умолчанию принимается равным .lib.

В следующем сообщении запрашиваются ключи вывода результатов работы кросс-редактора связей:

Options (D, S, A, M, Z, X, H, E, T, 1, 2, 3, =Default):

D - вывод на диск выходного файла в шестнадцатеричном формате INTEL с расширением .hex (по умолчанию) и файла с расширением .map, содержащего ошибки редактирования, таблицу общих символических имен в алфавитном порядке, карту загрузки;

S - вывод на диск выходного файла в шестнадцатеричном формате INTEL с расширением .hex (по умолчанию) и файла с расширением .sym, содержащего таблицу общих символических имен (длина имени 32 знака);

A - вывод на диск выходного файла в шестнадцатеричном формате INTEL с расширением .hex (по умолчанию) и файла с расширением .sym, содержащего таблицу общих символических имен (длина имени 10 знаков);

M - вывод на диск выходного файла в шестнадцатеричном формате INTEL с расширением .hex (по умолчанию) и файла с расширением .sym в формате MICROTEK, содержащего таблицу символических имен. При этом в исходный модуль МК-программы должна быть включена директива SYMBOLS;

Z - вывод на диск выходного файла в шестнадцатеричном формате INTEL с расширением .hex (по умолчанию) и файла с расширением .sym в формате ZAK, содержащего таблицу символических имен. При этом в исходный модуль МК-программы должна быть включена директива SYMBOLS;

X - не используется;

H - вывод на диск выходного файла с расширением .hex (по умолчанию) в шестнадцатеричном формате INTEL;

E - вывод на диск выходного файла с расширением .hex (по умолчанию) в расширенном шестнадцатеричном формате INTEL;

T - вывод на диск выходного файла с расширением .tek (по умолчанию) в шестнадцатеричном формате TEKTRONIX;

1 - вывод на диск выходного файла с расширением .s19 (по умолчанию) в формате MOTOROLA S19;

2 - вывод на диск выходного файла с расширением .s28 (по умолчанию) в формате MOTOROLA S28;

3 - вывод на диск выходного файла с расширением .s37 (по умолчанию) в формате MOTOROLA S37.

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

Файл в указанном формате состоит из записей (строк), причем каждая строка содержит шесть полей (поле ?признак записи?, поле ?длина?, поле ?адрес загрузки?, поле ?тип записи?, поле ?данные? и поле ?контрольная сумма?).

Поле ?признак записи? состоит из одного символа ":" (двоеточие).

Поле ?длина? занимает один байт и содержит число байтов данных в записи. Это число не может превышать значение, заданное из диапазона 01H-0FFH операндом директивы RECSIZE. При отсутствии в исходном модуле МК-программы указанной директивы число в поле ?длина? не может превышать 10H. Значение поля ?длина? последней записи файла равно нулю.

Поле ?адрес загрузки? состоит из двух байтов и представляет собой шестнадцатеричный адрес загрузки первого в записи байта данных. В последней записи файла это поле содержит нулевой адрес.

Поле ?тип записи? состоит из одного байта, значение которого равно 00H (01H), если запись не последняя (последняя).

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

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

Пример файла в шестнадцатеричном формате INTEL (файл prim.hex):

Пример файла с расширением .map (файл prim.map):

Global Symbol Name Global Value Global Filename

* Section Name Starting Address Ending Address Size *

* CODE 0000 000E 000F *

Link Errors: 0 Output Format: Intel Hex

3.4. Примеры микроконтроллерных программ

Сроки проектирования прикладного программного обеспечения микроконтроллеров MCS-51 существенно сокращаются при использовании готовых МК-программ, реализующих типовые процедуры обработки данных (преобразование системы счисления, работа с таблицами констант, формирование заданной задержки и др.). Рассмотрим ряд МК-программ широкого применения, написанных на языке АСМ51.

Преобразование системы счисления. Подпрограмма BINBCD выполняет преобразование целого двоичного 8-разрядного числа без знака, содержащегося в аккумуляторе A (значение в интервале 0-255), в трехзначное двоично-десятичное число, занимающее два байта и размещаемое в регистрах R1 (сотни), R2 (десятки и единицы).

BINBCD MOV B,#100

DIV AB ;разделить на 100 для определения

MOV R1,A ;сохранить число сотен в R1

XCH A,B ;поместить остаток в A

DIV AB ;разделить на 10 для определения

SWAP A ;число десятков в старшей тетраде A

ADD A,B ;число единиц в младшей тетраде A

MOV R0,A ;сохранить число десятков и единиц в R0

Фрагмент МК-программы, предложенный ниже, обеспечивает преобразование двухзначного двоично-десятичного числа, содержащегося в R3, в двоичное 8-разрядное число, размещаемое в регистре DPH.

CONV MACRO BCD,BIN ;начало макроопределения с

;формальными параметрами BCD и BIN

DIV AB ;разделить на 16 для отделения

;старшей и младшей тетрад A

ENDM ;конец макроопределения

CONV R3,DPH ;макрокоманда с фактическими

;параметрами R3 и DPH

Считывание таймера/счетчика в процессе работы. Часто встречаются ситуации, когда необходимо определить текущее состояние работающего T/Cj (j?<0,1>). Указанное может быть легко осуществлено последовательным чтением регистров THj и TLj, после которого обязательно следует убедиться в том, что содержимое THj не изменилось (изменение возникает при переполнении TLj). Если изменение все же имело место, то следует повторить процедуру чтения сначала. Изложенный алгоритм реализован в подпрограмме RDT, приведенной ниже.

MOV R0,TL0 ;пересылка младшего байта T/C0 в R0

CJNE A,TH0,RDT ;контроль старшего байта T/C0

MOV R1,A ;пересылка старшего байта T/C0 в R1

Передача параметров в подпрограмму. Обычно передача параметров перед вызовом подпрограммы осуществляется путем их загрузки в заданные регистры. Однако, если большое число параметров представляют собой константы, то более эффективным оказывается подход, при котором параметры фактически являются частью программного кода, следуя непосредственно за командой вызова подпрограммы. В этом случае подпрограмма определяет их местонахождение по адресу возврата в стеке. Рассмотрим подпрограмму ADDBCD, которая иллюстрирует указанный подход при суммировании четырехзначной двоично-десятичной константы 1234H с четырехзначной двоично-десятичной переменной, размещенной в резидентной памяти данных.

DW 1234H ;BCD-константа

DB 56H ;адрес мл. байта BCD-переменной

DB 78H ;адрес мл. байта BCD-суммы

ADDBCD POP DPH ;размещение в DPTR

POP DPL ;адреса возврата

MOVC A,@A+DPTR ;(A)=56H

MOVC A,@A+DPTR ;(A)=78H

MOVC A,@A+DPTR ;(A)=34H

ADD A,@R0 ;вычисление младшего байта суммы

DA A ;десятичная коррекция

MOVC A,@A+DPTR ;(A)=12H

ADDC A,@R0 ;вычисление старшего байта суммы

DA A ;десятичная коррекция

JMP @A+DPTR ;переход к команде, следующей за

Рис.3. Схема размещения табличных констант в ПП

,

где и есть соответственно номер строки и столбца таблицы; STRT есть адрес ячейки ПП, содержащей элемент .

Отметим, что адрес ячейки ПП, содержащей элемент , должен удовлетворять условию .

MATRX MOV A,R0 ;(A)=i

MOV DPL,A ;в DPL младший байт STRT+n(i-1)

MOV DPH,A ;в DPH старший байт STRT+n(i-1)

MOVC A,@A+DPTR ;(A)=aij

STRT DB a11,a12. a1n

Организация ветвления на n направлений предполагает выбор одной из n программных процедур в зависимости от выполнения соответствующего условия. Ниже приводится пример подпрограммы, эффективно реализующей указанный выбор. Здесь в зависимости от значения содержимого программно доступного элемента MEMSEL осуществляется переход к одной из команд с адресами MT1-MTn. При использовании подпрограммы JMP_n необходимо учитывать, что количество ячеек памяти программ, отведенное под таблицу адресов перехода и под область программных процедур, ограниченную адресами MT1 и MTn, не должно превышать 256 байт.

JMP_n MOV A,MEMSEL

TBL DB MT1-TBL,MT2-TBL. MTn-TBL

Программирование последовательного порта. Последовательный порт микроконтроллера 8051 обеспечивает широкие возможности по организации приема/передачи данных, при этом настройка на заданную скорость приема/передачи и требуемый протокол обмена достигается соответствующей инициализацией регистров PCON (табл.2.2), TMOD (табл.2.4), SCON (табл.2.5). В качестве примера ниже приводятся три подпрограммы, которые совместно обеспечивают работу последовательного порта в режиме 3 со скоростью приема/передачи данных 2400 бод.

Источник:

works.doklad.ru

Введение в ассемблер микроконтроллеров Intel 8051, Дамир Фаттахов

Введение в ассемблер микроконтроллеров Intel 8051

Программы можно писать не только для x86 компьютеров. Более того, большая часть процессоров в мире — НЕ x86. Основная часть микропроцессоров сейчас — это микроконтроллеры. В большинстве учебных заведений бывшего СССР изучение микроконтроллеров начинается с легендарного Intel 8051, нагло стыренного в советские годы гениальными советскими инженерами, и выпущенного у нас под названием МК-51 (причем, не поверите, МК здесь значит «МикроКонтроллер»). У этого микроконтроллера есть вполне неплохой ассемблер, очень похожий на ассемблер привычных нам процессоров x86 архитектуры.

Программы можно писать не только для x86 компьютеров. Более того, большая часть процессоров в мире — НЕ x86. Основная часть микропроцессоров сейчас — это микроконтроллеры. В большинстве учебных заведений бывшего СССР изучение микроконтроллеров начинается с легендарного Intel 8051 (официальное название — MCS 51, также он известен как i8051 и MCS-51), нагло стыренного в советские годы гениальными советскими инженерами, и выпущенного у нас под названием МК-51 (причем, не поверите, МК здесь значит «МикроКонтроллер»). У этого микроконтроллера есть вполне неплохой assembler, очень похожий на ассемблер привычных нам процессоров x86 архитектуры. Этот контроллер применялся в старых клавиатурах, да и вообще много где он применялся. Вот его различные применения мы и рассмотрим на нашем сайте. Я буду называть этот микропроцессор Intel 8051 или MCS 51, потому что во всем мире он известен именно под этим названием.

Особенности микроконтроллера

Intel 8051 — это 8 разрядный однокристальный микроконтроллер гардвардской архитектуры, впервые произведенный компанией Intel в 1980 году и предназначенный для использования во встраиваемых (embedded) системах. Он состоит из процессорного ядра (CPU), ОЗУ, ПЗУ, последовательного и параллельного порта, ну и еще небольшого количества дополнительных элементов. Если кому-то интересно узнать больше деталей — информация по Intel 8051 есть в открытом доступе.

Программы для него можно писать на специализированном асме, который очень напоминает ассемблер для x86-процессоров, или на языке С. Но, конечно, есть ограничения (смайл). У нас в распоряжении всего 128 байт ОЗУ (называется память DATA), 4 кбайта встроенного ПЗУ для хранения самой программы (память программ), и 64 кбайта в ПЗУ (называется XDATA — external data, или память данных). Зато есть прерывания (еще один смайл).

Разработка концепции программы

В статье будет рассказано о том, как создать программу на ассемблере для этого микроконтроллера. Для начала простую :). Забьем десять байт данных во внешнюю память (в ту, которой 64 кбайта) MCS 51 по адресам 00h…09h и проведем сортировку их по возрастанию. Стандартно для разработки программ для этого микроконтроллера используется программа Franklin Proview32. Старый добрый дедушка Франклин ))). Он позволяет эмулировать работу MCS 51 и в графическом виде смотреть, как изменяется состояние памяти микроконтроллера, разных регистров и таймеров. Короче, видеть почти все, что происходит внутри нашего мелкопроцессора.

Теперь, как программа должна выполнять поставленную задачу? Для начала нужно забить числа в память Intel 8051. После этого запускать цикл, который проведет сортировку полученного массива чисел. При этом надо учесть, что помещать числа из ПЗУ в ОЗУ для обработки их в цикле нам нужно вручную (т.е. указать это явно в коде). Я решил задачу следующим образом.

Описание принципа работы программы

Сначала программа записывает данные во внешнюю память. После этого она считывает исходные числа из внешней памяти во внутреннюю и одновременно сортирует их.

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

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

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

Процесс продолжается до использования всех чисел из внешней памяти.

После этого отсортированные элементы переписываются обратно во внешнюю память.

Создание программы

К счастью, метки и переходы типа “GOTO“ здесь применимы, поэтому программу можно разбить на отдельные модули. Еще одно замечание: все цифры в программе — шестнадцатеричные, и обозначаются буквой h.

Указываем, с какого участка кода программа начинает работать:

Забиваем числа, которые нужно отсортировать, во внешнюю память:

Запускаем цикл сортировки:

Опишем также работу дополнительного модуля, нужного для сортировки:

Все, сортировка данных завершена. Теперь нужно перенести числа из DATA обратно в Xdata:

Особенности работы программы

Xdata: 0000h…0009h – область сортируемых числа

data: 40h…49h — область, используемая для промежуточного хранения и сортировки чисел

DPTR: хранит адрес байта в XDATA (0000h..0009h).

A: используется как буфер для передачи данных из XDATA в DATA и для копирования данных из одного участка памяти в другой.

R0: хранит адрес обрабатываемого элемента в DATA (40h..49h)

R1: используется как локальный счетчик цикла.

R2: хранит данные из DPL для запоминания адреса текущего самого большего элемента.

Участок 4Ah: хранит текущее самое большое число.

Результаты работы программы

В таблице 1 приведены результаты работы программы. В столбце «Адрес ячейки» указан адрес внешней памяти XDATA, в которой хранятся сортируемые данные.

Дополнительно Добавить комментарий Отменить ответ Навигация по записям Категории
  • Главная (33)
  • .Net (23)
    • ASP .NET (4)
  • C&C++ (5)
  • Delphi (25)
  • Linux (2)
  • Security (10)
  • Базы данных (3)
    • Oracle (2)
  • Веб-разработка (12)
  • КреатиFF (3)
  • Новости IT (1)
  • Прочее (16)
  • Файловый архив (8)
    • Coder's Zone Team (8)
  • FAQ (2)
Свежие записи

Proudly powered by WordPress. Vito theme designed by Quema Labs.

Источник:

damir.in

Assembly Language Programming With 8051 MICROCONTROLLER в городе Владивосток

В представленном каталоге вы можете найти Assembly Language Programming With 8051 MICROCONTROLLER по разумной стоимости, сравнить цены, а также изучить иные предложения в группе товаров Наука и образование. Ознакомиться с параметрами, ценами и обзорами товара. Доставка товара осуществляется в любой город России, например: Владивосток, Волгоград, Брянск.