A oto Twoje programy w Asemblerze:
1.
.586
.model flat, stdcall
option casemap:none
include windows.inc
include kernel32.inc
include masm32.inc
includelib kernel32.lib
includelib masm32.lib
.data
szPrompt db "Enter numbers:",0
szNext db 32 dup(0)
dwResult dd 0
dwNext dd 0
.data?
consoleOutHandle dd ?
consoleInHandle dd ?
ReadWritten dd ?
.code
start:
push STD_OUTPUT_HANDLE
call GetStdHandle
mov consoleOutHandle, eax
push STD_INPUT_HANDLE
call GetStdHandle
mov consoleInHandle, eax
push 0
push offset ReadWritten
push sizeof szPrompt
push offset szPrompt
push consoleOutHandle
call WriteConsole
_loop:
mov ecx, dwResult
cmp ecx, 50
jge _exit
push 0
push offset ReadWritten
push sizeof szNext
push offset szNext
push consoleInHandle
call ReadConsole
push offset szNext
call atol
add dwResult, eax
jmp _loop
_exit:
push 0
call ExitProcess
end start
.586
.model flat, stdcall
option casemap:none
include windows.inc
include kernel32.inc
include user32.inc
include masm32.inc
includelib kernel32.lib
includelib user32.lib
includelib masm32.lib
.data
dwCounter dd 10
.data?
consoleOutHandle dd ?
ReadWritten dd ?
szBuff db 4 dup(?)
.code
start:
push STD_OUTPUT_HANDLE
call GetStdHandle
mov consoleOutHandle, eax
_loop:
mov ecx, dwCounter
cmp ecx, 100
je _exit
mov edx, 0
mov eax, dwCounter
mov ecx, 2
div ecx
cmp edx, 0
je _even
inc dwCounter
jmp _loop
_even:
mov edx, 0
mov eax, dwCounter
mov ecx, 3
div ecx
cmp edx, 0
je _write
inc dwCounter
jmp _loop
_write:
mov eax, dwCounter
push offset szBuff
push dwCounter
call dwtoa
push 0
push offset ReadWritten
push sizeof szBuff
push offset szBuff
push consoleOutHandle
call WriteConsole
inc dwCounter
jmp _loop
_exit:
push 0
call ExitProcess
end start
Zachęcam do nauki Asemblera ;)