· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.WIN32 —› FASM, ресурсы и русские буквы

Посл.отвђт Сообщенiе


Дата: Сен 9, 2003 16:18:22

Так как все строки в ресурсах хранятся в кодировке unicode, то необходимо их так и записать. Проблемма в том, что текст программы находится в однобайтовой кодировке, а директива du просто запивывает в старший байт 0, то есть никакой перекодировки не осуществляется. Копированием строки в fasm занимается следующий кусок кода:
;file assembler.inc
	mov ah,ah
      copy_word_string:
	lods	byte [esi]
	stos	word [edi]
	loop	copy_word_string

Если между lodsb и stosw добавить код для перекодирования, то проблемма будет решена. Лучше всего будет если Tomasz Grysztar добавит в fasm директиву для загрузки таблицы перекодирования из бинарного файла. Может кто-нибудь поговорит с ним по этому поводу, а то я английского не знаю.


Дата: Сен 9, 2003 16:28:42

Заместо mov нужно поставить xor


Дата: Сен 9, 2003 16:31:12

Прошу прощения, в исходнике xor, просто я эту команду не скопировал, а так дописал.


Дата: Сен 9, 2003 16:40:38

Лучше всего будет если Tomasz Grysztar добавит в fasm директиву для загрузки таблицы перекодирования из бинарного файла.

А разве нельзя сделать это в виде макроса?


Дата: Сен 9, 2003 17:55:10

Чтобы сделать макрос нам нужно в цикле перебрать символы переданной строки, и если это русская буква, то добавить к ней 350h. В tasm'е для этого были директивы, а в фасме таких директив нет. А объявлять строки как du 422h,435h,43ah,441h,442h,0 или du 'Т'+350h,'е'+350h,'к'+350h,'с'+350h,'т'+350h,0 очень утомительно, и как их в таком виде в макросы передавать? К тому же название этой директивы расшифровывается как Define Unicode, а так как принимает она строку байт, то должна превратить ее в unicode-строку. Вот если бы программы были написаны в unicode, и эта директива просто копировала бы символ из текста в выходной файл, то все было бы замечательно.


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.049