МЕНЮ


Фестивали и конкурсы
Семинары
Издания
О МОДНТ
Приглашения
Поздравляем

НАУЧНЫЕ РАБОТЫ


  • Инновационный менеджмент
  • Инвестиции
  • ИГП
  • Земельное право
  • Журналистика
  • Жилищное право
  • Радиоэлектроника
  • Психология
  • Программирование и комп-ры
  • Предпринимательство
  • Право
  • Политология
  • Полиграфия
  • Педагогика
  • Оккультизм и уфология
  • Начертательная геометрия
  • Бухучет управленчучет
  • Биология
  • Бизнес-план
  • Безопасность жизнедеятельности
  • Банковское дело
  • АХД экпред финансы предприятий
  • Аудит
  • Ветеринария
  • Валютные отношения
  • Бухгалтерский учет и аудит
  • Ботаника и сельское хозяйство
  • Биржевое дело
  • Банковское дело
  • Астрономия
  • Архитектура
  • Арбитражный процесс
  • Безопасность жизнедеятельности
  • Административное право
  • Авиация и космонавтика
  • Кулинария
  • Наука и техника
  • Криминология
  • Криминалистика
  • Косметология
  • Коммуникации и связь
  • Кибернетика
  • Исторические личности
  • Информатика
  • Инвестиции
  • по Зоология
  • Журналистика
  • Карта сайта
  • Программа, формирующая таблицу истинности для функции F=A+C*(B+D)

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

    Министерство образования Российской Федерации

    Рязанский государственный технологический колледж

    ПОЯСНИТЕЛЬНАЯ ЗАПИСКА

    к курсовой работе по предмету

    “Архитектура ЭВМ систем и сетей”

    Выполнил:Сорокин В.А.

    Проверил: Лабутин А.В.

    Оценка_______________

    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г.

    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 ,

    call – вызов процедуры. Передает управление процедуре адрес которой

    задан операндом, после завершения процедуры, выполнение продолжается

    командой следующей за командой call

    Мнемоника: call

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

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

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

    Мнемоника: xor ,

    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 в этом случае не используется

    -----------------------

    [pic]

    [pic]

    [pic]

    [pic]

    [pic]

    [pic]

    D=D+1

    D(2

    D=0

    C=C+1

    F=AH(AL

    AL=AL

    AL=A+C

    A=0;B=0;

    C=0;D=0;F=0

    AH=B(D

    начало

    Вывод на экран

    A,B,C,D,F

    выход

    A(2

    B=0

    A=A+1

    B(2

    C=0

    B=B+1

    C(2

    [pic]

    [pic]


    Приглашения

    09.12.2013 - 16.12.2013

    Международный конкурс хореографического искусства в рамках Международного фестиваля искусств «РОЖДЕСТВЕНСКАЯ АНДОРРА»

    09.12.2013 - 16.12.2013

    Международный конкурс хорового искусства в АНДОРРЕ «РОЖДЕСТВЕНСКАЯ АНДОРРА»




    Copyright © 2012 г.
    При использовании материалов - ссылка на сайт обязательна.