Студопедия

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника



БЛОК-СХЕМА АЛГОРИТМУ

Читайте также:
  1. Блок-схема осциллографа.
  2. Комментарии к алгоритму 5.18.
  3. Организация обслуживания потребителей при оказании услуг по ремонту ювелирных изделий. Блок-схема технологического процесса. Оптимизированный выбор технических средств.

3.1 Блок-схема головної програми


3.2 Блок-схема виконання операцій

 

 

3.2.1 Блок-схема операції додавання

 

 

НІ
Znn:=’-‘
ТАК
Znn:=’+’
Znn:=’+’
Znn:=’+’
ТАК
НІ
3.2.2 Блок-схема операції віднімання

3.2.3 Блок-схема операції множення


4 ЛІСТИНГ ПРОГРАМИ

.386

datasg segment use16

grt db 13, 10

db 77 dup (126), 10, 13

db ' Kyrsova robota: ', 10, 13

db 77 dup (126), 10, 13

db ' stydent 3-go kyrsy grypu SPS-1466 ', 10, 13

db ' Artemenko I. Y. ', 10, 13

db ' ', 10, 13

db ' ', 10, 13

db 79 dup (126), 10, 13, '$'

mes db 13, 10

db 79 dup (126), 10, 13

db ' Vvedennya chusel', 13, 10, 10

db 79 dup (126), 13, 10, '$'

mes1 db 13, 10

db 79 dup (126), 10, 13

db ' Arufmetuko - logichnuy prustriy', 13, 10, 10

db 79 dup (126), 13, 10, '$'

mes2 db 13, 10

db 79 dup (126), 10, 13

db ' Vukonannya operacii dodavannya chusel', 13, 10, 10

db 79 dup (126), 13, 10, '$'

mes3 db 13, 10

db 79 dup (126), 10, 13

db ' Vukonannya operacii vidnimannya chusel', 13, 10, 10

db 79 dup (126), 13, 10, '$'

mes4 db 13, 10

db 79 dup (126), 10, 13

db ' Vukonannya operacii mnogennya chusel', 13, 10, 10

db 79 dup (126), 13, 10, '$'

menu db 10, 13

db ' 1.Vvedennya zminnuh', 10, 13, 10

db ' 2.Dodavannya', 10, 13, 10

db ' 3.Vidnimannya', 10, 13, 10

db ' 4.Mnogennya', 10, 13, 10

db ' 5.Exit', 10, 13, 10, '$'

str1 db 'Vvedit 1-e chuslo: $'

str2 db 'Vvedit 2-e chuslo: $'

er db 10, 13, ' Error!!!', 10, 13, 10, 10

db ' perepovnennya rozryadnoi sitku, povtorit vvedennya', 10, 13, 10

db '(dlya prodovgennya natusnit Enter....)$'

me10 db 'dlya zavershennya natusnit Enter', 10, 13, 10, 10, '$'

me20 db 10, 10, 10, 10, 10, 13, 'dlya prodovgennya natusnit byd-yaky klavishy....$'

;опис змінних та констант

fl db 0

zna db '+'

znb db '+'

znc db ?

zp db '+'

zm db '-'

zd db 'x'

a db 12 dup(0)

b db 12 dup(0)

c db 13 dup(0)

s3 db 13 dup(0)

c2 db 24 dup(0)

i db 23

datasg ends

codesg segment use16

assume CS:codesg, DS:datasg



beg:

mov AX, datasg

mov DS, AX

;макрос очищення екрану

clr macro x, y

mov AH, 6h

mov BH, 15 ;встановлення коліру пробілу білим

mov CX, x

mov DX, y

int 10h

endm

;макрос встановлення курсору

curs macro x, y

mov AH, 2h

mov BH, 0 ;установка номеру сторінки пам’яті дисплея

MOV DH, x

mov DL, y

int 10h

endm

;виведення

output macro param

mov AH, 9h

lea DX, param

int 21h

endm

;макрос обробки головного меню

menuon macro

local k, k1, k2, k3, l1, exit

k:

clr 0000h, 184fh ;очищення екрану від координати верхнього кута (0;0) до

;координати нижнього кута (24;79)

curs 0,0 ;встановлення курсору в позицію (0;0)

output mes1 ;виведення на екран напису «Arufmetuko - logichnuy prustriy»

output menu ;виведення на екран головного меню програми

mov ah, 8h ;пряме введення з клавіатури з очікуванням

int 21h

cmp al, '5' ;порівняння цифри, яка введена з клавіатури з цифрою «5»

je exit ;якщо цифри співпадають, то завершення програми (вихід)

cmp al, '1' ;якщо цифри не рівні, то порівнюється введена з клавіатури цифра з

;цифрою «1»

jne k1 ;якщо цифри однакові, то вводяться числа, над якими потрібно



;виконати арифметичні операції

ww1

ww2

k1: cmp al, '2' ;порівняння цифри, яка введена з клавіатури з цифрою «2»

jne k2 ;якщо цифри співпадають, то виконати операцію додавання

addnum zna, znb, a, b

k2: cmp al, '3' ;якщо цифри не рівні, то порівнюється введена з клавіатури цифра з

;цифрою «3»

jne k3 ;якщо цифри співпадають, то виконати операцію віднімання

subnum zna, znb, a, b

k3: cmp al, '4' ;якщо цифри не рівні, то порівнюється введена з клавіатури цифра з

;цифрою «4»

jne l1 ;якщо цифри співпадають, то виконати операцію множення

mulnum zna, znb, a, b

l1:

jmp k

exit: ;вихід з програми

xor bx, bx ;адреса повернення (виходу) з програми

endm

;макрос введення першого числа з клавіатури

ww1 macro

local n1

n1:

clr 0000h, 184fh ;очищення екрану від координати верхнього кута (0;0) до

;координати нижнього кута (24;79)

curs 0, 0 ;встановлення курсору в позицію з координатами (0;0)

output mes ;виведення на екрані напису: «Vvedennya chusel»

output me10 ;виведення на екрані напису: «dlya zavershennya natusnit Enter»

output str1 ;виведення на екрані напису: «Vvedit 1-e chuslo»

getnum zna, a ;введення першого числа з клавіатури

mov cl, fl

cmp cl, 1

je n1

endm

;макрос введення другого числа з клавіатури

ww2 macro

local n1

n1:

clr 0000h, 184fh ;очищення екрану від координати верхнього кута (0;0) до

;координати нижнього кута (24;79)

curs 0, 0 ;встановлення курсору в позицію з координатами (0;0)

output mes ;виведення на екрані напису: «Vvedennya chusel»

output me10 ;виведення на екрані напису: «dlya zavershennya natusnit Enter»

output str2 ;виведення на екрані напису: «Vvedit 2-e chuslo»

getnum znb, b

mov cl, fl

cmp cl, 1

je n1

endm

;макрос введення числа з клавіатури

getnum macro zn, n

local gkl, i, i1, j, j2, k1, k2, k3, k4, zl2, ti, perest, j1, b1, b3, exit, zkl

xor bx, bx

mov fl, bl

xor ax, ax

mov cx, 12

mov si, 0

mov zn, '+'

i:

mov n[si], 0

mov c[si], 0

inc si

loop i

mov cx, 13

mov si, 0

i1:

mov c[si], 0

inc si

loop i1

j:

mov ah, 8h ;пряме введення цифр числа з клавіатури з очікуванням

int 21h

cmp al, 13

je exit

cmp al, 2bh

jne k1

mov zn, '+' ;запис знака в режимі телетайпа з переміщенням курсору на наступну позицію

mov ah, 14

int 10h

jmp short j2

k1:

cmp al, 2dh

jne k2

mov zn, '-' ;запис знака в режимі телетайпа з переміщенням курсору на наступну позицію

mov ah, 14

int 10h

jmp j2

j2:

mov ah, 8h ;пряме введення цифр числа з клавіатури з очікуванням

int 21h

cmp al, 13

je exit

k2: ;якщо введено '.'

cmp al, 2eh

jne k3

mov ah, 14

int 10h

mov si, 6

mov cx, 3

b1:

mov ah, 8h ;пряме введення символу з клавіатури з очікуванням

int 21h

cmp al, 13

je exit

cmp al, 30h

jb b1

cmp al, 39h

ja b1

mov ah, 14

int 10h ;запис знака в режимі телетайпа з переміщенням курсору на наступну позицію

sub al, 30h

mov n[si], al

inc si

loop b1

zkl:

mov ah, 8h ;пряме введення символу з клавіатури з очікуванням

int 21h

cmp al, 13

jne zkl

jmp exit

k3: ;якщо введено цифру

cmp al, 30h

jb j2

cmp al, 39h

ja j2

mov ah, 14

int 10h ;запис знака в режимі телетайпа з переміщенням курсору на наступну позицію

sub al, 30h

mov n[5], al

mov cx, 3

j1:

mov ah, 8h ;пряме введення символу з клавіатури з очікуванням

int 21h

cmp al, 13

je exit

cmp al, 2eh

jne b3

jmp k2

b3:

cmp cx, 1

je ti ;якщо кількість цифр перевищена, то видати повідомлення про помилку

cmp cx, 1

je exit

cmp al, 30h

jb j1

cmp al, 39h

ja j1

mov ah, 14

int 10h

push cx

mov cx, 6

mov si,0

perest: ;формування введеного числа

mov dh, n[si+1]

mov n[si], dh

inc si

loop perest

pop cx

sub al, 30h

mov n[5], al

loop j1

jmp short exit

ti: ;повідомлення про помилку

error

mov bl, 1

mov fl, bl

exit:

endm

;операція додавання чисел

addnum macro za, zb, n1, n2

local k1, k2, k3, k4, k5, j4, j5, fin, kl1, kl2

clr 0000h, 184fh ;очищення екрану від координати верхнього кута (0;0) до

;координати нижнього кута (24;79)

curs 0, 0 ;встановлення курсору в позицію з координатами (0;0)

output mes2 ;виведення на екрані напису: «Vukonannya operacii dodavannya chusel»

mov al, za ;завантаження в al знака першого числа

clc ;скидання прапора перенесення

cmp al, zb ;перевірка знаків операндів

jne k2

;якщо знаки однакові, то виконуємо додавання

mov CX, 12 ;завантаження числа «12» в лічильник

mov SI, 11 ;завантаження числа «11» в регістр SI

k1:

mov al,n1[SI] ;завантаження в регістр AL цифри першого числа

add al,n2[SI] ;додавання цифр чисел

daa ;корекція результату додавання

jnc $+6 ;перехід через команду, якщо результат <= 99

mov c[SI+1]+1,ah ;переніс при додаванні (результат > 99)

mov c[SI+1],al ;молодші упаковані цифри результата

dec SI ;зменшення вмісту регістра SI на 1

loop k1 ;повторення циклу додавання із зменшенням вмісту лічильника

jnc kl1 ;перехід на формування результату за умовою, що не було переповнення

mov al, 1

jmp short kl2

kl1:

mov al, 0

kl2:

mov c[0], al

mov dl, za ;завантаження в dl знака першого числа

mov znc, dl ;формуємо знак результату за знаком першого числа

vuvid znc, c, za, zb, n1, n2, zp;перехід на макрос виводу операції і результату додавання

jmp fin ;завершення операції додавання

k2: ;якщо знаки різні, то визначаємо яке з чисел більше

mov SI, 0 ;завантаження в регістр SI «0»

mov cx, 12 ;завантаження числа «12» в лічильник

k3: mov DH, n1[SI] ;завантаження в регістр DH цифри першого числа

mov BH, n2[SI] ;завантаження в регістр BH цифри другого числа

cmp DH, BH ;визначення який з двох елементів є більшим

ja j4 ;якщо n1 > n2, то перехід на виконання віднімання n1 - n2

cmp BH, DH

ja j5 ;якщо n2 > n1, то перехід на виконання віднімання n2 – n1

inc SI ;збільшення вмісту регістра SI на1

loop k3 ;повторення циклу порівняння цифр чисел із зменшенням вмісту лічильника

j4: ;якщо n1 > n2, то виконуємо віднімання n1- n2

clc ;скидання прапора перенесення

mov CX, 12 ;завантаження числа «12» в лічильник

mov SI, 11 ;завантаження числа «11» в регістр SI

k4: mov AL, n1[SI] ;завантаження в регістр AL цифри першого числа

mov BL, n2[SI] ;завантаження в регістр BL цифри другого числа

sbb AL, BL ;віднімання операндів з позикою

das ;корекція результату віднімання

mov c[SI+1], AL ;збереження отриманої цифри результату

dec SI ;зменшення вмісту регістра SI на 1

loop k4 ;повторення циклу віднімання із зменшенням вмісту лічильника

mov dl, za ;завантаження в dl знака першого числа

mov znc, dl ;формуємо знак результату за знаком першого числа n1

vuvid znc, c, za, zb, n1, n2, zp;перехід на макрос виводу операції і результату віднімання

jmp fin ;завершення операції віднімання

j5: ;n2 > n1, то виконуємо віднімання n2 - n1

mov CX, 12 ;завантаження числа «12» в лічильник

mov SI, 11 ;завантаження числа «11» в регістр SI

k5: mov AL, n2[SI] ;завантаження в регістр AL цифри другого числа

mov BL, n1[SI] ;завантаження в регістр BL цифри першого числа

sbb AL, BL ;віднімання операндів з позикою

das ;корекція результату віднімання

mov c[SI+1], AL ;збереження отриманої цифри результату

dec SI ;зменшення вмісту регістра SI на 1

loop k5 ;повторення циклу віднімання із зменшенням вмісту лічильника

mov dl, zb ;завантаження в dl знака другого числа

mov znc, dl ;формуємо знак результату за знаком другого числа n2

vuvid znc, c, za, zb, n1, n2, zp;перехід на макрос виводу операції і результату віднімання

fin:

endm

;операція віднімання чисел

subnum macro za, zb, n1, n2

local k1, k2, k4, k5, k6, k7, k8, j4, j5, jj, jk, finn, kl1, kl2, kl12, kl22

clr 0000h, 184fh ;очищення екрану від координати верхнього кута (0;0) до

;координати нижнього кута (24;79)

curs 0, 0 ;встановлення курсору в позицію з координатами (0;0)

output mes3 ;виведення на екрані напису: «Vukonannya operacii vidnimannya chusel»

mov al, za ;завантаження в регістр al знаку першого числа

cmp al, zb ;порівняння знаків чисел

jne k1 ;якщо знаки чисел однакові, тоді визначаємо яке з чисел більше

mov SI, 0 ;завантаження в регістр SI «0»

mov cx, 12 ;завантаження числа «12» в лічильник

k2: mov DH, n1[SI] ;завантаження в регістр DH цифри першого числа

mov BH, n2[SI] ;завантаження в регістр BH цифри другого числа

cmp DH, BH ;визначення який з двох елементів є більшим

ja j4 ;якщо n1 > n2, то перехід на виконання віднімання n1 - n2

cmp BH, DH

ja j5 ;якщо n2 > n1, то перехід на виконання віднімання n2 – n1

inc SI ;збільшення вмісту регістра SI на1

loop k2 ;повторення циклу порівняння цифр чисел із зменшенням вмісту лічильника

j4: ;якщо n1 > n2, то виконуємо віднімання n1 - n2

clc

mov CX, 12 ;завантаження числа «12» в лічильник

mov SI, 11 ;завантаження в регістр SI числа «11»

k4: mov AL, n1[SI] ;завантаження в регістр AL цифри першого числа

mov BL, n2[SI] ;завантаження в регістр BL цифри другого числа

sbb AL, BL ;віднімання операндів з позикою

das ;корекція результату віднімання

mov c[SI+1], AL ;збереження отриманої цифри результату

dec SI ;зменшення вмісту регістра SI на 1

loop k4 ;повторення циклу віднімання із зменшенням вмісту лічильника

mov dl, za ;завантаження в dl знака першого числа

mov znc, dl ;формуємо знак результату за знаком першого числа n1

vuvid znc, c, za, zb, n1, n2, zm;перехід на макрос виводу операції і результату віднімання

jmp finn ;завершення операції віднімання

j5: ;якщо n2 > n1, то виконуємо віднімання n2 – n1

mov CX, 12 ;завантаження числа «12» в лічильник

mov SI, 11 ;завантаження в регістр SI числа «11»

k5: mov AL, n2[SI] ;завантаження в регістр AL цифри другого числа

mov BL, n1[SI] ;завантаження в регістр BL цифри першого числа

sbb AL, BL ;віднімання операндів з позикою

das ;корекція результату віднімання

mov c[SI+1], AL ;збереження отриманої цифри результату

dec SI ;зменшення вмісту регістра SI на 1

loop k5 ;повторення циклу віднімання із зменшенням вмісту лічильника

mov dl, zb ;формуємо знак результату

cmp dl, '+' ;порівняння знаку другого числа з «+»

jne jj

mov znc, '-' ;якщо знак другого числа «+», то знак результату «-»

jmp jk

jj: mov znc, '+' ;якщо знак другого числа «-», то знак результату «+»

jk:

vuvid znc, c, za, zb, n1, n2, zm;перехід на макрос виводу операції і результату віднімання

jmp finn ;завершення операції віднімання

 

k1: ;якщо знаки чисел різні

mov al, za ;завантаження в регістр al знаку першого числа

cmp al, '-' ;порівняння знаку першого числа з «-»

mov cx, 12 ;завантаження числа «12» в лічильник

mov si, 11 ;завантаження в регістр SI числа «11»

jne k6 ;якщо знак першого числа «-», то виконуємо додавання чисел

clc ;скидання прапора перенесення

 

k7: ;якщо знак n1 «-», а знак n2 «+», то виконуємо додавання чисел n1+ n2

mov al,n1[SI] ;завантаження в регістр AL цифри першого числа

add al,n2[SI] ;додавання цифр чисел

daa ;корекція результату додавання

jnc $+6 ;перехід через команду, якщо результат <= 99

mov c[SI+1]+1,ah ;переніс при додаванні (результат > 99)

mov c[SI+1],al ;молодші упаковані цифри результата

dec SI ;зменшення вмісту регістра SI на 1

loop k7 ;повторення циклу додавання із зменшенням вмісту лічильника

jnc kl1 ;перехід на формування результату за умовою, що не було переповнення

mov al, 1

jmp short kl2

kl1:

mov al, 0

kl2:

mov c[0], al

mov znc, '-' ;формуємо знак результату «-»

vuvid znc, c, za, zb, n1, n2, zm;перехід на макрос виводу операції і результату віднімання

jmp finn ;завершення операції віднімання

k6: ;якщо знак n1 «+», а знак n2 «-», то виконуємо додавання чисел n1+ n2

clc ;скидання прапора перенесення

k8:

mov al,n1[SI] ;завантаження в регістр AL цифри першого числа

add al,n2[SI] ;додавання цифр чисел

daa ;корекція результату додавання

jnc $+6 ;перехід через команду, якщо результат <= 99

mov c[SI+1]+1,ah ;переніс при додаванні (результат > 99)

mov c[SI+1],al ;молодші упаковані цифри результата

dec SI ;зменшення вмісту регістра SI на 1

loop k7 ;повторення циклу додавання із зменшенням вмісту лічильника

jnc kl12

mov al, 1

jmp short kl22

kl12:

mov al, 0

kl22:

mov c[0], al

mov znc, '+' ;формуємо знак результату «+»

vuvid znc, c, za, zb, n1, n2, zm;перехід на макрос виводу операції і результату віднімання

finn:

endm

;макрос помилки введення чисел

error macro

local zkl

clr 0000, 184fh ;очищення екрану від координати верхнього кута (0;0) до

;координати нижнього кута (24;79)

curs 6, 6 ;встановлення курсору в позицію з координатами (6;6)

output er ;виведення на екран напису «Error!!!

zkl:

mov ah, 8h ;пряме введення символу з клавіатури з очікуванням

int 21h

cmp al, 13

jne zkl

endm

;операція множення чисел

mulnum macro za, zb, n1, n2

local k1, k2, k3, nn2, j2, l1, hp, fat

 

clr 0000h, 184fh ;очищення екрану від координати верхнього кута (0;0) до

;координати нижнього кута (24;79)

curs 0, 0 ;встановлення курсору в позицію з координатами (0;0)

output mes4 ;виведення на екран напису «Vukonannya operacii mnogennya chusel»

mov al, 21

mov i, al

mov si, 0 ;завантаження в регістр SI «0»

mov cx, 16 ;завантаження числа «16» в лічильник

fat:

mov c2[si], 0

inc si

loop fat

mov al, za ;порівнюємо знаки чисел

cmp al, zb

jne k1

mov znc, '+' ;якщо знаки чисел однакові, то знак результату буде «+»

jmp short k2

k1:

mov znc, '-' ;якщо знаки чисел різні, то знак результату буде «-»

k2: ;виконуємо множення цифр чисел

mov CX, 13

mov SI, 0

k3: mov s3[SI], 0 ;обнулення допомiжного масиву

inc SI

loop k3

mov CX, 12 ;зовнiшнiй цикл

mov SI, 11 ;зовнiшнiй iндекс

j2: mov AL, n2[si]

mov DL, AL ;зберiгання множника

push CX

mov di, 11 ;внутрiшнiй iндекс

mov CX, 12 ;внутрiшнiй цикл

mov DH, 0

l1: mov BL, n1[di] ;другий множник

mul BL ;множення вмiсту AL * BL

aam ;корекцiя множення

clc

adc AL, DH ;зберiгання результату

mov DH, AH ;перенесення iз розряду

xor AH, AH

aaa

jnc hp

add DH, 1

hp: mov s3[di+1], AL ;занесення в допомiжний масив результату

dec di ;змiна iндексу для наступноi iтерацii

mov AL, DL

loop l1

mov s3[0], dh

xor AX, AX

mov bp, 12

mov CX, 13 ;визначення кiлькостi iтерацiй

clc

push si

mov si, word ptr i

nn2: mov AL, c2[si]

mov BL, s3[bp]

adc AL, BL

aaa

mov c2[si], AL

dec bp

dec si

loop nn2

dec i

pop si

pop CX

dec si

loop j2

vuvid2 znc, c2, za, zb, n1, n2, zd;перехід на макрос виводу операції і результату множення

endm

;макрос виводу на екран результату виконання операції додавання або віднімання

vuvid macro zc, s3, za, zb, h1, h2, opr

local n3, k6, n1, n13, n23, n11, n21

mov AH, 2h

mov BH, 0

MOV DH, 13

mov DL, 20

int 10h

mov CX, 12

mov SI, 0

mov AH, 14

mov al, za ;виведення на екран знаку першого числа

int 10h

n3:

cmp si, 6

jne n1 ;виведення на екран цифр першого числа

mov AH, 14

mov al, 2eh ;виведення на екран крапки

int 10h

n1:

mov AH, 2

mov DL, h1[SI]

add DL, 30h

int 21h

inc SI

loop n3

mov al, ' ' ;переведення курсору на наступну позицію

mov ah, 14

int 10h

mov al, opr ;виведення на екран знаку операції

mov ah, 14

int 10h

mov al, ' ' ;переведення курсору на наступну позицію

mov ah, 14

int 10h

mov CX, 12

mov SI, 0

mov AH, 14

mov al, zb ;виведення на екран знаку другого числа

int 10h

n13:

cmp si, 6

jne n11 ;виведення на екран цифр другого числа

mov AH, 14

mov al, 2eh ;виведення на екран крапки

int 10h

n11:

mov AH, 2

mov DL, h2[SI]

add DL, 30h

int 21h

inc SI

loop n13

mov al, ' ' ;переведення курсору на наступну позицію

mov ah, 14

int 10h

mov al, '=' ;виведення на екран знаку «=»

mov ah, 14

int 10h

mov al, ' ' ;переведення курсору на наступну позицію

mov ah, 14

int 10h

mov CX, 13

mov SI, 0

mov AH, 14

mov al, zc ;виведення на екран знаку результату

int 10h

n23:

cmp si, 7

jne n21 ;виведення на екран цифр результату

mov AH, 14

mov al, 2eh ;виведення на екран крапки

int 10h

n21:

mov AH, 2

mov DL, s3[SI]

add DL, 30h

int 21h

inc SI

loop n23

output me20 ;виведення на екран напису «dlya prodovgennya natusnit byd-yaky klavishy....»

mov AH, 8h ;пряме введення символу з клавіатури з очікуванням

int 21h

clr 0000h, 184fh ;очищення екрану від координати верхнього кута (0;0) до

;координати нижнього кута (24;79)

curs 0, 0 ;встановлення курсору в позицію з координатами (0;0)

endm

;макрос виводу на екран результату виконання операції множення

vuvid2 macro zc, s3, za, zb, h1, h2, opr

local n3, n1, n11, n13, n21, n23

mov AH, 2h

mov BH, 0

MOV DH, 13

mov DL, 16

int 10h

mov CX, 12

mov SI, 0

mov AH, 14

mov al, za ;виведення на екран знаку першого числа

int 10h

n3:

cmp si, 6

jne n1 ;виведення на екран цифр першого числа

mov AH, 14

mov al, 2eh ;виведення на екран крапки

int 10h

n1:

mov AH, 2

mov DL, h1[SI]

add DL, 30h

int 21h

inc SI

loop n3

mov al, ' ' ;переведення курсору на наступну позицію

mov ah, 14

int 10h

mov al, opr ;виведення на екран знаку операції

mov ah, 14

int 10h

mov al, ' ' ;переведення курсору на наступну позицію

mov ah, 14

int 10h

mov CX, 12

mov SI, 0

mov AH, 14

mov al, zb ;виведення на екран знаку другого числа

int 10h

n13:

cmp si, 6

jne n11

mov AH, 14 ;виведення на екран цифр другого числа

mov al, 2eh ;виведення на екран крапки

int 10h

n11:

mov AH, 2

mov DL, h2[SI]

add DL, 30h

int 21h

inc SI

loop n13

mov al, ' ' ;переведення курсору на наступну позицію

mov ah, 14

int 10h

mov al, '=' ;виведення на екран знаку «=»

mov ah, 14

int 10h

mov al, ' ' ;переведення курсору на наступну позицію

mov ah, 14

int 10h

mov CX, 16

mov SI, 0

mov AH, 14

mov al, zc ;виведення на екран знаку результату

int 10h

n23:

cmp si, 10

jne n21

mov AH, 14 ;виведення на екран цифр результату

mov al, 2eh ;виведення на екран крапки

int 10h

n21:

mov AH, 2

mov DL, s3[SI]

add DL, 30h

int 21h

inc SI

loop n23

output me20 ;виведення на екран напису «dlya prodovgennya natusnit byd-yaky klavishy....»

mov AH, 8h ;пряме введення символу з клавіатури з очікуванням

int 21h

clr 0000h, 184fh ;очищення екрану від координати верхнього кута (0;0) до

;координати нижнього кута (24;79)

curs 0, 0 ;встановлення курсору в позицію з координатами (0;0)

endm

clr 0000h, 184fh ;очищення екрану від координати верхнього кута (0;0) до

;координати нижнього кута (24;79)

curs 0, 0 ;встановлення курсору в позицію з координатами (0;0)

output grt ;виведення iнформацii про виконавця

output me20 ;виведення на екран напису «dlya prodovgennya natusnit byd-yaky klavishy....»

mov ah, 8 ;пряме введення символу з клавіатури з очікуванням

int 21h

clr 0000h, 184fh ;очищення екрану від координати верхнього кута (0;0) до

;координати нижнього кута (24;79)

curs 0, 0 ;встановлення курсору в позицію з координатами (0;0)

menuon ;виведення головного меню програми

mov AX, 4C00h ;кінець програми

int 21h

ends

end beg


Дата добавления: 2015-01-01; просмотров: 35; Нарушение авторских прав


<== предыдущая лекция | следующая лекция ==>
Формати числових даних | Этапы подготовки и решения задач на ЭВМ. 10) Конспект лекцій з системного програмування.
lektsii.com - Лекции.Ком - 2014-2019 год. (0.118 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты