Здравствуйте..нужно решить задачу по сложению матриц, но вначале я решил попробовать просто с массивами и что-то не вышло( Код (Text): assume CS:code,DS:data ;исходные массивы и получаемый массив (m3) data segment m1 db 1,2,3,4 m2 db 5,5,5,5 m3 db 4 dup (0) data ends code segment start: mov ax,data ;data -->ds mov ds,ax cld ;обнуление DF для команд stos и lods mov CX,4 ; счетчик цикла mov es,ax ; для stos вроде mov si,offset m1 ;адреса массивов "инициализируем" mov bx,offset m2 mov di,offset m3 @@cicl: lodsb ; элемент массива m1 в AX add ax, [bx] ; прибавляем к первому массиву второй inc bx ; к следующему эл-ту m2 stosb ; результат в es:di ;вывод массива m3 на экран mov ah,02h mov dl,m3[di] ;собственно обход массива add dl,'0' ; преобразование числа в символ int 21h loop @@cicl mov ax,4c00h int 21h code ends end start только в результате мне выводится не получаемые значения, а ерунда...почему не могу понять.. И еще, можно ли реализовать сложение массивов без stos и lods или эти команды обязательны? И еще вопросик по ходу: есть ли различия если переписать строку add ax, [bx] так add ax, bx ? подскажите плиз..
Используй отладчик сразу всё поймёшь где твои проблемы, проглядев твой сорец беглым взлядом заметил: 1) loop @@cicl должен явно быть перед выводом 2) сами цифры не выведуться потому что выдоятся символы аскии (добадляй к цифрам 30h) 3) конец строки в досе обозначается баксом '$' 4) bx значит содержимое регистра а, [bx] - это то что находится в памяти по смещению которые находится в регистре bx (косвенная адресация)
Kronit Вот как раз из-за этих дурных команд у тебя и выводится ерунда, т.к. stosb сохраняет al в [di] и увеличивает di на единицу и mov dl,[di] берет еще не записанное неинициализированное значение. А уж mov dl,m3[di] это вообще фиг знает что (по сути di+offset m3 - вообще далеко за пределами массива) Раз у тебя в цикле используется три массива, то лучше вообще не использовать lodsb\stosb, а делать так: Код (Text): mov cx,4 lea si, [cx+offset m1] lea bx, [cx+offset m2] lea di, [cx+offset m3] neg cx @@cicl: mov al,[si+cx] add al,[bx+cx] mov [di+cx],al ... ;mov dl,al или mov dl,[di+cx] add cx jnz @@cicl