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

2016-07-31СтудИзба

Описание файла

Документ из архива "Программа, формирующая таблицу истинности для функции F=A+C*(B+D)", который расположен в категории "". Всё это находится в предмете "информатика" из , которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "рефераты, доклады и презентации", в предмете "информатика, программирование" в общих файлах.

Онлайн просмотр документа "45177"

Текст из документа "45177"

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

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

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

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

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

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

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

Оценка_______________

2001г

Содержание

  1. Введение 1

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

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

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

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

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

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

  1. Список использованной литературы 5

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

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

В этой работе мы рассмотрим один из способов написания программы, формирующую, таблицу истинности для функции F=A+C(BD),с помощью языка Ассемблера. Прежде чем создать программу надо детально рассмотреть, какие шаги для этого надо предпринять, то есть надо написать алгоритм работы этой программы . Для того чтобы компьютер смог обработать данные, эти данные ему надо сначала ввести , а это значит первым шагом в решении нашей задачи будет ввод числа. Для начала присвоим начальное значение равное 0 всем операндам то есть A,B,C,D,F.Вторым шагом в работе будет вычисление функции F=A+C(BD). После этого мы выводим на экран значения операндов 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г.



AH=BD

AL=A+C

AL=AL

F=AHAL

D=D+1

D=0

C=C+1







C=0

B=B+1

B=0

A=A+1

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 ,

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

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Нашёл ошибку?
Или хочешь предложить что-то улучшить на этой странице? Напиши об этом и получи бонус!
Бонус рассчитывается индивидуально в каждом случае и может быть в виде баллов или бесплатной услуги от студизбы.
Предложить исправление
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5138
Авторов
на СтудИзбе
441
Средний доход
с одного платного файла
Обучение Подробнее