СЕТЬ ПЕТРИ, ТЕКСТ ПРОГРАММЫ - Теория вычислительных процессов
Начальная разметка сети: одна фишка в позиции S1.
После завершения функционирования сети фишка будет в позиции S2
Расшифровка переходов:
- 1. T1 - push f 2. T2 - push si 3. T3 - push di 4. T4 - push cx 5. T5 - push ax 6. T6 - clc 7. T7 - mov si,127 8. T8 - mov di,127 9. T9 - mov cx,128 10. T10 - mov al,[bx+si] 11. T11 - adc [bp+di],al 12. T12 - cmp byte ptr[bp+di],9 13. T13 - sub [bp+di],10 14. T14 - stc 15. T15 - clc 16. T16 - увеличение количества фишек 17. T17 - увеличение количества фишек 18. T18 - dec di 19. T19 - dec si 20. T20 - уменьшение количества фишек 21. T21 - pop ax 22. T22 - pop cx 23. T23 - pop di 24. T24 - pop si 25. T25 - popf
ТЕКСТ ПРОГРАММЫ
.model small
.stack 200h
.386
.data
Message1 db 'Vvedite pervoe chislo: ','$'
Message2 db 'Vvedite vtoroe chislo: ','$'
Message3 db 'Dla polucheniya rezultata nazmite Enter ',0dh,0ah,'$'
Message4 db 'ESC to exit or any key to continue...',0dh,0ah,'$'
Message5 db 0dh,0ah,'$'
Sign db 0 ; признак отрицательности
Sign1 db 0
Sign2 db 0
O2GrO1 db 0
Flagbuf1 db 0 ; флаг работы с первым числом
Crlf db 0dh,0ah,'$'
Buf db 255
Db 0
Db 255 dup(30h)
Buf1 db 255 ; максимальная длина строки
Db 0 ; реальная длина
Db 255 dup(30h) ; буфер для строки
Length1 db?
Buf2 db 255
Db 0
Db 255 dup(30h)
Buf3 db 255
Db 0
Db 255 dup(0h)
Length2 db?
Bcg db?
Bcg1 db?
Bcg2 db?
BcgP db? ; длина числа
Adg db?
Opr db 3
Db 0
Db 3 dup(30h)
Choice db 0 ; выбор пользователя
Cr equ 0dh
; символ возврата каретки
Lf equ 0ah
; символ перехода на следующую строку
EndMsg equ '$'
.code
;===================================
CLRSCR proc ; очистка экрана
Push bp
Mov bp, sp
Push ax
Push bx
Push cx
Push dx
Xor cx, cx
Mov dx,184FH ; координаты левого верхнего угла CH-y, CL-x
Mov al,0 ; координаты правого нижнего угла DH-y, DL-x
Mov ah,06H ; количество сдвигаемых строк, если 0, то весь экран
Mov bh,7 ; номер подфункции - очистка окна
Int 10h ; атрибут цвета (черно-белый)
Pop dx
Pop cx
Pop bx
Pop ax
Pop bp
Ret
CLRSCR endp
;==================================
CXY proc ; установка курсора
Push bp
Mov bp, sp
Push ax
Push bx
Mov bh,0
Mov ah,2 ; номер видеостраницы
Mov dh,0
Mov dl,0
Int 10h
Pop bx
Pop ax
Pop bp
Ret
CXY endp
;==================================
Print proc far
Mov ah,09h
Int 21h
Ret
Print endp
;==================================
Quit proc
Mov dx, offset message5
Call Print
Mov dx, offset message4
Call Print
Mov ah,1
Int 21h
Mov Choice, al
Cmp Choice,27 ; нажатие клавиши esc
Je Vihod
Jne start
Vihod:
Mov ax,4c00h ; выход в DOS
Int 21h
Ret
Quit endp
;==================================
Swap proc
Xor di, di
Xor dx, dx
Xor cx, cx
Xor ax, ax
Xor bx, bx
Mov al, bcg2
Add di, ax
Add di,1
CiclSwap1:
Mov dl, buf1[di]
Mov bl, buf2[di]
Mov buf1[di],bl
Mov buf2[di],dl
Dec di
Cmp di,1
Jg ciclSwap1
Xor ax, ax
Xor bx, bx
Mov al, bcg1
Mov bl, bcg2
Mov bcg1,bl ; bcg1:=bcg2
Mov bcg2,al ; bcg2:=bcg1
Ret
Swap endp
;===================================
Addition proc ; cложение чисел
Mov di,1
Xor ax, ax
Mov al, adg
Add di, ax ; сколько раз записывали в стек 1 число
Xor si, si
Mov cl, adg
CLC ; сброс флага переноса CF=0
Xor ax, ax
Pmm:
Mov al, buf1[di]
Mov ah, buf2[di]
Adc al, ah
; (1-й операнд)=(1-й операнд)+(2-й операнд)+(флаг CF)
Aaa ; комманда коррекции
Mov buf3[di],al
Push ax
Inc si
Dec di
Loop pmm
Jnc Viv ; переход, если нет переноса
Mov al,0
Mov ah,0
Adc al, ah
Push ax
Add adg,1
Jmp Viv
Viv:
Call VivodRes
Call quit
Ret
Addition endp
;===================================
AddNulls proc ; добавление нулей
Mov al, bcg2
Cmp bcg1,al
Jg ll3 ; bcg1>bcg2
Jl ll4 ; bcg1<bcg2
Jmp ANL
;Начало (Добавление нулей)
Ll3:
; bcg1>bcg2-добавляем нули ко второму числу
Xor di, di
Xor si, si
Xor ax, ax
Xor cx, cx
Xor bx, bx
Xor al, al
Add al, bcg1
Sub al, bcg2
Add di,2
Add di, ax
Mov cl, bcg2
Mov si,2
Lip:
Mov bl, buf2[si]
Mov buf3[di],bl
Inc di
Inc si
Loop lip
Xor si, si
Xor cx, cx
Xor bx, bx
Mov si,2
Mov cl, bcg1
Lop:
Mov bl, buf3[si]
Mov buf2[si],bl
Inc si
Loop lop
Jmp ANL
Ll4:
; bcg1<bcg2-добавляем нули к первому числу
Xor di, di
Xor si, si
Xor ax, ax
Xor cx, cx
Xor bx, bx
Mov al, bcg2
Mov adg, al
Xor al, al
Add al, bcg2
Sub al, bcg1
Add di,2
Add di, ax
Mov cl, bcg1
Mov si,2
L4p:
Mov bl, buf1[si]
Mov buf3[di],bl
Inc di
Inc si
Loop l4p
Xor si, si
Xor cx, cx
Xor bx, bx
Mov si,2
Mov cl, bcg2
Lo4:
Mov bl, buf3[si]
Mov buf1[si],bl
Inc si
Loop lo4
ANL: ret
AddNulls endp
;=====================================
Subtraction proc ; вычитание чисел
Mov di,1
Xor ax, ax
Mov al, adg
Add di, ax ; сколько раз записывали в стек 1 число
Xor si, si
Mov cl, adg
CLC
Xor ax, ax
Mmm:
Mov al, buf1[di]
Mov ah, buf2[di]
Sbb al, ah
Aas
Mov buf3[di],al
Push ax
Inc si
Dec di
Loop mmm
Call VivodRes ; вывод результата
Call quit
Subtraction endp
;========================================
Compression proc ; сжатие числа, ds:bx - @ числа
Push di ; di - длина числа
Push si ; si - смещение:куда записать правый символ
Push ax
Push cx
Dec di
NEXT_SYMBOL:
Cmp di,0
Je l1
Mov al,[BX+di-1]
MOV CL,4
SHL AL, CL
ADD AL,[BX+di]
JMP L2
L1:
MOV Al, byte ptr [BX+di]
L2:
MOV [bx+si],AL
SUB di,2
DEC si
CMP di,0
JNL NEXT_SYMBOL
L3: ; дозапись первых символов 0
Cmp si,0
JL L4
MOV byte ptr [bx+si],0
DEC si
JMP L3
L4:
Pop cx
Pop ax
Pop si
Pop di
Ret
Compression endp
;=========================================
Binary_to_DecPacked proc ; преобразует двоичное число в Упакованный формат, ds:bp - @ числа, ds:bx - @ упакованного числа
Push si
Push ax
Push di
Push cx
MOV CX,13
NEXT:
Push cx
Mov cx,5
Mov al,0
_min:
MOV DI,0 ; число > 10 ?
MOV CX,4
NEXT_DI:
Mov al,[bp+DI]
CMP byte ptr [bp+DI],0
JNE DIVISION
INC DI
LOOP NEXT_DI
DIVISION: ; a=a-10
Push bx
Pop bx
Push bp
Push bx
Pop bx
Pop bp
Jmp _min
OSTATOC: ; запись остатка
Pop cx
Mov di, cx
Mov al,[bp+4]
Mov [bx+di-1],al
Mov di,0
Next_char:
Mov [bp+di],al
Inc di
Cmp di,5
Jl next_char
Loop NEXT ; след разряд
Mov di,13 ; сжатие дес. числа
Mov si,12
Call compression
Pop cx
Pop di
Pop ax
Pop si
Ret
Binary_to_DecPacked endp
;========================================
VivodRes proc ; вывод результата
Mov di,2
Mov cl, adg
LViv:
Mov al, buf3[di]
Inc di
Or al,30h
Mov ah,2
Mov dl, al
Int 21h
Loop LViv
Ret
VivodRes endp
;=========================================
StrTo proc ; перевод в строку
Push bp
Mov bp, sp
Xor di, di
Xor si, si
Xor ax, ax
Xor dx, dx
Xor cx, cx
Mov al, bcgP ; длина числа
Add di, ax
Add di,1
Lp1:
Mov dl,[bx+di]
Dec di
Cmp dl,'-' ; если нашли знак "минус"
Je OtricatChislo ; то, фиксируем отрицательное число
Jne PolozhChislo ; иначе, число положительное
OtricatChislo:
Cmp flagbuf1,1 ; если это первое число
Je FirstNum ; да
Jne SecondNum ; нет
FirstNum: ; признак отрицательности первого числа
Mov Sign1,1
Mov Sign,1
Jmp EndPerev
SecondNum:
Mov Sign2,1 ; признак отрицательности второго числа
Mov Sign,1
Jmp EndPerev
PolozhChislo:
And dl,0fh ; очищаем зону тройки
Xor dh, dh
Push dx
Inc si
Xor dx, dx
Cmp di,1 ; если последний символ
Jg lp1 ; нет (di>1)
EndPerev:
Mov cx, si
Mov bcgP, cl
Xor ax, ax
Xor di, di
Add di,2
Lp2:
Pop ax
Mov [bx+di],al
Cmp flagbuf1,1 ; если это первое число
Je flb1
Jne flb2
Flb1:
Mov buf1[di],al
Mov buf[di],al
Jmp dalshe
Flb2:
Mov buf2[di],al
Dalshe:
Inc di
Loop lp2
Pop bp
QuitP:
Mov flagbuf1,0 ; обнуляем флаг работы с первым числом
Ret
StrTo endp
;=========================================
Start:
Call CLRSCR
Call CXY
Mov ax, DGROUP
Mov ds, ax
Mov dx, offset message1
Call Print
Xor dx, dx
Mov dx, offset buf1
Mov ah,0Ah
Int 21h
Mov dx, offset crlf
Call Print
Mov cl, buf1[1]
Mov length1,cl ; пересылка в cl длины первого числа
Mov dx, offset message2
Call Print
Xor dx, dx
Mov dx, offset buf2
Mov ah,0Ah
Int 21h
Mov dx, offset crlf
Call Print
Mov cl, buf2[1]
Mov length2,cl ; пересылка в cl длины второго числа
Mov dx, offset message3
Call Print
Mov ah,1
Int 21h
Mov Choice, al
Cmp Choice,13
Je Nach
Jne quit
Nach: ; начало:
Mov Sign,0 ; признак положительности обоих чисел
Mov Sign1,0 ; признак положительности первого числа
Mov Sign2,0 ; признак положительности второго числа
Mov bx, OFFSET Buf1;
; загрузка в bx адреса первого числа buf1
Mov al, length1 ; в al длина первого числа
Mov bcgP, al ; длина числа
Mov flagbuf1,1 ; флаг=1 работы с первым числом
Call StrTo
; двочно-десятичное число в неупакованном формате
Mov al, bcgP ; сколько раз записывали в стек 1 число
Mov bcg1,al
Mov bx, OFFSET Buf2;
; загрузка в bx адреса второго числа buf2
Mov al, length2 ; в al длина второго числа
Mov bcgP, al
Call StrTo
Mov al, bcgP ; сколько раз записывали в стек 2 число
Mov bcg2,al
Mov al, bcg1
Mov adg, al ; сколько раз записывали в стек 1число
Call AddNulls ; добавляем нули
Nxt:
Cmp Sign,1 ; если одно из чисел отрицательное
Je YesSign
Jne sravnpolozh ; да
YesSign: ; нет - оба положительные, производим сравнение
Cmp Sign1,1 ; если отрицательно первое число
Je YesSign1; да
Jne NoSign1 ; нет
YesSign1:
Cmp Sign2,0 ; второе положительное, то выводим минус, а числа суммируем
Je VivodMinus
Jne ObaOtricat ; оба отрицательны
VivodMinus:
Mov dl,'-'
Mov ah,2
Int 21h
Jmp AddDigit ; сложение
ObaOtricat:
Sub length1,1
Sub length2,1
Mov cl, length1
Cmp cl, length2 ; сравнение длин чисел
Jg FirstGreat ; длина первого числа больше
Jl SecondGreat ; длина второго числа больше
Je Sravnenie ; длины равны
FirstGreat:
Mov dl,'-' ; выводим минус
Mov ah,2
Int 21h
Jmp OnSub ; вычитание
Sravnenie:
Lea bx, buf1
Xor di, di
Add di,2
Cicl:
Mov ah,[bx+di]
Cmp ah, buf2[di]
Jg FirstGreat
Jl SecondGreat
Loop cicl
SecondGreat:
Call Swap
Jmp OnSub ; вычитание
NoSign1: ; первое число положительное
Cmp Sign2,1 ; а второе отрицательное
Je Summa
Summa:
Jmp AddDigit
Sravnpolozh:
Mov cl, length1
Cmp cl, length2 ; сравнение длин чисел
Jg FirstGreatP ; длина первого числа больше
Jl SecondGreatP ; длина второго числа больше
Je SravnenieP ; длины равны
SravnenieP:
Lea bx, buf1
Xor di, di
Add di,2
CiclP:
Mov ah,[bx+di]
Cmp ah, buf2[di]
Jg FirstGreatP
Jl SecondGreatP
Loop ciclP
FirstGreatP:
Jmp OnSub ; вычитание
SecondGreatP:
Call Swap
Mov dl,'-' ; выводим минус
Mov ah,2
Int 21h
Jmp OnSub ; вычитание
AddDigit: ; сложение
Call Addition
OnSub: ; вычитание
Call Subtraction
End start
Похожие статьи
-
ВВЕДЕНИЕ, АНАЛИЗ ЗАДАЧИ - Теория вычислительных процессов
Ассемблер программа верификация Написать на языке ассемблер программу, реализующую вычитание двух целых упакованных 128- разрядных чисел. Описать...
-
СЕМАНТИКА, Схема подпрограммы вычитания - Теория вычислительных процессов
Операционная семантика команды sub al, 1 L1(al) 1 1 0 1 1 0 0 1 # 0 1 1 0 1 1 0 0 # L2 1. q01X1 Top1 q11 2. q11X1B1q02 3. q02X2 Top2 q12 4. q12X2 02 q22...
-
Верификация - Теория вычислительных процессов
1. Без ветвлений: A) mov di,1 Mov al, adg Add di, ax Mov al, buf1[di] Mov ah, buf2[di] Sbb al, ah TRUE B) mov dl, buf1[di] Mov bl, buf2[di] Mov...
-
Сетевыми протоколами называют протоколы первого и второго уровней, определяющих архитектуру локальной сети, в том числе ее топологию, передающую среду,...
-
Строгое определение протокола выглядит как формализованный набор правил, используемый ПК для коммуникаций. Из-за сложности коммуникаций между системами и...
-
Элементы теории графов. Сеть Петри. Конечный автомат
Вариант №8 Задача 1. Элементы теории графов Связный ориентированный граф G(Х, Г) задан множеством вершин X={x1, x2, ..., xn} и отображением Гxi={x|Ik|,...
-
Сеть Петри это двудольный направленный граф с маркировкой, ребра которого задают причинно-следственные отношения "события-условия" и именуются дугами....
-
В данном разделе выпускной квалификационной работы описывается процесс разработки программы извлечения КП текста, а также производится оценка качества ее...
-
Графическое отображение нелокальной нейронной сети в системе "Эйдос" Математический метод СК-анализа в свете идей интервальной бутстрепной робастной...
-
Структурная схема ЛВС - Проектирование учебной локальной вычислительной сети
Данная структурная схема описывает ЛВС с диаметром сети от WS4 до WS34. Схема 5. Структура сети между кабинетами №30 и №36 Расчет PDV При расчете PDV...
-
Программы для работы в Сети., Браузеры. - Использование компьютерных сетей
Браузеры. Для связи с Internet используется специальная программа -- браузер. Первоначально браузеры предназначались для просмотра документов с...
-
Назначение локальной вычислительной сети Обеспечение совместного использования ресурсов, предоставление доступа к программам, оборудованию и данным, а...
-
Объектом исследования является микросхема 4-х процессорной "системы на кристалле" на базе ядер 32-разрядных процессов цифровой обработки сигналов с...
-
Наименование организации НГУ им. Н. И. Лобачевского Национальный исследовательский университет. Сфера деятельности организации Высшее образование,...
-
Литература, Текст программы - Разработка визуального редактора
1. Методические указания по выполнению курсовых и дипломных проектов. Специальность: 2-40 02 01 "Программное обеспечение информационных технологий"; 2....
-
Постановка задачи, выбор предметной области Предметная область: "Автомобиль". Создание автомобиля будет состоять из трех этапов: выбор кузова, выбор...
-
Способ построения сети. - Технологический процесс в электронной промышленности
Существует множество способов классификации сетей. Основным критерием классификации принято считать способ администрирования. То есть в зависимости от...
-
Данная компания является ведущем производителем оборудования и выпуска квалифицированных специалистов в мире. Это одна из самых оцененных компаний в...
-
Понятие процесса архивации файлов - Архивация информации и программы-архиваторы
Одним из наиболее широко распространенных видов сервисных программ являются программы-архиваторы, предназначенные для архивации, упаковки файлов путем...
-
Сетевое оборудование должно быть установлено в соответствии с требованиями условий эксплуатации, при этом должно быть обеспечено удобство подключения к...
-
ЛВС должна обеспечивать скорость передачи данных при одновременной передаче всех узлов сети не менее 100 Мб/с. Техническое обеспечение сети должно иметь...
-
Для эксплуатации ЛВС определены следующие роли: Сетевой администратор Пользователи Основными обязанностями системного администратора являются: -...
-
Требования к диагностированию кабельных систем определяются техническим заданием на проектирование соответствующих кабельных систем. Диагностирование...
-
Сеть должна состоять из логических сегментов, соответствующих подразделениям, ее использующим. Количество рабочих станций, расположенных в таком...
-
1 этаж: 114 - компьютерный класс 20 компьютеров, 1 коммутатор, 2 коммутатора внутренних магистралей, 2 многоуровневых коммутатора. 116 - компьютерный...
-
Требования к системе в целом Требования к структуре и функционированию ЛВС .1 ЛВС должна состоять из следующих функциональных подсистем: Подсистема...
-
Выход в Internet, Некоторые полезные программы - Глобальная сеть Интернет
Для работы в Internet нужно, прежде всего, установить связь по IP протоколу с организацией, предоставляющей услуги работы в глобальной компьютерной сети...
-
Модель вычислительного процесса в GridMD - Повышение производительности работы библиотеки GridMD
Узлы графа исполнения, используемого в GridMD, представляют собой конкретные этапы исполнения, с которыми связываются действия, определяемые программным...
-
Плановый срок начала работ по модернизации локальной вычислительной сети административного здания (корпус II) НГУ им. Н. И. Лобачевского - 7 февраля 2013...
-
Программное обеспечение Графический симулятор ЛВС TFTP - сервер для импорта экспорта файлов конфигурации. Межсетевая операционная система (CISCO IOS) -...
-
Характеристики ЛВС Используемый стандарт: IEEE 802.3ab -- стандарт, использующий витую пару категорий 5e. 1000BASE-T, стандарт Gigabit Ethernet....
-
Инструментальное программное обеспечение -- это программное обеспечение, предназначенное для использования в ходе проектирования, разработки и...
-
Введение, Что такое Internet - Глобальная вычислительная сеть Internet
Что такое Internet Internet -- глобальная компьютерная сеть, охватывающая весь мир. Сегодня Internet имеет около 30 миллионов абонентов в более чем 180...
-
Заключение - Исследование и модернизация локальной вычислительной сети
Осуществляя данный проект, удалось модернизировать и повысить эффективность существующей распределенной системы. Оптимальная архитектура ЛВС позволила...
-
Служба технической поддержки и системные администраторы располагаются в отдельном кабинете, где оборудованы три рабочих места. Рабочие места следует...
-
Для выполнения курсовой работы по теме расчета и конфигурации локальной сети на основе технологии Fast Ethernet необходимо предварительно...
-
Монтаж, замена деталей, блоков должны осуществляться только при полном отключении питания. Во время монтажа необходимо полностью сделать невозможным...
-
Выполнение задания осуществлялось на эмуляторе микро ЭВМ СМ - 1800 (Эмулятор Смирнова), установленном на ПК на базе процессора AMD Atlon(tm) X2 240 2.79...
-
Требования к помещениям с сетевым оборудованием Помещение, где находится сетевое оборудование, должно отвечать следующим требованиям: Требования по шуму...
-
К эксплуатационным затратам относятся затраты, обеспечивающие поддержание рабочей среды в рабочем состоянии. В нашем случае состоят из элементов: Где -...
СЕТЬ ПЕТРИ, ТЕКСТ ПРОГРАММЫ - Теория вычислительных процессов