Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .model small
- .stack 100h ; сегмент стека
- .386 ; разрещение трансляции команд процессора 386
- .data ; сегмент данных
- mas dw 20 dup (0); исходный массив
- result db 7 dup (?) ; число, которое будем выводить на экран
- nl DB 0Dh, 0Ah, '$' ; возврат каретки, перевод строки
- .code ; сегмент кода
- start:
- mov ax, @data; инициализациЯ сегментного
- mov ds,ax; регистра DS
- ; иницилизациЯ первой строки
- mov cx, 10; значение счетчика цикла
- mov bx, 3 ; добавление 3-х
- mov ax, 0 ;обнуление ax
- mov si, 0; индекс начального элемента в сх
- call init; вызов процедуры длЯ инциализации первых 10 эл
- ; иницилизациЯ второй строки
- mov cx,10; значение счетчика цикла
- mov si, 20; индекс начального элемента
- mov ax, 5 ; первый эл. квадрат 3-ки
- call init2; вызов процедуры длЯ инциализации сл.10 эл.
- mov si, 0; переход к 1-му элементу;
- mov cx, 2; кол-во строк
- show1: ; цикл вывода эл. массива на экран
- push cx
- mov cx,10; кол-во столбцов
- show2:
- mov ax, mas[si]; значние эл. массива помещаетсЯ в
- mov bl, 10; основание системы счислениЯ
- call byte_asc; вызов функции преобразованиЯ числа в строку
- mov ah, 09h ; вывод символа
- mov dx, offset result; вывод на экран строки
- int 21h
- mov di,0 ; обнуление di
- masnull:
- mov result[di],0 ; обнуление result
- inc di ; счетчик
- cmp di,6 ; сравнение с 6
- jnz masnull ; если masnull не равно 0
- add si,2; переход к сл.эл
- loop show2 ;повтор цикла
- pop cx
- mov dx, offset nl
- int 21h
- loop show1 ;повтор цикла
- mov ax, 4C00h ;стандартный выход
- int 21h
- init proc
- go: add ax, bx; прибавление BX к
- mov mas [si], ax; запись результата умножениЯ в массив
- add si,2; переход к сл.элементу
- loop go; повтор цикла
- ret
- init endp
- init2 proc
- go2:push ax
- mul ax; умножение предыдущего эл. на BX
- mov mas [si], ax; запись результата умножениЯ в массив
- add si,2; переход к сл.элементу
- pop ax ; извлекли ах
- add ax, 3 ; добавили к ах 3
- loop go2; повтор цикла
- ret
- init2 endp
- byte_asc proc; функциЯ преобразованиЯ числа в строку
- pusha ;
- mov si, 5; максимальное кол-во цифр в числе
- one:
- mov dx,0 ; обнуление
- div bx; деление AX на BX
- add dl, 30h;преобразование числа в символ
- mov result[si], dl ; помещение результата
- dec si ; декрементировать
- cmp ax,0; сравнение Ђ• с нулем
- jnz one; если Ђ• не равно 0
- mov result[6], '$' ; конец строки
- popa ;
- ret
- byte_asc endp
- end start
Advertisement
Add Comment
Please, Sign In to add comment