Наложение модуляции М-последовательности на гармонический сигнал

Страницы работы

21 страница (Word-файл)

Содержание работы

Федеральное агентство по образованию

Государственное образовательное учреждение высшего профессионального образования

СИБИРСКИЙ ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ

ПОЛИТЕХНИЧЕСКИЙ ИНСТИТУТ

Кафедра «Приборостроение и наноэлектроника»

ЛАБОРАТОРНАЯ РАБОТА №3,4

 Выполнил:

 ст-т гр. РФ06-02

                       Р.А. Матюшев

 Проверил:

 А.Г. Андреев

Красноярск 2009

Задание:

Наложение модуляции М-последовательности на гармонический сигнал

Блок-схемы:

Рис.1 – блок-схема (ввод с клавиатуры)

Рис. 2 – блок-схема (ввод с клавиатуры)

Рис. 3 – Образование гармонического сигнала с наложением модуляции М-последовательности.

Программная реализация:

.386

.MODEL Flat, STDCALL

;Константы.

STD_OUTPUT_HANDLE   equ -11

STD_INPUT_HANDLE    equ -10

;Константы для работы с файлом.

STD_OUTPUT_HANDLE  equ  -11

GENERIC_READ     equ 80000000h

GENERIC_WRITE    equ 40000000h

GEN  = GENERIC_READ or GENERIC_WRITE

SHARE = 0

CREATE_ALWAYS    equ  2

;Прототипы внешних процедур для консоли.

EXTERN GetStdHandle@4:NEAR

EXTERN WriteConsoleA@20:NEAR

EXTERN ExitProcess@4:NEAR

EXTERN SetConsoleCursorPosition@8:NEAR

EXTERN SetConsoleTitleA@4:NEAR

EXTERN FreeConsole@0:NEAR

EXTERN AllocConsole@0:NEAR

EXTERN CharToOemA@8:NEAR

EXTERN SetConsoleCursorPosition@8:NEAR

EXTERN SetConsoleTextAttribute@8:NEAR

EXTERN ReadConsoleA@20:NEAR

EXTERN SetConsoleScreenBufferSize@8:NEAR

EXTERN ExitProcess@4:NEAR

;Прототипы внешних процедур для файлов.

EXTERN    CreateFileA@28:NEAR

EXTERN    CloseHandle@4:NEAR

EXTERN    ReadFile@20:NEAR

EXTERN  WriteFile@20:NEAR

option casemap:none

          include D:\ASM_RadASM\masm32\include\windows.inc

          include D:\ASM_RadASM\masm32\include\user32.inc

          include D:\ASM_RadASM\masm32\include\kernel32.inc

          includelib D:\ASM_RadASM\masm32\lib\user32.lib

          includelib D:\ASM_RadASM\masm32\lib\kernel32.lib

.CONST

.DATA

                    kod                        db 15h;

;Сегмент данных для работы с сопроцессором.

                    Y                            dd ?;  результат вычисления функции

                    X                            dd ?;  аргнумент синуса

                    frec              dd ?;  частота

                    amp                        dd ?;1000;   амплитуда

                    Xn                          dd ?;  X начальное        

                    Xk                          dd ?;  X конечное

                    diskret                    dd ?;  число отсчетов(дискретизаций)

                    h                            dd ?;  шаг дискретизации

                    Y_bcd                    dt ?;   результат вычисления функции bcd format               

                    temp            dd 100;

                    out_string    db 18 dup(30h),13,10;     для строки получившегося числа (18 символов)

                    m_mod                  dd 0;

;структура для координат курсора

COOR STRUC

     X WORD ?

     Y WORD ?

COOR ENDS

;Сегмент данных для работы с консолью.

_DATA       SEGMENT DWORD PUBLIC USE32 'DATA'

        HANDL  DWORD   ?

        HANDL1 DWORD   ?

        ;STR_frec DB "Введите строку:",13,10,0

        STR_frec DB "Введите частоту: ",0

        STR_amp DB "Введите aмплитуду: ",0

        STR_Xn DB "Введите t начальное: ",0

        STR_kod DB "Введите кодируемое : ",0

        STR_Xk DB "Введите t конечное: ",0

        STR_diskret DB "Введите число отсчетов: ",0

        STR_end DB "Выполнено!!! ",0

        BUF  DB 200 dup(?)

        LENS DWORD ?  ;Количество выведенных символов.

        CRD  COOR <?>

;Сегмент данных для работы с файлом.

      F_HANDL  DWORD  ?

      F_HFILE  DWORD  ?

      F_BUF    DB  100  DUP(0)

      F_NUMB   DWORD  ?

      F_NUMW   DWORD  ?

      F_NAME        DB "out.txt",0

                    chislo DB "54321",13,10,0

                    dlina db ?

                    r_1 db ?

                    r_10 db ?

                    r_100 db ?

                    r_1000 db ?

                    r_10000 db ?

                    chislo_32bit dd 0;

.DATA?

.CODE

;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

;         преобразует строку в число от 0 до 65735 без знака

;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

;                   вход: chislo - строка

;                   выход: chislo_32bit

;                   портит: eax, ebx, esi

string_to_hex:

          mov chislo_32bit,0;

;Получаем длину строки (числа)     

          mov dlina,0;

          lea esi, chislo;

start_shceta:

          mov al,[esi];

          cmp al,13;

          jz konec;

          cmp al,10;

          jz konec;

          inc dlina;

          inc esi;

          jmp start_shceta;

konec:         

          lea esi, chislo;

          mov al,[esi];

          mov ah,dlina;                   проверяем длину числа

          cmp ah,1;                        

          jz ravr1;

          cmp ah,2;

          jz ravr2;

          cmp ah,3;

          jz ravr3;

          cmp ah,4;

          jz ravr4;

          cmp ah,5;

          jz ravr5;

          mov chislo_32bit,0;                   если слишком длинное то возвращаем ноль.

ret;

ravr1:

          mov eax,0;                                 обнуляем еах

          mov al,[esi];                               берем символ

          sub al,30h;                                 вычитаем 30ш чтобы получит число

          add eax,chislo_32bit;      еах + то что было

          mov chislo_32bit, eax;    все в память где хранится число

ret;

ravr2:

          mov eax,0;                                 обнуляем еах

          mov al,[esi];                               берем символ

          sub al,30h;                                 вычитаем 30ш чтобы получит число

          mov ah,10;                                 10 в ah

          mul ah;                                                 ax = al*ah

          add eax,chislo_32bit;      еах + то что было

Похожие материалы

Информация о работе