Как поменять индекс массива в ассемблере? - Assembler/TASM
Формулировка задачи:
Добрый день, прошу помощи в программе.
Как в программе сделать, чтобы первое слагаемое ссылалось на
X[i-1]
вместоX[i]
в формуле Y[i]=A*X[i-1]
+ B*X[i] Сейчас в программе просто X[i]SDATA SEGMENT WORD PUBLIC 'DATA' A DB -5 ;- это два коэффициента B DB 17 ARRAY_X DB -1,22,-34,12,-51, 68 ; - массив чисел X ARRAY_Y DW 6 DUP(0) ; - массив чисел Y SDATA ENDS SSTACK SEGMENT PARA STACK 'STACK' DW 64 DUP (?) STACK_POINT LABEL WORD SSTACK ENDS SCODE SEGMENT WORD PUBLIC 'CODE' ASSUME CS:SCODE,DS:SDATA,SS:SSTACK START: MOV AX,SDATA ; Запись сегментного адреса MOV DS,AX ; Данных в регистр DS MOV AX,SSTACK ; Определение сегмента стека MOV SS,AX ; и указателя стека MOV SP,OFFSET STACK_POINT ; Инициализация исходных данных MOV SI,0 ; SI содержит индекс массива X MOV DI,0 ; DI содержит индекс массива Y MOV CX,6 ; СX:= число элементов массива X M1:MOV AL, A ; AL:= коэффициент A CBW ; Расширение байта до слова MOV BX, AX ; Сохранение коэффициента в BX MOV AL, ARRAY_X[SI] ; Занесение очередного элемента массива X в аккумулятор IMUL BX ; AX:=A*X[I] push AX ; Помещение АХ в стек MOV AL, B ; AL:= коэффициент B CBW ; Расширение байта до слова MOV BX, AX ; Сохранение коэффициента в BX MOV AL, ARRAY_X[SI] ; Занесение очередного элемента массива X в аккумулятор IMUL BX ; AX:=B*X[I] POP BX ; Извлечение A*X[I] из стека ADD AX,BX ; Y[I]=:A*X[I]+B*X[I] MOV ARRAY_Y[DI], AX ; запись в массив Y INC DI ; увеличение DI на 1 INC DI ; увеличение DI на 1 INC SI ; увеличение SI на 1 LOOP M1 ; переход на метку M1 MOV AX,4C00H ; выход из программы INT 21H ; выполняется функция DOS, номер SCODE ENDS ; конец кодового сегмента программы END START ; конец программы
Решение задачи: «Как поменять индекс массива в ассемблере?»
textual
Листинг программы
MOV AL, ARRAY_X[SI-1] ; Занесение очередного элемента массива X в аккумулятор
Объяснение кода листинга программы
- В данном коде используется инструкция MOV, которая предназначена для переноса данных между регистрами процессора и памятью.
- AL - это регистр, который используется для хранения данных в формате 8 бит.
- ARRAY_X - это название массива, который хранится в памяти компьютера.
- SI - это регистр, который используется для хранения индекса элемента массива.
- SI-1 - это выражение, которое вычисляет предыдущий индекс элемента массива. Значение вычитается из SI на единицу.
- MOV AL, ARRAY_X[SI-1] - это выражение, которое занесает элемент массива X с предыдущим индексом в аккумулятор.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д