Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.07.2017, 13:26   #21
Mikl___
Участник клуба
 
Регистрация: 11.01.2010
Сообщений: 1,162
По умолчанию

cуberforum.ru --> Форум программистов --> Низкоуровневое программирование --> Assembler, MASM, TASM --> Assembler для начинающих --> Закрепленная тема Ввод и вывод чисел в различных системах счисления -->Вывод числа в шестнадцатеричной системе
Mikl___ вне форума Ответить с цитированием
Старый 23.07.2017, 13:33   #22
Mikl___
Участник клуба
 
Регистрация: 11.01.2010
Сообщений: 1,162
По умолчанию

Цитата:
Сообщение от garrygarry Посмотреть сообщение
Только наоборот hex -> bin
hex --> bin это когда ABCD --> 1010.1101.1100.1101 а у тебя число --> строка из Hex
CreateFile --> WriteFile --> output --> MessageBox
Mikl___ вне форума Ответить с цитированием
Старый 23.07.2017, 14:09   #23
garrygarry
Пользователь
 
Регистрация: 23.01.2014
Сообщений: 36
По умолчанию

Цитата:
Сообщение от Mikl___ Посмотреть сообщение
hex --> bin это когда ABCD --> 1010.1101.1100.1101 а у тебя число --> строка из Hex
CreateFile --> WriteFile --> output --> MessageBox
все равно странно..

hex$ есть, str$ тож есть.. был бы еще какой-ть asc$...
garrygarry вне форума Ответить с цитированием
Старый 23.07.2017, 14:30   #24
Mikl___
Участник клуба
 
Регистрация: 11.01.2010
Сообщений: 1,162
По умолчанию

Здесь посмотри https://wasm.in/threads/hex-ascii-stroka.21586/
Mikl___ вне форума Ответить с цитированием
Старый 23.07.2017, 15:23   #25
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

Mikl___, моё почтение!
Подразумеваю, что немного не так..
У него внешний файл не бинарный, а строка в виде хексов. То-есть вместо значения 7Аh - два символа '7A'. Об этом говорит функция "hextoa", где в АХ читаются по 2 байта, и обрабатывается за-раз в надежде получить HEX-байт в АН, через:
Код:
  OR    AH,AL
  MOV   [EDI],AH
Нашедшего выход - затаптывают первым..
R71MT вне форума Ответить с цитированием
Старый 23.07.2017, 15:39   #26
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

Код:
;fasm code
;--------------
org  100h
jmp  start

output  db   4 dup(0),0         ; буфер для (F9h,E3h,00h,9Ch)
input   db   'f9e3009C'         ; строка из файла
len     =    ($-input) / 2      ; её длина для цикла преобразования

start:  mov   si,input      ; источник
        mov   di,output     ; приёмник
        mov   cx,len        ; длина

cycle:  lodsw               ; берём очередные 2-символа из ESI
        sub   ax,'00'       ; переведём их в число
        cmp   al,9          ;
        jbe   @01           ;
        sub   al,7          ; коррекция, если AL больше 9
@01:    cmp   ah,9          ;
        jbe   @02           ;
        sub   ah,7          ; коррекция, если AH больше 9
@02:    shl   al,4          ; AL умножить на 10h (сдвиг тетрады)
        and   ah,0Fh        ; в AH старшая тетрада не нужна
        or    ah,al         ; получаем HEX из двух символов!!!
        shr   ax,8          ; AL = результат
        stosb               ; запомнить его в EDI
        loop  cycle         ; промотать цикл СХ-раз...

        xor   ax,ax
        int   16h
@exit:  int   20h
Нашедшего выход - затаптывают первым..
R71MT вне форума Ответить с цитированием
Старый 23.07.2017, 15:56   #27
Mikl___
Участник клуба
 
Регистрация: 11.01.2010
Сообщений: 1,162
По умолчанию

Тимур,
чёт меня переклинило, там же WriteFile, а ReadFile
схема такая CreateFile --> output --> WriteFile --> CloseHandle --> ExitProcess
+твоя процедура
Mikl___ вне форума Ответить с цитированием
Старый 23.07.2017, 16:01   #28
garrygarry
Пользователь
 
Регистрация: 23.01.2014
Сообщений: 36
По умолчанию

Помогите с этим output. Пожалуйста.
garrygarry вне форума Ответить с цитированием
Старый 23.07.2017, 16:10   #29
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

Цитата:
Сообщение от Mikl___ Посмотреть сообщение
чёт меня переклинило
:D я сам ничего не понял, а это только догадки..
ТС скажи толком, что хочешь сделать. Или прикрепи внешний файл сюда
Нашедшего выход - затаптывают первым..
R71MT вне форума Ответить с цитированием
Старый 23.07.2017, 16:32   #30
garrygarry
Пользователь
 
Регистрация: 23.01.2014
Сообщений: 36
По умолчанию

Цитата:
Сообщение от R71MT Посмотреть сообщение
:D я сам ничего не понял, а это только догадки..
ТС скажи толком, что хочешь сделать. Или прикрепи внешний файл сюда
Программа

Цитата:
.386
.model flat,stdcall
option casemap:none

include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
include \masm32\include\user32.inc
include \masm32\include\masm32.inc

includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\user32.lib
includelib \masm32\lib\masm32.lib
hextoa proto tr byte
.data
result db "!!!",0
hh dd ?
h dd ?
bytesmaska dd ?

hexfile db "hex",0

cpt db "Result ASCII:" , 0
input db 64 dup (?),0
cikl dd 0

.data?
output db 4096 dup(?) ; total converted string
mybuffer db 4096 dup(?) ; total converted string
.code



start:


; Открываем и читаем..

invoke CreateFile, addr hexfile, GENERIC_READ or GENERIC_WRITE, FILE_SHARE_READ or FILE_SHARE_WRITE, NULL, OPEN_EXISTING, NULL, NULL
mov h, eax

; Создаем для записи в файл результат..


invoke CreateFile,addr result, ;создаем файл
GENERIC_WRITE,
0,
NULL,
CREATE_NEW,
FILE_ATTRIBUTE_NORMAL,
NULL

mov hh,eax

zdes:
inc cikl

invoke ReadFile, h, ADDR input, 64, ADDR bytesmaska, NULL



invoke hextoa,addr input

invoke lstrcpy, ADDR output , ADDR input


invoke MessageBox, NULL, addr output , addr cpt, MB_OK
invoke WriteFile, hh, addr output,32, addr bytesmaska, 0

cmp cikl,4
je dalee
jmp zdes

dalee:


invoke CloseHandle, hh
invoke CloseHandle, h

invoke ExitProcess, NULL
hextoa proc uses esi edi stringtr byte
mov edi,string
mov esi,edi
.repeat
mov ax,[esi]
inc esi
.continue .if al == ' '
inc esi
mov dl,ah
.break .if !al
sub ax,'00'
.if al > 9
sub al,7
.endif
shl al,4
.if ah > 9
sub ah,7
.endif
or ah,al
mov [edi],ah
inc edi
.until !dl
sub al,al
mov [edi],al
mov eax,string
ret
hextoa endp
end start
hex file который обрабатывается как надо
445C7A8007A93D8733188288BB320A8FE2D EBD2AE1B47F0F50BC10BAE845C094D61967 F63C7DD183914A4AE452C9F6AD5D462CE3D 277798075B107615C1A8A3050863AD64A87 AE8A2FE83C1AF1A8403CB53F53E486D8511 DAD8A04887E5B23522CD470243453A299FA 9E77237716103ABC11A1DF38855ED6F2EE1 87E9C582BA6

Но если, где-то в hex строке, попадаются 0000, то ничего не работает...
Например такая строка (вставил 0000 в начале)
4400000007A93D8733188288BB320A8FE2D EBD2AE1B47F0F50BC10BAE845C094D61967 F63C7DD183914A4AE452C9F6AD5D462CE3D 277798075B107615C1A8A3050863AD64A87 AE8A2FE83C1AF1A8403CB53F53E486D8511 DAD8A04887E5B23522CD470243453A299FA 9E77237716103ABC11A1DF38855ED6F2EE1 87E9C582BA6
garrygarry вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Из ASCII в HEX GrabbeR Общие вопросы Delphi 2 18.03.2017 00:30
Проблема с переводом HEX в BIN ruby25 Visual C++ 0 09.02.2015 23:28
file->HEX HEX->BIN kakawkin Общие вопросы Delphi 1 25.04.2012 01:02
перевести из ASCII в HEX fize Помощь студентам 7 25.12.2009 15:35
Перевод символов в hex(ASCII table) Beliuk Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 02.11.2009 08:25