.


:




:

































 

 

 

 


MASM32




;***************************************************************************

; . - 1, ( 0 255)

;***************************************************************************

 

.486; create 32 bit code

.model flat, stdcall; 32 bit memory model

option casemap:none; case sensitive

 

include \masm32\include\windows.inc

include \masm32\include\masm32.inc

include \masm32\include\user32.inc

include \masm32\include\kernel32.inc

 

includelib \masm32\lib\masm32.lib

includelib \masm32\lib\user32.lib

includelib \masm32\lib\kernel32.lib

 

.data

buf_in DB 64 dup (0)

sort_arr DB 64 dup (0)

stdin DD?

stdout DD?

str1 DB "Vvedite massiv 4isel 4erez probel:",0,10,13

str4 DB "Out:",0

titel DB 'Sortirovka',0

count dd 0

arraydec DB 20 dup (0)

nRead DD?

nRead_buf DD?

nWrite DD?

 

.code

 

start:

invoke AllocConsole; ,

invoke SetConsoleTitle, offset titel;

invoke GetStdHandle,STD_OUTPUT_HANDLE;

mov stdout,eax

invoke GetStdHandle,STD_INPUT_HANDLE;

mov stdin,eax

;------------------------------------

invoke WriteConsole,stdout,addr str1,sizeof str1,addr nWrite,0;

invoke ReadConsole,stdin,ADDR buf_in,64,ADDR nRead_buf,NULL;

;---------------------

xor ebx,ebx; ebx

xor edx,edx

xor ecx,ecx

lea esi,buf_in; esi buf_in

lea edi, arraydec

call readdec

call sortirovka

lea edi,sort_arr;edi - ASCII

lea ebx,arraydec;ebx -

mov ecx,count

h1: xor eax,eax

mov al,byte ptr[ebx]

call printdec

mov byte ptr[edi],' ';

inc edi

inc ebx

loop h1

 

invoke WriteConsole,stdout,addr str4,sizeof str4,addr nWrite,0;

invoke WriteConsole,stdout,addr sort_arr,sizeof sort_arr,addr nWrite,0;

invoke Sleep,6000; 6

kon: invoke ExitProcess,0;

 

;

 

readdec proc; ESI arraydec, count -

 

xor eax,eax; eax

mov ebx,10;

m2: mov cl, byte ptr [esi]

cmp cl,0Dh; 0A,0D -

je m1

cmp cl,0Ah

je m1

cmp cl,20h; -

je nextnum

cmp cl,30h; 10- ..

jl kon

cmp cl,39h

ja kon

sub cl, 30h; ASCII

mul ebx

add eax,ecx

inc esi;

jmp m2

nextnum: mov byte ptr[edi],al

inc esi

inc edi

inc count

xor eax,eax

jmp m2

m1: mov byte ptr[edi],al

inc edi

inc count

ret

readdec endp

;

 

;-------------------------------------------------------

; arraydec

sortirovka proc

mov ecx, count; ECX -

a4:

push ecx

mov ecx,count

dec ecx

mov ebx, offset arraydec

a2:

mov al, [ebx]

mov dl, [ebx+1]

cmp al,dl

jb a3

mov [ebx],dl

mov [ebx+1], al

a3:

inc ebx

loop a2

pop ecx

loop a4

;---------------

mov ecx,count

mov esi, offset arraydec

ret

sortirovka endp

;

 

;-----------------------------------------------------------

;

printdec proc; e edi

;eax -

;edi -

push ecx;

push edx

push ebx

cld

mov ebx,10;

XOR eCX,eCX; e

@@m1: XOR edx,edx

DIV ebx; 10

PUSH eDX; ( )

INC eCX

TEST eAX,eAX

JNZ @@m1

@@m2: POP eAX

ADD AL,'0'; ASCII

STOSb;

LOOP @@m2;

pop ebx;

POP edx

POP ecx

RET

printdec endp

;-----------------------------------------------

end start

 





:


: 2017-02-28; !; : 1056 |


:

:

- - , .
==> ...

1638 - | 1597 -


© 2015-2024 lektsii.org - -

: 0.012 .