12.12.2013, 20:33 | #1 (permalink) |
Новичок
Регистрация: 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 |
12.12.2013, 20:33 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Поищите информацию в похожих темах На ассемблере Работа с массивами Курсовая на ассемблере |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|