.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