і до 0). Если в DX - 0, те нужно в DX записатися 8, а в BX завантажити Наступний слово масиву, інакше - просто зрушуємо BX вправо на розряд и зменшуємо DX на 1.
Повторюємо підсумовування.
После Закінчення процедури акумулятор AX містіть обчисления для масиву Значення CRC8.
Для Збереження результату его переносимо в змінну result.
Для перевіркі цілісності масиву нужно повторити обчислення контрольної суми и порівняті Зі значенням в result.
Блок-схема алгоритму наведена в Додатках 2.
4. Відладка та випробування Розроблення програмного забезпечення
Алгоритм визначення CRC реалізованій в процедурі CalcCRC. Перед викликом цієї процедури звітність, в регістрі записатися Початкові дані - сегментний Регистр ES винен містіті сегмент в якому розташованій масив, Регистр DX - зміщення качану масиву всередіні сегмента, BX - довжина масиву.
Програма Виконує наступні Операції на вибір користувача: обчислення CRC масиву и записом результатів у змінну, перевірка цілісності масиву - повторний обчислення CRC и порівняння обчисления Значення з записання, спотворення масиву - оборотне зміна одного біта перевірочного масиву.
Для обчислення CRC, віклікається процедура CalcCRC, а результат Виконання зберігається у змінній result.
При Перевірці цілісності, віклікається процедура CalcCRC, а результат Виконання порівнюється Зі збереженням у змінній result. У випадка розбіжності, виводу ПОВІДОМЛЕННЯ про помилки. При збігу значень (цілісність даніх НЕ порушена) ПОВІДОМЛЕННЯ НЕ виводу и користувач повертається в головне меню.
Спотворення масиву вікорістовується для тестування програми и Демонстрації роботи.
Для тестування в Програмі Передбачення перевірочній масив даніх Довжина 32 байта. При спотворенні, інвертується молодший біт Першого слова масиву. br/>
Висновок
Асемблер є сімволічнім аналогом машінної мови. З цієї причини програма, написана на асемблері, винна відображаті ВСІ Особливості архітектури мікропроцесора: організацію пам'яті, способів адресації операндів, правила Використання регістрів и т. д. З-за необхідності врахування подібніх особливая Асемблер Унікальний для шкірного типу мікропроцесорів.
У Цій работе розглянуті основні етапу програмування на асемблері, реалізованій алгоритм Виконання поставленого Завдання, а такоже виконан трансляція кодом у віконуваній файл.
Література
1. Абель П. Основи програмування/Пер. з англ. Ю. В. Сальникова. - М.: висшая. Шк. 1992р. - 447с.: іл. p> 2. А. Жуков, А. Авдохін В«AssemblerВ».-Спб: БХВ - Петербург, 2002 ..
3. Архітектура введення-виведення персональних ЕОМ IBM РС Під редакцією Ю. С. Лукача (C) Інженерно-технічне бюро, 1990
4. В. Юров В«AssemblerВ» Практікум.-Спб.: Питер, 2001. p> 5. В. Юров В«AssemblerВ» Підручник.-Спб.: Питер, 2001. p> 6. Зубков С. В. Асемблер для Dos, Windows і Unix - В«ПітерВ», в 2004 р.
7. Ірвін, Кіп. Мова Асемблера для процесорів Intel, 3-е видання: Пер. з англ. - М.: Видавничий дім «³льямсВ», 2002.-616с.: Іл. - Парал. Тит. Англ. p> 8. Використання Turbo Assembler при розробці програм/Упоряд. А. А. Чекатков.-Київ: Діалектика, 1995.-228с
Додаток А
Текст програми
MODEL SMALL
; ********************************************** ***
; Сегмент стека
; ********************************************** ***
_Stack SEGMENT WORD 'STACK'
DB 200h DUP (?)
_Stack ENDS
; ********************************************** ***
; Сегмент тестового масиву
; ********************************************** ***
DataSeg SEGMENT WORD 'DATA'
TestTab DB 32 DUP (
00h, 01h, 02h, 03h, 04h, 05h, 06h, 07h,
08h, 09h, 0Ah, 0Bh, 0Ch, 0Dh, 0Eh, 0Fh,
00h, 01h, 02h, 03h, 04h, 05h, 06h, 07h,
08h, 09h, 0Ah, 0Bh, 0Ch, 0Dh, 0Eh, 0Fh
)
DataSeg ENDS
; ********************************************** ***
; Сегмент змінніх
; ********************************************** ***
_Data SEGMENT WORD 'DATA'
; ********************************************** ***
FSelMsg DB 13,10, 'Віберіть дію:', 13,10,
13,10, '1-Візначіті CRC ', 13,10,
'2-Перевіріті масив ', 13,10,
'3-Спотворіті масив ', 13,10,
'4-Вихід ', 13,10,
'$'
ByeStr DB 13,10, 'Для продовження натісніть будь-яку клавішу. $ 'p> ErrorString DB 13,10, 'Помилка Введення', 13,10, '$'
ErrorResult DB 13,10, 'дані спотворені. CRC8 порушена. ', 13,10,' $ '
; ********************************************** ***
BegSeg DW (?); Сегмент перевірочного масиву
<...