КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
БЛОК-СХЕМА АЛГОРИТМУ3.1 Блок-схема головної програми 3.2 Блок-схема виконання операцій
3.2.1 Блок-схема операції додавання
3.2.3 Блок-схема операції множення .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
|