вторник, 17 март 2009 г.

Обръщане на низ




Написах тази програма за един приятел на който му трябваше програма да обраща низ отзад напред но без да използва никакви допълнителни функций.


.386
.model flat, stdcall
option casemap :none
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
include \masm32\include\masm32.inc
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\masm32.lib
.data?
string db 20 dup(?)
Reversed db 20 dup(?)
count db ?
.code
start:

invoke StdIn,addr string,20
xor dl,dl
lea ecx,string
loop1:
mov bl,byte ptr[ecx]
cmp bl,0h
jz play
inc dl
inc ecx
jmp loop1
play:
sub ecx,3
sub dl,2
lea eax,Reversed
newloop:
mov bl,byte ptr[ecx]
mov byte ptr [eax],bl
dec ecx
dec dl
inc eax
cmp dl,0
je play1
jmp newloop
play1:
invoke StdOut,addr string
invoke StdOut,addr Reversed
invoke StdIn,addr string,1
invoke ExitProcess, 0
end start

Няма коментари:

Публикуване на коментар