Подскажите плиз

Низкоуровневое программирование портов, микроконтроллеров и т.д.

Модератор: Andy

Ответить
Arpy
Сообщения: 10
Зарегистрирован: 27 фев 2007, 21:21

Вобщем я начинаю изучать масм (вынужден пользовать шестую версию по указке препода). Никто не подскажет работающие (на шестой версии) примеры, от которых можно было бы оттолкнуться..а то я не шарю. Задание связано с сортировкой массива. На си примерно так выглядит.



int main()
{
int x;
int i;
int j=0;
int k=0;
int a[10];
int b[10];
int c[10];


/////////sortall(form b)//////

for (i=0; i< 10; i++)
{

if (a> 0)

{b[9-j]=a;j++;}

else
{b[k]=a; k++;}

}


///////sort"+"inside b//////////

for (i=k; i< 10; i++)
{
for (j=k; j<9; j++)

if (b[j]>b[j+1])

{
x=b[j];
b[j]=b[j+1];
b[j+1]=x;
}

}
//////////find sred arifm = k////////////
k=0;
for (i=0; i<9; i++) k=k+b;
k=k/10;


//////////////finalrezult :o nly<k///////////
j=0;
for (i=0; i<9; i++) if (b<k+1)
{c[j]=b; j++;}

////////////////done///////////////

///////////output//////////////////
for (i=0; i<10; i++) printf("%d " ,a, " ");
printf("rezult:");
for (i=0; i<10; i++) printf("%d " ,b, " ");
printf("final rezult:");
for (i=0; i<10; i++) printf("%d " ,c, " ");
Arpy
Сообщения: 10
Зарегистрирован: 27 фев 2007, 21:21

если конкретней, то ооочень хотел бы взглянуть на простой код нахождения среднего арифметического знаковых 4-байтных чисел! :confused:
Аватара пользователя
somewhere
Сообщения: 1858
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

Код: Выделить всё

push cs
pop ds

; /////////sortall(form b)//////

lea si, a          ; a[i]
lea di, b + 2*9    ; b[9-j]
lea bx, b          ; b[k]
mov cx, 10
	@loop0:
mov ax, [si]
test ax, ax
js @ailess0
mov [di], ax
sub di, 2
jmp short @next0
	@ailess0:
mov [bx], ax
add bx, 2
	@next0:
add si, 2
loop @loop0

; ///////sort"+"inside b//////////

	@loop1:
push bx
	@loop2:
mov ax, [bx]
cmp ax, [bx+2]
jc @less0
push word ptr [bx+2]
mov [bx+2], ax
pop word ptr [bx]
	@less0:
add bx, 2
cmp bx, offset b + 9*2
jnz @loop2
pop bx
add bx, 2
cmp bx, offset b + 10*2
jnz @loop1

//////////find sred arifm = k////////////

lea si, b
xor ax, ax
xor dx, dx
mov cx, 10
	@loop3:
add ax, [si]
adc dx, 0
add si, 2
loop @loop3
mov bx, 10
div bx
inc ax
mov bp, ax

//////////////final rezult only<k///////////

lea si, b
lea di, c
mov cx, 10
	@loop4:
mov ax, [si]
cmp ax, bp
jnc @bigger0
mov [di], ax
add di, 2
	@bigger0:
add si, 2
loop @loop4

mov ax, 4c00h
int 21h

a dw 10 dup (?)
b dw 10 dup (?)
c dw 10 dup (?)
Остальные прелюдии, типа вывода на экран и оформление сегментов сделай сам - в разделе есть такие материалы. А вообще не важно - MASM 6, MASM 5, TASM, ASM - код - он и в африке код, если конечно не нужны всякие извраты типа макросов и прочей ерунды...
It's a long way to the top if you wanna rock'n'roll
Arpy
Сообщения: 10
Зарегистрирован: 27 фев 2007, 21:21

gracias senor!!! начну анализировать)
Ответить