Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.06.2009, 18:40   #1
Rom@shka
 
Регистрация: 13.12.2008
Сообщений: 9
По умолчанию Найти второй по величине элемент (assembler)

Проходили очень бегло,поэтому сложно.в основном на с++ пишем.напишите пожалуйста код,если не сложно.
Rom@shka вне форума Ответить с цитированием
Старый 22.06.2009, 19:44   #2
Ivan_32
somewhere else
Участник клуба
 
Аватар для Ivan_32
 
Регистрация: 17.07.2008
Сообщений: 1,409
По умолчанию

Код:
#define mLen 1000 //это всего лишь макросы - mLen заменяется на 1000
#define Com 1000 
/*Коофициент на которой будут умножатся генерируемые случайные числа*/
float mass[mLen]={0};
for(int i=0;i<mLen;i++)
{
    mass[i]=Com*rand(); 
/*В этом цикле массив заполняется случайными числами.
rand() генерирует числа от -1 до +1 - дробные. То есть массив
заполняется числами от -1*Com до +1*Com */
}
float fMax=mass[0]; первый максимум - он нам не нужен
float sMax=mass[0]; второй максимум - он то нам и нужен:)
for(int i=0;i<mLen;i++)
{
     if(mass[i]>fMax)
     {
        sMax=fMax; //сохраняем старый максимум
        fMax=mass[i]; //и присваем новый. 
     }
}
Оставлю код С++ - для сравнения с ассемблерным. Код на ассемблере под FASM но думаю общую логику вы поймете.
Код:
format PE GUI 4.0
entry MyEntry

include 'C:\INCLUDE\Win32ax.inc'

section '.data' data readable writeable
szBuff db 100 dup(0)
mass dd 1000 dup(0)
fMax dd 0
sMax dd 0
section '.code' code readable executable

MyEntry:
	mov eax,[mass]
	mov [fMax],eax
	mov [sMax],eax
	cycle:
		pushad
		mov eax,[mass+ecx*4]
		cmp eax,[fMax]
		je abowe
		jne below
	abowe:
		mov ebx,[fMax]
		mov [sMax],ebx
		mov [fMax],eax
	below:
		popad
		inc ecx
	cmp ecx,1000
	jb cycle
	invoke ExitProcess,0
section '.idata' import data readable writeable

  library kernel32, 'KERNEL32.DLL',\
	  user32,   'USER32.DLL',\
      msvcrt,"MSVCRT.DLL"
  import msvcrt,\
  	  sprintf,"sprintf"
  include 'C:\INCLUDE\APIA\Kernel32.inc'
  include 'C:\INCLUDE\APIA\User32.inc'

section '.rsrc' resource from 'ExtProject.res' data readable
"Тяжело в учении, легко в бою" - А.В. Суворов

Последний раз редактировалось Ivan_32; 22.06.2009 в 20:09.
Ivan_32 вне форума Ответить с цитированием
Старый 22.06.2009, 19:59   #3
MalCer
Форумчанин
 
Аватар для MalCer
 
Регистрация: 15.07.2008
Сообщений: 615
По умолчанию

Мы вот с ГудВином так решили сделать:
Код:
text segment
assume cs:text, ds:data
 
     mov ax,@data
     mov ds,ax
       
      mov al,2
begin:
      mov dl,mas              
      mov cx,6                 
      mov bx,1                
fly:  cmp dl, mas[bx]         
      jg next                  
      cmp dl,ah
      jz next
      mov dl,mas[bx]           
next: inc bx                   
      loop fly
      mov ah,dl
      dec al
      jnz begin
 
      mov ax, 4c00h
      int 21h      
 

text ends
data segment
mas db 1,2,5,30,15,9,8
data ends
 
stk    segment stack
       db 256 dup (0)
stk ends
    end begin
xor eax, eax
xchg [eax], eax

Последний раз редактировалось MalCer; 22.06.2009 в 20:07.
MalCer вне форума Ответить с цитированием
Старый 22.06.2009, 20:07   #4
Rom@shka
 
Регистрация: 13.12.2008
Сообщений: 9
По умолчанию

Спасибо,конечно,но на с++ я и сама могу,мне на ассемблере нужно.
Rom@shka вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[C++] Поменять местами наименьший и второй по величине элементы StudeHt Помощь студентам 2 10.06.2009 23:33
Динамика. Поменять местами наименьший и второй по величине элементы StudeHt Паскаль, Turbo Pascal, PascalABC.NET 3 27.05.2009 02:20
Найти 3-ий по величине элемент массива.. PavelZet Помощь студентам 10 07.05.2009 21:06
Задача по матрицам. Поменять местами наименьший и второй по величине элементы Иван 883 Паскаль, Turbo Pascal, PascalABC.NET 5 03.01.2009 16:04
Как сослаться на второй элемент в объединении NeiL Общие вопросы C/C++ 1 01.06.2008 16:04