eXeL@B —› Программирование —› Подскажите че можно исправить?? |
Посл.ответ | Сообщение |
|
Создано: 13 января 2010 00:32 · Личное сообщение · #1 Значит проблема такая: Есть код на С++, вот он: #include <stdio.h> #define N 20000 //алгоритм "решето Эратосфена" unsigned int a[N]; void main(){ //заполним все ячейки числами по порядку: 0,1,2,3... for(int i=0; i<N; i++){ a[i] = i; } //поскольку 1 не простое число, обнулим ячейку с этим числом a[1]=0; for(int s=2; s<N; s++){ if(a[s]!=0){ for(int j=s*2; j<N; j+=s){ a[j]=0; } } } for(i=0; i<N; i++){ if(a[i]!=0){ printf("%d\n", a[i]); } } } Это код нахождения простых чисел методом решета Эратосфена. Я (строго не судите, студент, ничего не знаю) написал код на масме, но наделал кучу косяков. Собственно код вот: .386 .model flat, stdcall option casemap:none include \9-II-SKS\myasm\include\windows.inc include \9-II-SKS\myasm\include\kernel32.inc include \9-II-SKS\myasm\include\user32.inc includelib \9-II-SKS\myasm\lib\user32.lib includelib \9-II-SKS\myasm\lib\kernel32.lib BSIZE equ 100 BSZZ equ 15 .data stdout DWORD ? cWritten DWORD ? nn DWORD ? digit DWORD ? mn DWORD ? per DWORD ? Massive DWORD BSIZE dup (?) ifmt BYTE "%d",0 buf BYTE BSIZE dup (?) crlf BYTE 0dh, 0ah .code start: invoke GetStdHandle,STD_OUTPUT_HANDLE mov stdout, eax mov ecx, BSIZE mov ebx,0 mov edi,0 nxt: mov Massive[edi], ebx inc ebx add edi,4 loop nxt mov Massive [1],0 mov edi,0 nxt1: inc edi mov edx, Massive[edi] mov digit, edx cmp edi, BSIZE jnz nxt3 cmp digit,0 jnz nxt1 mov nn,edi mov eax,2 mul edi nxt2: mov Massive[eax],0 add eax,nn cmp eax,BSIZE ja nxt1 jnz nxt2 nxt3: mov edi, 0 mov eax,0 nxt4: mov edx, Massive[edi] mov per, edx add edi,4 cmp per,0 jnz nxt4 mov eax, Massive[edi] invoke wsprintf,ADDR buf,ADDR ifmt,eax invoke WriteConsoleA,stdout,ADDR buf,BSZZ,ADDR cWritten,NULL cmp edi,BSIZE jnz nxt4 jnz exit exit: invoke ExitProcess,0 end start Короче говоря мозги кипели, и наделал всякой чуши Кто есть знающий подскажите на косяки, и помогите доделать плз. ПРОШУ строго не судите это моя почти первая прога на ассемблере |
|
Создано: 13 января 2010 00:41 · Личное сообщение · #2 |
|
Создано: 13 января 2010 01:29 · Личное сообщение · #3 есть перевод с генерацией асм листинга в настройках си ... копаться врятли кто то будет. Ниже разные примеры , когда интересовался тематикой собирал ... ee59_12.01.2010_CRACKLAB.rU.tgz - ERATO.rar ----- RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube |
|
Создано: 13 января 2010 18:15 · Личное сообщение · #4 |
eXeL@B —› Программирование —› Подскажите че можно исправить?? |
Эта тема закрыта. Ответы больше не принимаются. |