Реферат

Реферат Программа, формирующая таблицу истинности для функции F A C B D

Работа добавлена на сайт bukvasha.net: 2015-10-28

Поможем написать учебную работу

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

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 21.9.2024





Министерство образования Российской Федерации
Рязанский государственный технологический колледж
ПОЯСНИТЕЛЬНАЯ ЗАПИСКА
к курсовой работе по предмету
Архитектура ЭВМ систем и сетей
                                                Выполнил:Сорокин В.А.
Проверил: Лабутин А.В.
Оценка_______________

2001г



Содержание

1.      Введение...................................................................................................... 1

2.      Общие сведения о языке ассемблер..................................................... 2

3.      Программная часть

·           Описание программы ....................................................................... 3

·           Этапы разработки ассемблерных программ............................... 5

·           Блок-схема алгоритма программы................................................. 2

·           Программа, формирующая таблицу истинности для функции F=A+C·(BÅD)      4

4.   Список использованной литературы........................................................ 5
Программная часть

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



В этой работе мы рассмотрим один из способов написания программы, формирующую, таблицу истинности для функции F=A+C·(BÅD),с помощью языка Ассемблера. Прежде чем создать программу надо детально рассмотреть, какие шаги для этого надо предпринять, то есть надо написать алгоритм работы этой программы . Для того чтобы компьютер смог обработать данные, эти данные ему надо сначала ввести , а это значит первым шагом в решении нашей задачи будет ввод числа. Для начала присвоим начальное значение равное 0 всем операндам то есть A,B,C,D,F.Вторым шагом в работе будет вычисление функции F=A+C
·
(B
Å
D)
. После этого мы выводим на экран значения операндов A,B,C,D и вычисленный результат функции, то есть F. Следующим шагом будет увеличение операнда D на 1
и проверка условия : если значение D не равно 2, то переходим к вычислению заданной функции и выводу значений операндов A,B,C,D,F на экран, иначе то переходим к следующему шагу решения нашей задачи, то есть присвоению операнду D значения 0, увеличению операнда C на 1. После снова производим проверку условия: если С не равно 2, то переходим к вычислению заданной функции и выводу значений операндов A,B,C,D,F на экран , иначе то переходим к следующему шагу, присвоению операнду С значения 0 и увеличения операнда B на 1. Далее проверяем условие: если B не равно 2, то переходим к вычислению заданной функции и выводу значений операндов A,B,C,D,F на экран , иначе то переходим к следующему шагу, присвоению операнду B значения 0 и увеличения операнда A на 1 , иначе переходим к следующему пункту, проверке условия: если A не равно 2, то переходим к вычислению заданной функции и выводу значений операндов A,B,C,D,F на экран , иначе выходим из программы. Теперь соберём все пункты вместе:
1.                Начало

2.                Присваиваем начальные значения операндам  A,B,C,D,F    A=0,B=0,C=0,D=0,F=0

3.                Выполняем логическую операцию «исключающее или» над операндами B
и D и заносим результат в регистр AH

4.                Выполняем логическую операцию «или» над операндами A
и C и заносим результат в регистр AL

5.                Выполняем инверсию результата находящегося в регистре AL

6.                Выполняем логическую операцию «и» над операндами AH
и AL и присваиваем результат операнду F

7.                Выводим на экран значения операндов A,B,C,D,F

8.                Увеличиваем операнд D на 1

9.                Проверка условия: если D
не равно 2, то переход на пункт 2, иначе то переход на пункт 9

10.          Присваиваем операнду D значение 0, увеличиваем операнд C на 1

11.          Проверка условия: если С не равно 2, то переход на пункт 2, иначе то переход на пункт 11

12.          Присваиваем операнду С значение 0, увеличиваем операнд B на 1

13.          Проверка условия: если B
не равно 2, то переход на пункт 2, иначе то переход на пункт 13

14.          Присваиваем операнду B значение 0, увеличиваем операнд A на 1

15.          Проверка условия: если A не равно 2, то переход на пункт 2, иначе то переход на пункт 15

16.           Конец
Это и есть алгоритм программы на естественном языке. 





Список использованной литературы:
1.       Питер Абель.  «Язык ассемблера для IBM-PC
и программирования
»  Москва, издательство «Высшая школа»,1992г.

2.       П.Нортон, Д.Соухе.   «Язык ассемблера для IBM-PC» Москва, издательство «Компьютер», 1993г.

3.       Б. Бериан.  «Программирование на языке ассемблера» Москва, издательство «Мир», 1980г.

4.       В. Н. Пильщиков. «Программирование на языке ассемблера для IBM-PC» издательство «Диалог-МИФИ», 1994г.





  Блок-схема: данные: Вывод на экран
A,B,C,D,F
Блок-схема: знак завершения: начало

AH=BÅD

 
Блок-схема: данные: A=0;B=0;
C=0;D=0;F=0

AL=A+C

 

AL=AL

 

F=AH·AL

 

D=0


C=C+1
 
Блок-схема: подготовка: D¹2

D=D+1

 


   Блок-схема: знак завершения: выходБлок-схема: подготовка: A¹2

B=0


A=A+1
 
Блок-схема: подготовка: B¹2

C=0

B=B+1
 
Блок-схема: подготовка: C¹2
cseg segment

     org 100h

     assume cs:cseg,ds:dseg,ss:sseg

start:

   mov    ax,dseg               ; установить регистр DS таким

   mov    ds,ax                 ; образом, чтобы он указывал

                                ; на сегмент данных
   mov ax,0600h

   mov bh,07

   mov cx,0000

   mov dx,184Fh

   int 10h
   mov  ah,9                  ; функция DOS вывода строки

   mov  dx,OFFSET Message ; ссылка на сообщение "A B C D F"

   int    21h                   ; вывести "A B C D F" на экран
                     
BEGIN:                  ;                      ___

                        ; Расчет функции   F = A+C*B(+)D

        mov ah, B       ; копирование 'B' в ah

        xor ah, D       ; исключающее  или

        mov al, A       ; копирование 'A' в al

        or  al, C       ; логическое сложение

        not al          ; инверсия

        and ah, al      ; логическое умножение

        mov F, ah       ; перенос результата в F
        jmp FUNC        ; Переход на метку FUNC для вывода

                                 ; строчки таблицы

              

NEXT:
        add D, 1        ;увеличение D на 1

        cmp D, 2        ;если D не равно 2 ,то

        jne BEGIN       ;переход на метку BEGIN
        mov D, 0        ;обнуление D

        add C, 1        ;увеличение C на 1

        cmp C, 2        ;если C не равно 2 ,то

        jne BEGIN       ;переход на метку BEGIN
        mov C, 0        ;обнуление C

        add B, 1        ;увеличение B на 1

        cmp B, 2        ;если B не равно 2 ,то

        jne BEGIN       ;переход на метку BEGIN
        mov B, 0        ;обнуление B

        add A, 1        ;увеличение A на 1

        cmp A, 2        ;если A не равно 2 ,то

        jne BEGIN       ;переход на метку BEGIN
ENDLAB:

   mov    ah,4ch        ; функция DOS для

   int    21h           ; завершения программы
FUNC:                   ; Функции ДОС для вывода символов

                        ; Выводим двоичные значения A B C D, а также F

        mov    ah,2     ; загрузка номера функции DOS для вывода символа на экран

        mov    dl, 48   ; код выводимого символа 48=0

        add    dl,A     ; выводим на экран

        int    21h      ; значение A

        mov    ah,2

        mov    dl, 32   ; код выводимого символа 48=пробел

        int    21h
        mov    ah,2

        mov    dl, 48

        add    dl,B

        int    21h

        mov    ah,2

        mov    dl, 32

        int    21h
        mov    ah,2

        mov    dl, 48

        add    dl,C

        int    21h

        mov    ah,2

        mov    dl, 32

        int    21h
        mov    ah,2

        mov    dl, 48

        add    dl, D

        int    21h

        mov    ah,2

        mov    dl, 32

        int    21h
        mov    ah,2

        mov    dl, 48

        add    dl, F

        int    21h

        mov    ah,2

        mov    dl, 32

        int    21h
        mov    ah,2

        mov    dl, 13

        int    21h

        mov    ah,2

        mov    dl, 10

        int    21h

        jmp    NEXT   ;переход на метку NEXT

cseg ends

dseg segment
        A   DB  0

        B   DB  0

        C   DB  0

        D   DB  0

        F   DB  0

        Message  DB 'A B C D F',13,10,'$'

dseg ends

sseg segment stack 'stack'

        db 100 dup (0)

sseg ends

end start




Примечания
:


Ниже приведины команды использовались в программе:

    sub     – двоичное вычитание. Вычитается из первого операнда содержимое второго  операнда

Мнемоника
:    sub <
операнд 1
>,<
операнд 2
>


call       вызов процедуры. Передает управление процедуре адрес которой задан операндом, после завершения процедуры, выполнение продолжается командой следующей за командой call

Мнемоника
:    call <
имя процедуры
>


ret       возврат к процедуре

shr      сдвинуть логически вправо

xor      исключающее ИЛИ

Мнемоника
:    xor <операнд 1>,<операнд 2>



lea      загрузить ЕА

Мнемоника
:    lea reg,<операнд>



push   включить в stack

Мнемоника
:    push <
операнд
>


pop     извлечь из stack

Мнемоника
:    pop <операнд>


mov    переслать

Мнемоника
:    mov <
приемник
>,<источник>


inc      увеличение на 1

Мнемоника
:    inc <операнд>


dec     уменьшение на 1

Мнемоника
:    dec <
операнд
>


stosbпересылает соединения регистра al или ax на который указывает регистр di

loop     команда организации цикла со счетчиком, также короткие переходы (127б)  команда уменьшает значение счетчика cx, без изменения каких-либо флагов, если соединение cx >0, то осуществляется переход на заданную метку, в противном случае цикл завершается.

Мнемоника
:    loop <
метка
>


.CODE                открывает сегмент кода

.
DATA               
-- открывает сегмент данных

.STACK  N         определяет сегмент stack(а); дерективы закрытия сегментов в этом случае не используются; N – показывает размер stack(a) в байтах

Примечание
:
при использовании таких деректив регистр ds инициализируется следующим образом:                   mov                 ax,@data

mov                 ds,ax

assume в этом случае не используется


1. Реферат на тему Gene Therapy Essay Research Paper How does
2. Реферат на тему Film Review Of The Crucible Essay Research
3. Курсовая Заимствованная лексика в английском языке и ее использование в различных функциональных стилях
4. Реферат Эстергомский десант
5. Реферат на тему Классическая школа политэкономии
6. Реферат на тему A Fight Essay Research Paper A Fight
7. Реферат Валютный контроль и валютное регулирование
8. Реферат Современные способы развития навыков аудирования
9. Реферат на тему Democracy Essay Research Paper 2
10. Реферат Философия средневековой Европы 2