Поиск:

Ответ в темуСоздание новой темы Создание опроса
> FASM взятие ASCII кода, Как в FASMe вместо символа получить код 
V
    Опции темы
Moky
Дата 15.4.2014, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 4.3.2013

Репутация: нет
Всего: нет



Есть файл, txt, внем строка 'abcde'. Прочитать её можно с помощью функции ReadFile, но я увижу символы, может кто подскажет, как можно увидеть вместо символов ASCII коды этих символов.
PM MAIL   Вверх
500mhz
Дата 15.4.2014, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


шайтан
***


Профиль
Группа: Завсегдатай
Сообщений: 1017
Регистрация: 5.5.2008
Где: Киев / Italy

Репутация: нет
Всего: 14



Увидеть где?


--------------------

PM MAIL ICQ   Вверх
Moky
Дата 16.4.2014, 19:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 4.3.2013

Репутация: нет
Всего: нет



Может я неправильно выразился. Нужна API функция которая возвращает ASCII код символа в текущей позиции курсора в текстовом файле. Т.Е. функция читает содержимое файла, но возвращает не символы а их ASCII коды. В DOS такая функция есть.
PM MAIL   Вверх
_zorn_
Дата 17.4.2014, 04:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 988
Регистрация: 21.8.2007

Репутация: нет
Всего: 12



Как ты думаешь в каком виде текст хранится в памяти ?
Чтобы "увидеть", заюзай что нибудь вроде intToStr

PM MAIL   Вверх
tzirechnoy
Дата 17.4.2014, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1173
Регистрация: 30.1.2009

Репутация: нет
Всего: 16



ReadFile всегда возвращает (в переданной для возврата строке) ASCII-коды символов для файла в кодировках ASCII.
Искренне Ваш, КО.
PM MAIL   Вверх
Moky
Дата 17.4.2014, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 4.3.2013

Репутация: нет
Всего: нет



Вот код программы чтения данных из файла. Текстовый файл 1.txt состоит из двух строк abcde и klmno. Кажется все просто, но если замерить размер файла выяснится, то его размер составляет не 10 байт а 12. После первой строки скрыто два технических байта. Это возврат каретки и прогон листа. Если Вы воспользуетись  функцией ReadFile вы их не увидите, да и функция у меня возвращает символы, а не их ASCII коды.
Для примера простенький код, позаимствоный отчасти у Норсеева.
Заранее всем спасибо!

Код

format PE GUI 4.0
entry start
include 'win32a.inc'
section '.code' code readable executable
start:
;Открываем файл и убеждаемся в том, что мы его открыли
invoke CreateFile, _FileName, GENERIC_READ, 0, NULL, \
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL
cmp eax, INVALID_HANDLE_VALUE
je FileNotOpen
mov [_hFile], eax

 ; Цикл чтения данных из файла побайтно
   xor ebx, ebx
Lo:
cmp ebx,12
je Le
;Перемещаем указатель файла
invoke SetFilePointer, eax, ebx, _r, FILE_BEGIN
;Читаем файл
invoke ReadFile, [_hFile], _Buffer, 1, _r, NULL
;Выводим прочитанное пользователю
invoke MessageBox, HWND_DESKTOP, _Buffer, _Probel, MB_OK
add ebx,1
jmp Lo
Le:

;Закрываем файл
invoke CloseHandle, [_hFile]
mov [_hFile], NULL
jmp Exit
FileNotOpen:
invoke MessageBox,HWND_DESKTOP, _FileErrorOpen, NULL, MB_ICONERROR
Exit:
invoke ExitProcess, 0
section '.data' data readable
_FileName du 'C:\1.txt', 0
_FileErrorOpen du 'File opening failt', 0
_Probel du ' ', 0
LL dd 0
section '.rdata' data readable writeable
_hFile dd NULL
_Buffer rb 22
_r dd 00
section '.idata' data import readable writeable
library kernel, 'kernel32.dll',\
user , 'user32.dll'
import kernel,\
CreateFile , 'CreateFileW',\
SetFilePointer, 'SetFilePointer',\
ReadFile , 'ReadFile',\
CloseHandle , 'CloseHandle',\
ExitProcess , 'ExitProcess'
import user,\
MessageBox, 'MessageBoxA'


PM MAIL   Вверх
ФедосеевПавел
Дата 17.4.2014, 20:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 7.2.2009

Репутация: нет
Всего: 10



Moky, в данном примере файл считывается полностью в буфер и средствами ОС выводится на экран. При этом в буфере будет 12 байт. Что за байты? Ну можно посмотреть в программе просмотровщике выбрав режим hex (шестнадцатеричный) - как у меня на картинке.
user posted image
Если перед тобой стоит задача считать файл и вывести на экран не две строки, а их hex представления, то нужно будет "брать" из буфера по одному элементу (по байту), переводить в hex, сохранять в каком-то другом массиве, а потом выводить на экран этот полученный массив. Кажется, преобразование числа в строку - wprint или sprint - не помню. Посмотри в учебниках и по форуму.
PM MAIL   Вверх
tzirechnoy
Дата 17.4.2014, 21:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1173
Регистрация: 30.1.2009

Репутация: нет
Всего: 16



Цитата
После первой строки скрыто два технических байта. Это возврат каретки и прогон листа. Если Вы воспользуетись  функцией ReadFile вы их не увидите


Если я воспользуюсь -- то я увижу.

PS Правильный вопрос, разумеется -- как показать коды ASCII-символов в функцыи MessageBox или её аналоге.
PPS Кстати, зачем Вы полезли в ассэмблер IA32/Windows? Есть замечательный Си с кучей книжэк для начинающих, бывают хорого написанные введения в программирование с условными ассэмблерами (вроде MMIX), спецыально разработанными для обучения и со спецыально подобными примерами -- зачем использовать трудный и неприспособленный IA32/Windows ассэмблер без вводной литературы?
PM MAIL   Вверх
Google
  Дата 21.5.2019, 04:14 (ссылка)  





  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm для Windows/DOS"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm для Windows/Dos | Следующая тема »


 




[ Время генерации скрипта: 0.1374 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.