Определить содержимое регистра AX - Assembler
Формулировка задачи:
надо найти что выйдет в АХ? люди добрые помогите,,, дано:
.data vekt dw 12, -13, 25, 2, -11, 4, 7 .code ............ lea bx, vekt+4 mov di,2 mov ax,vekt[di+2] inc word ptr[bx][di] add ax,[bx][di]
Решение задачи: «Определить содержимое регистра AX»
textual
Листинг программы
lea bx,vekt+4 ;bx указывает на два элемента дальше начала вектора, т.е. на 25 mov di,2 ;di = 2 - длина одного элемента mov ax,vekt[di+2] ;ax = от начала вектора+1 элемент (di)+еще один элемент (+2). Итого, ax=25 inc word ptr[bx][di]; инкремент слова следующего (di) за 25 (bx), т.е. было 2, стало 3 add ax,[bx][di] ;ax = старое значение (25) + слово за 25 (т.е. 3) = 28
Объяснение кода листинга программы
lea bx,vekt+4— Переменнаяbxуказывает на байт, следующий за последним элементом вектораvekt. Здесь векторуvektдобавляется 4 к его адресу, чтобы получить байт, следующий за последним элементом вектора.mov di,2— Переменнаяdiполучает значение 2. Здесьdiиспользуется как смещение от начала вектораvekt.mov ax,vekt[di+2]— Переменнаяaxполучает значение элемента вектораvekt, который находится по смещениюdi+2от начала вектора. Посколькуdiравно 2,di+2будет равно 4, иaxполучит значение 4-го элемента вектораvekt.inc word ptr[bx][di]— Происходит инкремент слова, следующего за последним элементом вектораvekt, на который указываетbx, на смещениеdi. Посколькуdiравно 2, иbxуказывает на байт, следующий за последним элементом вектораvekt, это будет означать, что инкрементируется слово, следующее за 4-м элементом вектораvekt.add ax,[bx][di]— Переменнаяaxполучает сумму своего текущего значения и значения слова, следующего за последним элементом вектораvekt, на которое указываетbx, на смещениеdi. Посколькуdiравно 2, иbxуказывает на байт, следующий за последним элементом вектораvekt, это будет означать, что кaxдобавляется значение слова, следующего за 4-м элементом вектораvekt. Итак, в результате выполнения этого кода переменнаяaxбудет содержать значение 28.