Підпрограма , що відповідає за виведення числа із регістру ах на дисплей .



write_element :

       push cx          

       push -1

podgotovka:   

       xor dx, dx      

       mov cx , 10

    div cx 

       push dx          

       cmp ax , 0

       jne podgotovka

       mov ah ,02h

vyvedennja:

       pop dx

       cmp dx , -1

       je goout

       add dl , 30h

       int 21h

       jmp vyvedennja         

goout:

       pop cx

ret

Принцип роботи : спочатку заносимо в стек число -1 , для того , щоб знати коли саме припиняти роботу, далі кожного разу ділимо число в регістрі ах на 10 та заносимо значення в стек , потім просто виводимо значення із стеку на дисплей ,поки не дійдемо до -1 .

Підпрограма , що відповідає за введення числа із клавіатури .

inp_val:

       xor bx, bx

       push ax 

inp_n:

       mov ah , 01h

       int 21h

       cmp al , 13

       je after_inp_n

       sub al , 48

       push ax

       mov ax , bx

       mov bx , 10

       mul bx

       mov bx , ax

       pop ax

       add bl , al

       jmp inp_n

after_inp_n:

       pop ax

ret

Принцип роботи : користуючись 1 функцією 21-го переривання зчитуємо символ , перевіряємо чи введено не «Enter» якщо ж ні , то
за умовою , що вводяться числа , маємо цифру в регістрі аl , множимо регістр bx (в якому і буде результат ) на 10 та додаємо введену цифру . В bx отримуємо число , що вводилося з клавіатури .

Підпрограма , що відповідає за виведення матриці на дисплей .

outputing_matrix :

       call ryso4ka

       mov si , 0

       mov ax , [N]

       mul ax

       mov cx , ax

       mov bx , [N]

GoOutput :

       mov ax , A[si]

       call write_element

       mov ah , 02h

       mov dl ,' '

       int 21h

       add si , 2

       dec bx

       cmp bx , 0

       jne gO_

       call endl

       mov bx , [N]

gO_:

       loop GoOutput

ret

Принцип роботи : йдемо по всіх елементах відповідної матриці та користуючись функцією “write_element”  виводимо значення на дисплей .

 

Підпрограма , що відповідає за введення матриці із клавіатури .

 

inputing_matrix :                               

       xor bx , bx                                                                

       xor si , si                                                                   

       mov ax , [N]                                                             

       mul ax

       mov cx , ax

       call ryso4ka

input_go:        

           

       mov ah , 09h

       lea dx , message_first_part_inp

       int 21h

                       

       mov ax ,[N]

       mul ax

       sub ax , cx

       inc ax

       call write_element

           

       mov ah , 09h

       lea dx , message_second_part_inp

       int 21h

 

       call inp_val

       mov A[si] ,bx

       add si , 2

       call endl

       loop input_go          

ret

 

Принцип роботи : спочатку виводимо повідомлення , що треба ввести наступний елемент матриці , потім користуючись функцією «inp_val» заповнюємо відповідну матрицю введеними значеннями .

 

Підпрограма , що відповідає за завантаження в відповідну матрицю значень із матриці заданої константно.

load_from_constant:

       mov [N] , 4

       mov cx , [N]

       lea di , const_matrix

       mov bx , 0

external_load:

       push cx

       mov cx , [N]

       mov si , 0

       internal_load:

       mov dx , [di]

       mov A[bx][si], dx

       add si , 2

       add di , 2

       loop internal_load

       pop cx

       add bx ,8

       loop external_load

ret

 

Принцип роботи : спочатку встановлюємо в N розмір матриці , в даному випадку це 4 , тобто матриця матиме розмір 4х4 , йдемо елементами константної матриці та переписуємо значення в задану .

Підпрограма , що відповідає за введення матриці із клавіатури .

LetsGetSum:

call ryso4ka

mov cx , [N]

mov bx , 0

external_GetSum:

push cx

mov cx , [N]

mov si , 0

internal_GetSum:

mov ax , A[bx][si]

mov dl , 2

div dl

cmp ah, 0

jne ifNeParne

mov dx , [Sum]

add dx , A[bx][si]

mov [Sum] , dx

mov dx , [count_of_elements]

inc dx

mov [count_of_elements] , dx

ifNeParne:

add si , 2

loop internal_GetSum

pop cx

mov ax , [N]

mov dx ,2

mul dx

add bx ,ax

loop external_GetSum

ret

 

Принцип роботи : йдемо елементами заданої матриці , якщо зустрічаємо парний елемент то додаємо його до суми , та збільшуємо лічильник парних елементів , пройшовши всі елементи значення суми та кількості парних елементів будуть збережені в змінних “Sum”  та “Count_of_elements” відповідно .

Підпрограма , що відповідає за заміну непарних елементів на 0.

LetsChangeElements:

mov cx , [N]

       mov bx , 0

external_CH:

       push cx

       mov cx , [N]

       mov si , 0

internal_CH:

       mov ax , A[bx][si]

       mov dl , 2

       div dl

       cmp ah, 0

       je ifParne

       mov dx , 0

       mov A[bx][si], dx

ifParne:

       add si , 2

       loop internal_CH

       pop cx

       mov ax , [N]

       mov dx ,2

       mul dx

       add bx ,ax

       loop external_CH

ret

Принцип роботи : йдемо елементами заданої матриці , якщо зустрічаємо непарний елемент то замінюємо його на 0.

Підпрограма , що відповідає за підрахунок нулів у стовпцях матриці.

CountingZeroes:

call ryso4ka

mov cx , [N]

mov di , 0

mov [i] , 0                      

ex_:

mov si , di

mov bx , 0

push cx

mov cx ,[N]

in_:

mov dx , A[si]

cmp dx , 0

jne after_

inc bx

after_:

mov ax , [N]

mov dx ,2

mul dx

add si ,ax

loop in_

pop cx

add di ,2

mov ah ,09h

lea dx ,message_count_of_zeroes

int 21h

mov dx , [i]

inc dx

mov [i] ,dx

mov ax , [i]

call write_element

mov ah , 02h

mov dl , ' '

int 21h

mov ax , bx

call write_element

call endl

loop ex_

ret

Принцип роботи : утворюємо цикл обходу матриці по стовпцях , в якому підраховуємо кількість нулів у кожному із стовпців , на кожній ітерації зовнішнього циклу (ex_: .. loop ex_), тобто після N ітерацій внутрішнього циклу(in_: … loop in_) виводимо на дисплей повідомлення про кількість нулів у даному рядку .

 


Дата добавления: 2018-10-27; просмотров: 168; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!