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

 WASM Phorum —› WASM.ASSEMBLER —› Из Hex в BCD

. 1 . 2 . >>

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


Дата: Июл 15, 2003 22:02:31 · Поправил: KiNDeR

Побкажите, как HEX число перевести в десятичное или двоично десятичное(BCD).
Например имеем в AX число 7D3h, что с ним нужно сделать чтобы AX стал равным 2003h


Дата: Июл 15, 2003 22:55:51

Зачем переводить в десятичное число?
Если для того что бы вывести на экран десятичное число то содержимое регистра АХ всегда двоичное число (да простят меня за банальность) всё дело в процедуре преобразования числа в строку которая выводится на экран. У меня написана такая процедурка (перевод числа в строку в формате десятичного числа) если нужно могу прислать, но она далека от оптимальности.
Если перевести нужно в двоично-десятичное представление то недавно была уже такая тема.


Дата: Июл 15, 2003 23:21:07 · Поправил: KiNDeR

pas
Пришли попробуем...

Я почитал, это обсуждение, но там перевод в строку, а мне надо число.(придется, наверное, из числа в строку, из строки, опять, в число)


Дата: Июл 16, 2003 00:00:39

Искал тему о BCD числах - не нашёл, видимо название темы не соответствует содержанию.
Файл отправил.
придется, наверное, из числа в строку, из строки, опять, в число
Зачем? Создаёш новую функцию IntToBCD копируеш весь код из IntToString и удаляеш инструкцию которая прибавляет 30h. В результате неупакованное BCD число.


Дата: Июл 16, 2003 00:06:34

pas
Ща глянем...
Тема называется HEX - DEC в этом разделе цыферку 3 глянь.


Дата: Июл 16, 2003 00:42:31 · Поправил: Безпощадный даос

mov	ax,7D3h
	mov	bx,10
	xor	cx,cx
	xor	di,di
loop4:
	cwd		;dx=0
	div	bx	;ax=ax/10, dx=остаток
	shl	dx,cl	;dx=dx*(16^cl)
	add	di,dx
	add	cl,4
	cmp	cl,16
	jne	loop4

	xchg	ax,di	;ax=2003h


Дата: Июл 16, 2003 00:55:56

_G3
Благодарствуем....:)


Дата: Июл 16, 2003 01:12:55

А лучше так:
	mov	ax,7D3h
	mov	bx,10
	mov	cx,4
	xor	di,di
loop4:
	cwd		;dx=0
	div	bx	;ax=ax/10, dx=остаток
	add	di,dx
	ror	di,4
	loop	loop4

	xchg	ax,di	;ax=2003h


Дата: Июл 16, 2003 01:18:12

_G3
mov cx,4
это говорит о том, что обрабатываем слово? Да?


Дата: Июл 16, 2003 02:40:47 · Поправил: KiNDeR

В Делфи есть такая функция intToBCD, не подскажете где посмотреть ее код?
Или, у кого есть делфи, сделайте exe'шник с использованием этой функции и пришлите мне.


Дата: Июл 16, 2003 12:18:13

Ну вы совсем разленились.
А что никто библиотеки MASM32 не смотрит.
Кроме того, есть библиотека для Делфи, где на асме все этьи функции есть. (Хотя они и сделаны не лучшим образом)


Дата: Июл 16, 2003 21:56:11 · Поправил: Безпощадный даос

KiNDeR
Я нашел тему о которой говорил


Дата: Июл 16, 2003 22:09:25

Господа почему тег в предыдущем сообщении не сработал? Почитал FAQ вроде всё правильно записал без апострофов и маркеров цитат.


Дата: Июл 16, 2003 22:13:33

Это ты нахимичил ;-)


Дата: Июл 16, 2003 22:21:57

Там был пробел.

. 1 . 2 . >>


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