Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Цепочные команды



1. ПОСТАНОВКА ЗАДАЧИ.

Разработать программу или распаковки информационного кадра

для передачи по локальной вычислительной сети.

Формат кадра:

ПП - преамбула (4 байта с кодом 55h)

Данные - поле данных (16 байт)

КС - контрольная сумма (2 байта)

КК - конец кадра (1 байт с кодом 1Fh)

Под распаковкой понимается чтение поля данных кадра и

проверка контрольной суммы. Данные для передачи (приема)

хранятся в области памяти с именем SDATA и представляют собой

последовательность 16 символов из набора от A до Z и от 0 до 9.

При распаковке кадра данные необходимо расшифровать согласно

указанной таблици кодировки

Контрольная сумма формироваться как арифметическая сумма

всех байт поля данных. В СРС использовать команды

работы со строками: LODS,STOS и др.

ТАБЛИЦА КОДИРОВКИ

0 I A Q K 3 U R

1 F B L L D V 9

2 K C O M X W B

3 M D T N 7 X H

4 V E W O 4 Y 5

5 N G Z Q P Z 8

6 E H C K 6

7 Y I 1 S Z

8 J J A T S

9 0

2. КРАТКОЕ ОПИСАНИЕ АЛГОРИТМА.

Основная идея алгоритма в том, что в ASCII таблице цифры 0..9 и заглавные буквы латинского алфавита A..Z расположены последовательно (по возрастанию ASCII кода), но с промежутком в 7 символов, т.к. нам эти символы не нужны, то мы их пропускаем, и из кода символа в зависимости от его положения вычитаем 30h (для цифр), или 55d для букв

В основе алгоритма лежит использование команды xlat в паре с командами lodsb и stosb:

lodsb

:загружает регистр AL байтом, находящимся в памяти, на

который указывает смещение в индексном регистре SI

относительно DS.

stosb:

пересылает содержимое регистра AL в байт, находящийся в

памяти, на который указывает смещение в индексном регистре

DI относительно сегмента ES.

xlat:

заменяет содержимое регистра AL байтом из таблицы

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

DS находится в регистре BX.

3. ТЕКСТ ПРОГРАММЫ.

.8086

.MODEL TINY

CODE SEGMENT

ASSUME CS: CODE, DS: CODE

ORG 100H

BEGIN:

JMP START

;опpеделяем данные

;поле SDATA предназначено для распакованной строки

;LAB3_... -кадр в заданном формате

Crc_er db 'CRC error!!! ',0Dh,0Ah,'$'

control db 'CWDD4IIIIIIIIIII - Control ',0Dh,0Ah,'$'

SDATA DB 16 DUP (?)

DB ' - Unpacked Data',0Dh,0Ah,'$'

LAB3_PA DB 4 DUP (55h)

LAB3_DATA DB 'HELLO00000000000'

LAB3_CRC DW 0384h

DB ' - CRC$'

LAB3_END DB 1Fh

;таблица кодиpовки 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ

CODE_TABLE DB 'IFKMVNEYJ0QLOTW ZC1A3DX74 P6ZSR9BH58'

START:

cld

mov si,offset lab3_data

mov bx,offset code_table

mov di,offset sdata

mov cx,16

mov dx,[lab3_crc]

loop_coding:

xor ax,ax

lodsb

sub dx,ax

cmp al,'A'

jae is_a

sub al,'0'

jmp skip

is_a:

sub al,55D

skip:

xlat

stosb

loop loop_coding

or dx,dx

jne Crc_error

mov ah,9h

mov dx,offset Control

int 21h

mov ah,9h

mov dx,offset Sdata

int 21h

mov ah,9h

mov dx,offset Lab3_crc

int 21h

ret

Crc_error:

mov ah,9h

mov dx,offset Crc_er

int 21h

ret

CODE ENDS

END BEGIN

4. РЕЗУЛЬТАТЫ ТЕСТИРОВАНИЯ.

а) вводимая строка: 'HELLO00000000000'

закодированая строка: 'CWDDLIIIIIIIIIII'

б) вводимая строка: 'IT0IS0LB40300000'

закодированая строка: '1ST12IDLQMIIIIII'

5. ХАРАКТЕРИСТИКИ ПРОГРАММЫ И ЕЁ ПОЛНОТЫ ТЕСТИРОВАНИЯ.

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

Литература

1. К.Г. Финогенов. Основы языка ассемблера. М.: «Радио и связь», 2000г

2. В. Юров. Основы языка ассемблера. С-П.: «Питер», 2001г

3. В. Юров, С. Хорошенко. Assembler. С-П.: «Питер», 1999г

4. К. Данкан. Профессиональная работа в MSDOS. М.: «Мир», 1993г

5. А.А. Чекотов. Использование Turbo Assembler при разработке программ. Киев: «Диалектика», 1995г

6. В.А. Пильщиков. Программирование на языке Assembler IBM PC. М.: «Диалог МИФИ», 1994г

7. Дж. Гудмен. Управление памятью для всех. Киев: «Диалектика», 1995г

8. П. Аорлон. Персональный компьютер фирмы IBM. М.: «Радио и связь», 1991г

9. А. Скэнлон. Персональные ЭВМ фирмы IBM PC и XT. Программирование на языке ассемблера. М.: «Радио и связь», 1988г

10. В.Ю. Пирогов Assembler. Учебный курс. – М.: «Номедж», 2001г

11. Абрамов С.А., Гнездилова Г.Г., Капустина Е.Н., Селюн М.И. Задачи по программированию. М.: Наука, 1988г





Дата публикования: 2015-10-09; Прочитано: 287 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...