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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.06.2010, 01:09   #1
professor
 
Регистрация: 31.05.2010
Сообщений: 3
По умолчанию не работает перевод из целого числа в ASCII

В этой программулине, перевода из целого числа в десятичную ASCII строку, у меня когда выполняем строчку помеченную красным при AX = 0000 программа вылетает и дальше никак не работает че делать?

start proc

push cx ;сохраняем регистры
push dx
push bx
mov bx,10 ;основание системы
XOR CX,CX ;в сх будет количество цифр в десятичном числе
@@m1: XOR dx,dx ;обнудяем dx
DIV bx ;делим число на степени 10
PUSH DX ;и сохраняем остаток от деления(коэффициенты при степенях) в стек
INC CX ;увеличиваем количество символов в числе
TEST AX,AX ;преобразовали все число?
JNZ @@m1 ;если нет, то продолжить
@@m2: POP AX ;восстанавливаем остаток от деления
ADD AL,'0' ;преобразовываем число в ASCII символ
STOSb ;сохраняем в буфер
LOOP @@m2 ;все цифры
pop bx ;восстанавливаем регистры
POP dx
POP cx
RET
start endp
professor вне форума Ответить с цитированием
Старый 07.06.2010, 06:59   #2
Mikl___
Участник клуба
 
Регистрация: 11.01.2010
Сообщений: 1,139
По умолчанию

professor
Не знаю, а у меня всё работает
Код:
; masm dos com #
.286
.model tiny
.code	
org 100h
start:	mov ax,20FFh
	mov di,offset buffer
	mov bx,10 ;основание системы
	XOR CX,CX ;в сх будет количество цифр в десятичном числе
@@:	XOR dx,dx ;обнуляем dx
	DIV bx ;делим число на 10
	PUSH DX ;и сохраняем остаток от деления в стек
	INC CX ;увеличиваем количество символов в числе
	TEST AX,AX ;преобразовали все число?
	JNZ @b ;если нет, то продолжить
@@:	POP AX ;восстанавливаем остаток от деления
	ADD AL,'0' ;преобразовываем число в ASCII символ
	STOSb ;сохраняем в буфер
	LOOP @b ;все цифры
	mov ax,3; очищаю экран
	int 10h
	mov ah,9; вывожу строку 
	mov dx,offset buffer
	int 21h
	mov ah,0; жду, пока не нажмут на любую клавишу
	int 16h
	ret; завершаю программу
buffer db 10 dup ('$'); буфер под 10 цифр
end start

Последний раз редактировалось Mikl___; 07.06.2010 в 07:04.
Mikl___ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывести числа целого неотр. числа Gonzo Помощь студентам 11 04.05.2010 16:55
Как установить i-й бит целого числа qwerty09 Общие вопросы C/C++ 4 09.07.2009 00:20
Поиск целого числа в строке sven117 Общие вопросы C/C++ 9 01.07.2009 14:01
ВЫчисление дробей по модулю целого числа Камикадзе Помощь студентам 0 18.04.2009 09:29
сумма цифр целого числа mihsel Microsoft Office Excel 8 13.04.2009 13:57