Задачка про матрицы - Assembler
Формулировка задачи:
Доброго времени суток! имеется такая задачка - все положительные элементы матрицы С(M,N) разделить на константу Е, все отрицательные - умножить на нее. M=3, N=3,E=4
Вот все, что я смог по ней наплодить, ассемблер пока вещь абсолютно незнакомая, подмогите пожалуйста
большое спасибо
.286 .model small .stack 100h .data matr db -1 4 8 db -3 -4 16 db 4 4 -2 .code begin: mov ax, @data mov ds, ax mov si, 1 ; s4et4ik mov ah,9 ;ostalos' elementov m1: cmp ax[si],0 jge div 4 jl imul 4 dec ah cmp ah,0 jz int 21h end m1 end begin
Решение задачи: «Задачка про матрицы»
textual
Листинг программы
.286 .model small .stack 100h .data matr db -1,4,-2,8,-5,12,-3,4,4 .code .startup mov ax,@data mov ds,ax lea bx,matr mov si,3*3-1 ; длина массива loop0: ; mov al,[bx+si] ;записываем в переменную si-ый член массива xor ah,ah ; в ah получается, что записываем 0 mov cl,2 ; записываем в cl 2(ибо 4 это 2 во второй) or al,al ; сравниваем с нулем( тоже что и cmp al 0) jns pos ; если правда, то перескакиваем на pos add cl,12 ; если неправда, то к cl прибавляем 12? и тогда вправо сдвигаем на 14 битов? pos: ror ax,cl ;делим на 4 mov [bx+si],al ; записываем на место в массиве нашу измененную переменную dec si ; уменьшаем количество непройденных элементов jns loop0 ; идем в начало цикла mov ax,4c00h int 21h end
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д