вывод в массив

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

Модератор: Andy

Ответить
pikass
Сообщения: 14
Зарегистрирован: 23 янв 2006, 02:21

Дан массив на 6 элементов(например).
Получите новый массив(размером на 3 элемента)– разности крайних элементов первого массива.
Программа работает, но т.к.у меня массив задается случайными числами,
то разность например 10-156 будет давать большой результат из-за ограниченности размера. как можно решить эту проблему, исправьте где надо,если знаете как.

uses Windows;
const n=6;

var
b:word;
i:byte;

a:array[1..3] of word;
c:array[1..6] of word;

begin


asm

jmp @start
@data_:
@b: db 0
@n: db 0
@array: dw 0,0,0,0,0,0

@j: db 0
@start:
lea eax,[esp-4]
push eax
push $00000040
push offset @start
sub dword ptr [esp],offset @data_
push offset @data_
call VirtualProtect


mov eax,offset b
mov ebx,offset @b
mov byte ptr [eax],0abh
mov al,[eax]
mov byte ptr [ebx], 0adh
mov cl, [ebx]

mov dl,al
mov al,cl
mov [eax],al
mov cl,dl
mov [ebx],cl


xor ebx,ebx
xor edx,edx
xor eax,eax
xor esi,esi
xor ecx,ecx




//ЈҐ­Ґа в®а б«гз ©­ле зЁбҐ«
mov ebx,offset @array
//rdtsc
dw 310fh
mov edx,eax
mov ecx,word ptr n
@rand:
and edx,0ffh
mov eax,08088405h
mov [ebx],dx
mul edx
mov edx,eax
//and edx,0ffffh
add ebx,2
loop @rand

//§ Ї®«­Ґ­ЁҐ ¬ ббЁў
xor edx,edx
mov ebx,offset @array
mov eax,offset c
mov ecx,word ptr n

@mas:
mov dx,[ebx]
//and edx,0ffffh
mov [eax],dx
add ebx,2
add eax,2
xor edx,edx
loop @mas


// mov edx, offset @array
// mov ax,0
// mov esi,0

// @asd:
// xor bl,bl
// mov bl,[edx]
// inc edx
// inc ax
// cmp bl,0
// jne @asd

// xor edx,edx
// mov dl,2
// div dl
mov ecx, word ptr n/2

xor eax,eax
xor ebx,ebx
mov edx, offset c
mov ebx, offset a

@loop_start:
mov ax, [edx]
//and ax,255
mov [ebx],ax
add edx,2
add ebx,2
//add esi,2
xor ax,ax
loop @loop_start

xor eax,eax
mov ebx, offset a
// add edx,
xor ecx,ecx
mov ecx,3
add edx,4

@loop_start1:
// and eax,255
mov ax,[ebx]
sub ax,[edx]
// and eax,255
mov [ebx],ax
// and eax,255
sub edx,2
add ebx,2
xor eax,eax
loop @loop_start1
end;
writeln(' ');

for i:=1 to 6 do
write (c,' ');
write('ђ §­®бвм Єа ©­Ёе н«Ґ¬Ґ­в®ў ¬ ббЁў : ');
for i:=1 to 3 do
write (a,' ');
readln;
end.
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Что обозначает "будет давать большой результат из-за ограниченности размера"? Большой результат - это отрицательное число, что ли? Что вообще в постановке задачи говорится об отрицательных числах?
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Ответить