Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 12.12.2013, 20:33   #1 (permalink)
vladis222
Новичок
 
Регистрация: 25.07.2012
Сообщений: 7
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Работа с массивами на ассемблере

Здравствуйте,прошу вашей помощи в лабораторной работе,связанной с массивами на языке ассемблера.
Задание:
Y[k] = 4*X[k]/X[2N-k] + k**2*X[N+1-k]/(k+1)/X[k+1]
N=5 k=1,2,...5

Код программы:
Код:
arr_x db 0,1,2,3,4,5,6,7,8,9,10,11 ;Размер каждого элемента 1 байта
arr_y dw 7 dup (0) ;Размер каждого элемента 2 байта
N db 5

.code
main proc
; код главной функции
mov esi,0 ;esi=0
mov ecx,5 ;ecx= k=5

for_k:
movzx edx,N                ;В регистр edx помещаем значение N
movsx eax,arr_x[ecx] ;В eax лежит значение X[k]
shl eax,2                        ;eax=4 X[k]
                                       ;Теперь переходим к работе с X[2N-k]
shl edx,1                         ;dx =2 N
sub edx,ecx                    ;edx=2N-k
movsx ebx,arr_x[edx]  ;ebx= X[2N-k]
cwd                                ;знаковое расширение
idiv ebx                          ;eax=4*X[k]/X[2N-k]
mov arr_y[ecx*2],dx    ;Y[k]=4*X[k]/X[2N-k]
;Переходим ко второй части выражения :
mov eax,ecx                  ;eax=ecx=k
mul ecx                          ;eax=k^2
movzx esi,N                   ;esi=N
sub esi,ecx                      ;esi=N-k;
imul arr_x[esi+1]          ;eax=k^2*X[N+1-k]
mov ebx,ecx                   ;ebx=ecx=k
add ebx,1                        ;ebx=k+1
idiv ebx                           ;eax=k^2*X[N+1-k]/(k+1)
mov esi,ecx                     ;esi=k
idiv arr_x[esi+1]            ;eax=k^2*X[N+1-k]/(k+1)/X[k+1]
add arr_y[esi*2],ax        ax=4*X[k]/X[2N-k]+k^2*X[N+1-k]/(k+1)/X[k+1]
sub ecx,1
jnz for_k
invoke ExitProcess, 0      ; завершение работы
main endp
end main
При вычислениях значений массива выходного(arr_y) в значениях находятся явно неверные значения, объясните пожалуйста в чем ошибка в этом коде?
vladis222 вне форума   Ответить с цитированием

Старый 12.12.2013, 20:33
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Поищите информацию в похожих темах

На ассемблере
Работа с массивами
Курсовая на ассемблере

Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 16:56.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.