Навигация
Главная
Поиск
Форум
FAQ's
Ссылки
Карта сайта
Чат программистов

Статьи
-Delphi
-C/C++
-Turbo Pascal
-Assembler
-Java/JS
-PHP
-Perl
-DHTML
-Prolog
-GPSS
-Сайтостроительство
-CMS: PHP Fusion
-Инвестирование

Файлы
-Для программистов
-Компонеты для Delphi
-Исходники на Delphi
-Исходники на C/C++
-Книги по Delphi
-Книги по С/С++
-Книги по JAVA/JS
-Книги по Basic/VB/.NET
-Книги по PHP/MySQL
-Книги по Assembler
-PHP Fusion MOD'ы
-by Kest
Professional Download System
Реклама
Услуги

Автоматическое добавление статей на сайты на Wordpress, Joomla, DLE
Заказать продвижение сайта
Программа для рисования блок-схем
Инженерный калькулятор онлайн
Таблица сложения онлайн
Популярные статьи
OpenGL и Delphi... 65535
Форум на вашем ... 65535
21 ошибка прогр... 65535
HACK F.A.Q 65535
Бип из системно... 65535
Гостевая книга ... 65535
Invision Power ... 65535
Пример работы с... 65535
Содержание сайт... 65535
ТЕХНОЛОГИИ ДОСТ... 65535
Организация зап... 65535
Вызов хранимых ... 65535
Создание отчето... 65535
Имитационное мо... 65535
Программируемая... 65535
Эмулятор микроп... 65535
Подключение Mic... 65535
Создание потоко... 65535
Приложение «Про... 65535
Оператор выбора... 65535
Реклама
Сейчас на сайте
Гостей: 8
На сайте нет зарегистрированных пользователей

Пользователей: 13,361
новичок: uehuat
Новости
Реклама
Выполняем курсовые и лабораторные по разным языкам программирования
Подробнее - курсовые и лабораторные на заказ
Delphi, Turbo Pascal, Assembler, C, C++, C#, Visual Basic, Java, GPSS, Prolog, 3D MAX, Компас 3D
Заказать программу для Windows Mobile, Symbian

Моделирование автомойки на GPSS + Отчет + Блок схемы
Метод половинного деления для нахождения корня уровнения на Turbo Pascal...
Обучающая и тестирующая программа по здаче экзамена ПДД на Turbo Pascal ...

Площадь треугольника
format mz
;;;;;;;;;;;;;;;
macro print str,color {
local go
local exit

mov si,str
go:
mov al,[si]
cmp al,'$'
je exit

MOV AH,0eh;функция вывода на экран

mov bh,00;страница
mov bl,color;0dah;атрибут цвета

int 10h

inc si
jmp go
exit:
}




;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;
;???????????????????????????
macro setcursor x,y{

mov dh,x
mov dl,y

mov ah,2
mov bx,0
int 10h
}
;;;;;;;;;;;;;;;;;;
begin:

mov ax,cs
mov ds,ax
;mov es,ax

mov ax,0004h ; ;???????????????????????????
int 10h ;





;call vvod_trg


;jmp exit
;gets 5,20

call print_menu


@@:
;9= tab
;27=esc
;0=del
;13=enter
;8 = backs..
mov ah,00;команда на ввод символа который будет помещен в AL
int 16h;

cmp al,9 ;
jne notab

mov al,[m_exit_cvet]
mov ah,[m_plosh_cvet]
xchg al,ah

mov [m_exit_cvet],al
mov [m_plosh_cvet],ah

mov ax,0004h ;;???????????????????????????
int 10h ;;???????????????????????????

call print_menu
notab:

cmp al,13
jne noenter
cmp [m_exit_cvet],1
je exit

;вызываем процедуру для ввода сторон треугольника
;call vvod_tr
call vvod_trg
mov ax,0004h ;
int 10h

call print_menu
noenter:





jmp @r
exit:

mov ax, 4c00h ;
int 21h
;==============
msg db 10, 56 dup (?) ;Set msg array
m_plosh db "Ploshad $"
m_plosh_cvet db 1

m_exit db " EXIT$"
m_exit_cvet db 3


menuCoor1 db " 10|15 coor1$"
menuCoor2 db " 07|05 coor2$"
menuCoor3 db " 17|05 coor3$"

menuRezult db " Rezult="

msgS db "$$$$$$$$$$$$$$$$$$$$$$"

menu_color db 1,3,3,3,3

x dw 10,7,17
y dw 15,5,5

endl db 10,13,'$'
temp db 0
;AB dw 0
;AC dw 0
S db "S=$"
;метод рисует меню
print_menu:
;сначало рисуем меню площядь
print m_plosh,[m_plosh_cvet]


;затем выход

print m_exit,[m_exit_cvet]

ret
;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;
strTodgt: ; строку в число, принимает строку в si , вывод в ах
;метод который переводит с строки в числовой формат
mov dx,0
;mov si,%1
@@: ;начало цикла
mov ax,0
mov cx,0
mov al,[si] ;???????????????????????????
cmp al,'$' ;???????????????????????????
je @f
sub al,30h ;для получения самой цифры по ее коду мы должны вычесть 30h,; вычитаем из содержимому регистра AL 30H(H значит, что число в 16-тиричной системе счисления)


mov cx,ax ;???????????????????????????
mov bx,10 ;???????????????????????????
mov ax,0 ;???????????????????????????
mov ax,dx ;???????????????????????????
mul bx ; ;???????????????????????????

add ax,cx

mov dx,ax
inc si

jmp @r
@@:
mov ax,dx

ret
;;;;;;;;;;;;;;;;;;;

dgtTostr: ;число в строку
;ax=число
;si=строка

mov dl,'$' ;???????????????????????????
push dx



vuv_chisla_s:
mov dx,0
mov bx,10
div bx


add dl,30h

push dx

cmp ax,0
jne vuv_chisla_s
; ;теперь числа вынимаеи из стека
gopop:
pop dx
mov [si],dl ;???????????????????????????
cmp dl,'$'
pushf
inc si ;???????????????????????????
popf
jne gopop

ret
;=====================




;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
vvod_trg:
;вход в подменю
;рисуем 5 строк выход, 3 координа ввода и выход
;переключение между ними таб
setcursor 1,0

;menu_color db 1,3,3,3,3
mov [menu_color],1
mov [menu_color+1],3
mov [menu_color+2],3
mov [menu_color+3],3
mov [menu_color+4],3
call print_pod_menu
xor bx,bx
xor si,si; указатель строки
xor di,di
vcikl:
push bx
push si

mov ah,00;команда на ввод символа который будет помещен в AL
int 16h;

cmp al,27
jne @f
pop ax
pop ax
ret
@@:

cmp al,9
jne vnotab


call cls
setcursor 0,0
call print_menu
setcursor 1,0
call next_menu
call print_pod_menu

pop si
pop bx
inc bx
add si,15

cmp bx,4
jne @f
pusha
call vu4islitS;вычисляем площядь треугольника
popa
xor bx,bx
xor si,si

jmp vcikl

@@:

cmp bx,0
je @f
push bx
;вызываем обработцик ввода координат
push si

inc bx
call vvod_chisel

pop si
pop bx

cmp al,27
je vexit

@@:
jmp vcikl
;если выбрано меню то идем туда

vnotab:

pop si
pop bx

;проверим может нажали энтер
cmp al,13
jne @f
cmp bx,0
jne @f
ret
@@:
jmp vcikl
vexit:




ret
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
cls:

mov ax,0600h
mov bh,00
mov cx,0000 ;верхняя левая позиция
mov dx,184fh
int 10h

ret
;====================================
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
next_str:
mov ah,9
mov dx,endl
int 21h
ret
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
next_menu:
;увеличиваем цвета
;0=3 3=2 2=1
;pusha
xor ax,ax
mov ah,[menu_color+3]

mov al,[menu_color]
mov [menu_color],ah

mov ah,[menu_color+1]
mov [menu_color+1],al

mov al,[menu_color+2]
mov [menu_color+2],ah

mov ah,[menu_color+3]
mov [menu_color+3],al

;popa
ret
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
print_pod_menu:
print m_exit,[menu_color]
call next_str
print menuCoor1,[menu_color+1]
call next_str
print menuCoor2,[menu_color+2]
call next_str
print menuCoor3,[menu_color+3]
call next_str
print menuRezult,[menu_color+4]

ret
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
vvod_chisel:
;выделяем площядь для вывода
;два числа вписуем в строку
;если пользователь не нажал на цифры то поле не меняем
;если нажал то обнуляем все
add di,2
cmp di,6
jl @f
xor di,di
@@:

sub si,15
add si,3
;ставим курсор
push bx
setcursor bl,3

;закрашиваем два символа
call set_color_did

;вводим занчения туда
pop bx
push bx
setcursor bl,3 ;???????????????????????????
mov [msg],'$'
mov [msg+1],'$' ;???????????????????????????
mov [msg+2],'$'
call get_didgit



cmp al,0 ;del
jne @f

mov [menuCoor1+si],'0'
mov [menuCoor1+si+1],'0'

mov [menuCoor1+si+3],'0'
mov [menuCoor1+si+4],'0'

; mov
pop bx ;очищяем стек
push bx
sub si,3
call vvod_chisel_pressDel
pop bx ;очищяем стек
push bx
setcursor bl,3
;цвет возврящяем прежний
call set_color_norm_did
pop bx
;востанавливаем si
add si,15
jmp vvod_chisel
@@:
;---------
cmp al,27
jne @f
pop bx ;очищяем стек
ret
@@:
;---------
cmp [msg],'$'
je @f
push si
mov si,msg
call strTodgt
mov word [x+di],ax ;???????????????????????????
pop si
@@:


pop bx
push bx
setcursor bl,3
;цвет возврящяем прежний
call set_color_norm_did
;начинаем заполнять У
pop bx
push bx
setcursor bl,6
call set_color_did

pop bx
push bx
setcursor bl,6 ;???????????????????????????
add si,3
mov [msg],'$'
mov [msg+1],'$' ;???????????????????????????
mov [msg+2],'$'

call get_didgit


cmp al,0 ;del
jne @f

mov [menuCoor1+si],'0'
mov [menuCoor1+si+1],'0'

mov [menuCoor1+si-2],'0'
mov [menuCoor1+si-3],'0'

; mov
pop bx ;очищяем стек
push bx
sub si,6
call vvod_chisel_pressDel
pop bx ;очищяем стек
push bx
setcursor bl,6
;цвет возврящяем прежний
call set_color_norm_did
pop bx
;востанавливаем si
add si,15
jmp vvod_chisel
@@:


cmp al,27
jne @f
pop bx ;очищяем стек
ret
@@:
;-------------
cmp [msg],'$'
je @f
mov si,msg
call strTodgt
mov word[y+di],ax
@@:


pop bx
push bx
setcursor bl,6
;цвет возврящяем прежний
call set_color_norm_did
pop bx


ret

vvod_chisel_pressDel:

mov [di+x],0
mov [di+y],0
;также обнуляем строки
;вернее выводим обнуленные
push si
mov ax,si
mov si,menuCoor1
add si,ax
setcursor bl,0
print si,3
pop si
cmp di,0
je @f
sub di,2
ret
@@:
mov di,4
ret

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;=======================================
set_color_did:




;и закрашиваем два символа вправо


mov ah,8
mov bx,0
int 10h


MOV AH,09h;функция вывода на экран
;mov al,' ';символ который выводим
mov bh,00;страница
mov bl,02h;атрибут цвета
mov cx,01;число повторений
int 10h

;смотрим положение курсора
mov ah,3
xor bx,bx
int 10h

inc dl
setcursor dh,dl

mov ah,8
mov bx,0
int 10h

;выделяем символы
;и только выделить а не стереть
MOV AH,09h;функция вывода на экран
;mov al,' ';символ который выводим
mov bh,00;страница
mov bl,02h;атрибут цвета
mov cx,01;число повторений
int 10h

ret
;========================================
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;========================================
get_didgit:
;водим два числа

mov ah,00
int 16h

cmp al,13 ;enter
je get_didgit_exit

cmp al,9 ;tab
je get_didgit_exit

cmp al,27 ;esc
je get_didgit_exit

cmp al,0 ;del
je get_didgit_exit

;одниляем два элемента
push ax
MOV AH,09h;функция вывода на экран
mov al,' ';символ который выводим
mov [menuCoor1+si+1],al
mov bh,00;страница
mov bl,02h;атрибут цвета
mov cx,02;число повторений
int 10h


pop ax


mov [menuCoor1+si],al
mov [msg],al

;вывели сивол
MOV AH,0eh;функция вывода на экран
mov bh,00;страница
mov bl,2;атрибут цвета

int 10h




mov ah,00
int 16h

cmp al,13 ;enter
je get_didgit_exit

cmp al,9 ;tab
je get_didgit_exit

cmp al,27 ;esc
je get_didgit_exit

cmp al,0 ;del
je get_didgit_exit

mov [msg+1],al
mov [menuCoor1+si+1],al ;???????????????????????????
;вывели сивол
MOV AH,0eh;функция вывода на экран
mov bh,00;страница
mov bl,2;атрибут цвета
int 10h



get_didgit_exit:

ret
;========================================
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;=======================================
set_color_norm_did:




;и закрашиваем два символа вправо


mov ah,8
mov bx,0
int 10h


MOV AH,09h;функция вывода на экран
;mov al,' ';символ который выводим
mov bh,00;страница
mov bl,01h;атрибут цвета
mov cx,01;число повторений
int 10h

;смотрим положение курсора
mov ah,3
xor bx,bx
int 10h

inc dl
setcursor dh,dl

mov ah,8
mov bx,0
int 10h

;выделяем символы
;и только выделить а не стереть
MOV AH,09h;функция вывода на экран
;mov al,' ';символ который выводим
mov bh,00;страница
mov bl,01h;атрибут цвета
mov cx,01;число повторений
int 10h

ret
;========================================
vu4islitS:
;сначало смотрим все занчения координат

xor ax,ax
xor dx,dx
;вычисляем площядь треугольника
mov ax,word[x]
mov bx,word[x+4]
sub ax,bx

mov cx, word[y+2]
mov dx, word[y+4]
sub cx,dx

imul cx

push ax

mov ax,word[x+2]
mov bx,word[x+4]
sub ax,bx

mov cx, word[y]
mov dx, word[y+4]
sub cx,dx


imul cx

mov bx,ax

pop ax


sub ax,bx

cmp ax,0
jge @f
neg ax
@@:

xor dx,dx
xor bx,bx
mov bx,2 ;???????????????????????????
div bx ;???????????????????????????

;
mov si,msgS

call dgtTostr


ret
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;------------------------------------------
;------------------------------------------
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;



Опубликовал Kest May 12 2014 22:31:13 · 0 Комментариев · 3218 Прочтений · Для печати

• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •


Комментарии
Нет комментариев.
Добавить комментарий
Имя:



smiley smiley smiley smiley smiley smiley smiley smiley smiley
Запретить смайлики в комментариях

Введите проверочный код:* =
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.

Нет данных для оценки.
Гость
Имя

Пароль



Вы не зарегистрированны?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Поделиться ссылкой
Фолловь меня в Твиттере! • Смотрите канал о путешествияхКак приготовить мидии в тайланде?
Загрузки
Новые загрузки
iChat v.7.0 Final...
iComm v.6.1 - выв...
Visual Studio 200...
CodeGear RAD Stud...
Шаблон для новост...

Случайные загрузки
Pass [Исходник на...
MiniTetris [Исход...
Cтатьи Королевств...
CwstatusBar
TmxOutlookBarPro
Шифрование по алг...
Экранная лупа
Приемы программир...
Определние размер...
FatScrollbar
DirHTMLReportBuil...
Усложнённый кальк...
Progressbar
HTMLredaktor
ЯЗЫК ПРОГРАММИРОВ...
Apollovcl61
PRNDbgrid
База для Allsubmi...
CoolHints2k v1.03
Панель Наша Кнопка

Топ загрузок
Приложение Клие... 100771
Delphi 7 Enterp... 97787
Converter AMR<-... 20259
GPSS World Stud... 17014
Borland C++Buil... 14186
Borland Delphi ... 10267
Turbo Pascal fo... 7372
Калькулятор [Ис... 5968
Visual Studio 2... 5205
Microsoft SQL S... 3661
Случайные статьи
Покраска
Верхнеприводная ме...
Топология сети
Получение аннотаци...
Игровые автоматы. ...
Автосервис
Примечание Если ау...
Игровые симуляторы...
Аттракторы
Атрибуты представл...
Проектирование
Определить взаимно...
Реализация контейн...
Использование прот...
Язык С: перестановки
Лицензирование акт...
Предпосылки создан...
Процедуры воспроиз...
Подтверждение реги...
21 Д Безопасность ...
Свазиленд приглаша...
Взлом Хотмыла
Ошибка TACTIVEFORM...
Программирование г...
Старда Казино
Статистика



Друзья сайта
Программы, игры


Полезно
В какую объединенную сеть входит классовая сеть? Суммирование маршрутов Занимают ли таблицы память маршрутизатора?