Цитата WQ (
)
Можно ли это перевести на asm, встраиваемый во freebasiс?
Один из них перевел, только вместо кода с файлами попросту зашил текст с переносами в одной строке.
Код
Dim As Integer offset,lenght
Dim Shared As String sStringsrc
sStringsrc = !"DP_Audio_wnt6-x86_1104_Vista-7-x86.txt \13\10hgfghfgfgg\13\10dddddd"
function CopyFieldSrting(srs As Byte ptr, dest As Byte ptr) As Integer
' Копирование строки из памяти в память до разделителей #CRLF$, #CR$ или #NULL
' Возвращает длинну скопированой строки вместе с разделителем (кроме нуля)
Dim iReturn As Integer
Asm
MOV ESI, [srs]
MOV EDI, [dest]
MOV EBX, 0x0D0A
Xor ECX, ECX
_next:
MOV AL, BYTE [ ESI + ECX ]
TEST AL, AL
JZ _return
CMP AL, BH
JNE _resume
INC ECX
CMP BL, BYTE [ ESI + ECX ]
JNE _return
INC ECX
JMP _return
_resume:
MOV BYTE [ EDI + ECX ], AL
INC ECX
JNZ _next
_return:
MOV [iReturn], ECX
End Asm
Return iReturn
End Function
Do
Dim As ZString*200 sStringdest
lenght = CopyFieldSrting(SAdd(sStringsrc) + offset, @sStringdest-1)
offset = offset + lenght
? sStringdest,lenght
Loop Until lenght=0
sleep
Второй думаю сам переведешь по принципу первого.