Обращение к области памяти - Assembler
Формулировка задачи:
Здравствуйте!
Имеется 3 области памяти, в каждой расположен массив.
Код1(работает):
Код2: (ошибка)
Перепробовал много способов, не получается.
Регистры сегментов gs и fs компилятор ругает, их использовать не получается.
Подскажите, пожалуйста, в какую сторону думать..
; тут все работает отлично, т.к. 3й массив инициализируется в начале(статический). pop dx pop ax mov es,ax ;адрес массива А mov ss,dx ;адрес массива B push dx ; сохраняю для дальнейшей работы push ax xor si,si xor di,di xor bx,bx mov cx,lenB ForI: push cx mov cx,lenA push si mov ax,word ptr ss:[di] ;массив B ForJ: cmp word ptr es:[si],ax;массив А jne NextJ add x[bx],1; массив Х NextJ: add si,2 loop ForJ add di,2 add bx,2 pop si pop cx loop ForI
;в большинстве случаев, которые я перепробовал массив X ;был в разы больше заданного размера и заполнен левыми значениями pop bx;адрес массива X pop ax;адрес массива B pop dx;адрес массива A push bx push ax push dx mov es,ax;адрес массива B mov ss,dx;адрес массива A xor si,si xor di,di xor bp,bp mov cx,lenB ForI: push cx mov cx,lenA push si push es; запись адреса массива B в стек mov ax,word ptr es:[di];массив B ForJ: cmp word ptr ss:[si],ax; массив A jne NextJ mov es,ax; es = адрес массива X add word ptr es:[bp],1; массив X NextJ: add si,2 loop ForJ add di,2 add bp,2 pop es ;извлекаю адрес массива B pop si pop cx loop ForI
Решение задачи: «Обращение к области памяти»
textual
Листинг программы
;3 адреса, 3х массивов: ;ax; массив 1 ;bx;массив 2 ;dx;массив 3 ;2 сегментных регистра: ;es,ss; 3й использовать не получается.(fs и gs компилятор ругает) mov es,ax mov ss,bx ;dx=? xor si,si xor bp,bp xor di,di ;цикл: fori: push es; помещаю адрес массива 1 в стек mov ax,word ptr es:[si] forj: add ax,word ptr ss:[di] ; массив 2 mov es,dx ; это неверно.. mov word ptr es:[bp],ax ;приходится использовать один сегментный регистр, но из-за этого возникает ошибка loop forj pop es ; извлекаю адрес 1го массива loop fori
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д