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

Низкоуровневое программирование портов, микроконтроллеров и т.д.

Модератор: Andy

Ответить
Svet_lana
Сообщения: 8
Зарегистрирован: 06 дек 2005, 13:01
Откуда: г.Усть-Лабинск

Задача: Поле UNPAK содержит 01040705 в распакованном десятичном формате. Нужен цикл, который преобразует это содержимое в ASCII - формат, т.е. 31343735.
Аватара пользователя
Oscar
Сообщения: 963
Зарегистрирован: 29 май 2004, 13:44
Откуда: Мюнхен (рожден в Киеве)
Контактная информация:

Svet_lana, в соседней теме есть макрос для вывода десятичного числа.

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

Так что в макросе нужно просто проходить по всем чётным (начиная слева) цифрам числа UNPACK.
Справишься?
Andy
Сообщения: 238
Зарегистрирован: 17 фев 2004, 08:15
Откуда: Минск

Цикл так цикл. Иначе если разрешен 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

*provided AS IS
Svet_lana
Сообщения: 8
Зарегистрирован: 06 дек 2005, 13:01
Откуда: г.Усть-Лабинск

Спасибо!!! :D
Ответить