Ассемблер
Создана: 11 Июня 2006 Вск 0:49:49.
Раздел: "Нужна помощь"
Сообщений в теме: 10, просмотров: 1583
-
-
а ты не стремись, ты советом поделись :) -
-
-
.586
.model flat, stdcall
option casemap :none ; case sensitive
; ######################################################
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
includelib \masm32\lib\kernel32.lib
; ######################################################
.data
Msg1 db "Type something > "
Msg2 db "You typed > "
ConsoleTitle db 'SORTED',0
n db 0
DB 5H DUP(0)
X db 0
DB 5H DUP(0)
K dw 0
; ######################################################
.stack 256
.code
; ######################################################
Main proc
LOCAL InputBuffer[128] :BYTE ;буффер для ввода
LOCAL hOutPut :DWORD ;хэндл для вывода
LOCAL hInput :DWORD ;хэндл для ввода
LOCAL lpszBuffer :DWORD ;адрес буфера
LOCAL nRead :DWORD ;прочитано байт
LOCAL nWriten :DWORD ;напечатано байт
invoke SetConsoleTitle, addr ConsoleTitle ;устанавливаем титл окна
invoke GetStdHandle, STD_OUTPUT_HANDLE ;получаем хэндл для вывода
mov hOutPut, eax
invoke WriteConsole, hOutPut, addr Msg1, 17,addr nWriten,NULL ;"Type something > "
invoke GetStdHandle,STD_INPUT_HANDLE ;получаем хэндл для ввода
mov hInput, eax
invoke ReadConsole, hInput, addr InputBuffer, 10, ADDR nRead, NULL ;вводим
; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
XOR ECX,ECX
XOR EaX,EaX
XOR EbX,EbX
MOV CL,byte ptr SS:[esp]+4
sub cl,2
mov n,cl
lea EDI,InputBuffer
MOV esi,0
dec cl
L1:
push CX
mov K,si
MOV AL,[EDI][esi]
MOV X, AL
push si
inc si
mov al,n
sub ax,si
mov cx,ax
L2:
MOV AL,[EDI][Esi]
CMP al,X
Ja L3
mov K,si
MOV AL,[EDI][Esi]
MOV X,al
L3:
inc si
loop L2
pop si
mov al,[EDI][ESI]
mov bx,K
mov [edi][ebx],al
MOV AL, X
mov [EDI][ESI],al
inc si
pop cx
loop L1
; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
invoke WriteConsole, hOutPut, addr Msg2, 12, addr nWriten, NULL ;печатаем "You typed > "
invoke WriteConsole, hOutPut, addr InputBuffer, nRead, addr nWriten, NULL ;печатаем то, что ввели
invoke Sleep, 3000d ;задержка, чтобы полюбоваться
invoke ExitProcess,0 ;выход
Main endp
end Main -
Sfrank писал(а) :Это если ты уже этот алгоритм программировал, то просто, а я вот с самого начала 4,5 часа карпел, пока дошло. И сейчас за 10 мин напишу
Этот алгоритм вполне известен, и выложен в разных местах. Если бы не лень автора, то за 15 минут можно найти не только описание алгоритма, и даже не одного, но и его реализации -
Вот, сука, ей богу!
Тебя не мнением просили поделиться, а помощь оказать, дебила ты кусок! -
Sfrank писал(а) :.586
.model flat, stdcall
option casemap :none ; case sensitive
; ######################################################
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
includelib \masm32\lib\kernel32.lib
; ######################################################
.data
Msg1 db "Type something > "
Msg2 db "You typed > "
ConsoleTitle db 'SORTED',0
n db 0
DB 5H DUP(0)
X db 0
DB 5H DUP(0)
K dw 0
; ######################################################
.stack 256
.code
; ######################################################
Main proc
LOCAL InputBuffer[128] :BYTE ;буффер для ввода
LOCAL hOutPut :DWORD ;хэндл для вывода
LOCAL hInput :DWORD ;хэндл для ввода
LOCAL lpszBuffer :DWORD ;адрес буфера
LOCAL nRead :DWORD ;прочитано байт
LOCAL nWriten :DWORD ;напечатано байт
invoke SetConsoleTitle, addr ConsoleTitle ;устанавливаем титл окна
invoke GetStdHandle, STD_OUTPUT_HANDLE ;получаем хэндл для вывода
mov hOutPut, eax
invoke WriteConsole, hOutPut, addr Msg1, 17,addr nWriten,NULL ;"Type something > "
invoke GetStdHandle,STD_INPUT_HANDLE ;получаем хэндл для ввода
mov hInput, eax
invoke ReadConsole, hInput, addr InputBuffer, 10, ADDR nRead, NULL ;вводим
; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
XOR ECX,ECX
XOR EaX,EaX
XOR EbX,EbX
MOV CL,byte ptr SS:[esp]+4
sub cl,2
mov n,cl
lea EDI,InputBuffer
MOV esi,0
dec cl
L1:
push CX
mov K,si
MOV AL,[EDI][esi]
MOV X, AL
push si
inc si
mov al,n
sub ax,si
mov cx,ax
L2:
MOV AL,[EDI][Esi]
CMP al,X
Ja L3
mov K,si
MOV AL,[EDI][Esi]
MOV X,al
L3:
inc si
loop L2
pop si
mov al,[EDI][ESI]
mov bx,K
mov [edi][ebx],al
MOV AL, X
mov [EDI][ESI],al
inc si
pop cx
loop L1
; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
invoke WriteConsole, hOutPut, addr Msg2, 12, addr nWriten, NULL ;печатаем "You typed > "
invoke WriteConsole, hOutPut, addr InputBuffer, nRead, addr nWriten, NULL ;печатаем то, что ввели
invoke Sleep, 3000d ;задержка, чтобы полюбоваться
invoke ExitProcess,0 ;выход
Main endp
end Main
Спасибо мен! Респект тебе! Уважуха в общем.