Определить содержимое регистра 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

Объяснение кода листинга программы

  1. lea bx,vekt+4 — Переменная bx указывает на байт, следующий за последним элементом вектора vekt. Здесь вектору vekt добавляется 4 к его адресу, чтобы получить байт, следующий за последним элементом вектора.
  2. mov di,2 — Переменная di получает значение 2. Здесь di используется как смещение от начала вектора vekt.
  3. mov ax,vekt[di+2] — Переменная ax получает значение элемента вектора vekt, который находится по смещению di+2 от начала вектора. Поскольку di равно 2, di+2 будет равно 4, и ax получит значение 4-го элемента вектора vekt.
  4. inc word ptr[bx][di] — Происходит инкремент слова, следующего за последним элементом вектора vekt, на который указывает bx, на смещение di. Поскольку di равно 2, и bx указывает на байт, следующий за последним элементом вектора vekt, это будет означать, что инкрементируется слово, следующее за 4-м элементом вектора vekt.
  5. add ax,[bx][di] — Переменная ax получает сумму своего текущего значения и значения слова, следующего за последним элементом вектора vekt, на которое указывает bx, на смещение di. Поскольку di равно 2, и bx указывает на байт, следующий за последним элементом вектора vekt, это будет означать, что к ax добавляется значение слова, следующего за 4-м элементом вектора vekt. Итак, в результате выполнения этого кода переменная ax будет содержать значение 28.

Оцени полезность:

7   голосов , оценка 4 из 5
Похожие ответы