Posted: Thu Oct 12, 2006 10:22 pm
я тож в свое время писал макросы первода кодировки win->dos и dos->win
Code: Select all
macro dostowin stroka,dlina
{
local .engbykvi,.nexting,.nach,.end,.length,.x1
jmp .x1
.length dd 0
.x1:
mov eax,dlina
sub eax,1
mov [.length],eax
.nach:
mov eax,[.length]
cmp eax,0
jl .end
mov bl,byte [stroka+eax]
cmp bl,128
jb .engbykvi
cmp bl,224
jb .nexting
add bl,16
jmp .engbykvi
.nexting:
add bl,64
.engbykvi:
mov byte [stroka+eax],bl
dec [.length]
jmp .nach
.end:
}
Code: Select all
macro wintodos stroka,dlina
{
local .engbykvi,.nexting,.nach,.end,.length,.x1
jmp .x1
.length dd 0
.x1:
mov eax,dlina
sub eax,1
mov [.length],eax
.nach:
mov eax,[.length]
cmp eax,0
jl .end
mov bl,byte [stroka+eax]
cmp bl,192
jb .engbykvi
cmp bl,240
jb .nexting
sub bl,16
jmp .engbykvi
.nexting:
sub bl,64
.engbykvi:
mov byte [stroka+eax],bl
dec [.length]
jmp .nach
.end:
}