Страница 1 из 1

Помогите с задачкой (Цикл)

Добавлено: 10 май 2006, 16:06
Svet_lana
Задача: Поле UNPAK содержит 01040705 в распакованном десятичном формате. Нужен цикл, который преобразует это содержимое в ASCII - формат, т.е. 31343735.

Добавлено: 10 май 2006, 20:04
Oscar
Svet_lana, в соседней теме есть макрос для вывода десятичного числа.

Что такое "распакованный десятичный формат" я не знаю,
но по виду похоже, что там просто нолики подописывали.

Так что в макросе нужно просто проходить по всем чётным (начиная слева) цифрам числа UNPACK.
Справишься?

Добавлено: 10 май 2006, 23:37
Andy
Цикл так цикл. Иначе если разрешен 386+ проц можно просто:

Код: Выделить всё

	mov	eax, UNPAK
	add	eax, 30303030h
А иначе:

Код: Выделить всё

CSeg	segment byte public 'CODE'
	assume cs:CSeg, ds:CSeg
	org 100h
_start:
	mov	bx, 4
	mov	di, offset UNPAK
	dec	di
ConvertNumb:
	
	mov	al, [di + bx]
	add	al, 30h
	mov	[di + bx], al
	
	dec	bx
	jnz	ConvertNumb
	
	mov	ah,4ch
	int	21h

UNPAK	dd 01040705h
	
CSeg	ends
	end _start


Добавлено: 11 май 2006, 08:50
Svet_lana
Спасибо!!! :D