IPB
ЛогинПароль:

> ПРАВИЛА РАЗДЕЛА!!!

1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!

> перевод из 10ричной системы, есть ошибки
Глюк
сообщение 16.04.2008 16:02
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 34
Пол: Мужской

Репутация: -  0  +


программка переводит из 10ричной системы в 16,8,2ичные...кроме ответов на экран выводятся символы какие-то и после вывода не выходит сразу...Где-т ошибка sad.gif((
может кто-нибудь помочь с комментариями к этой программке rolleyes.gif ,т.к. в ассемблере я новичок,понятно,но н все - есть сомнения

.model tiny
.code
	org		100h
start:

	mov		ax,6219
	push	ax
	push	ax
	
	mov		bx,16
	lea		si,string
	call	IntToStr
	mov		ah,9
	lea		dx,string
	int		21h

	pop		ax
	mov		bx,8
	lea		si,string
	call	IntToStr
	mov		ah,9
	lea		dx,Break
	int		21h
		
	pop		ax
	mov		bx,2
	lea		si,string
	call	IntToStr
	mov		ah,9
	lea		dx,Break
	int		21h

		
	mov		ah,8
	int		21h
	ret
Break db 13,10
string db 64 dup('$')

IntToStr proc
;IN:
;ESI = address of the string to output the number
;EAX = nubmer to convert to string
;EBX = scale of notation
;
;OUT:
;number, converted to string at address, passed in ESI
;EBX = 0 if Error

;check scale of notation
	cmp		bx,9+26;9 digits and 26 letters
	jae		its_out_of_range

	push	dx
	push	di
	push	cx
	
its_sgn_plus:
	xor		cx,cx
	mov		di,si
its_repeat:
	xor		dx,dx
	div		bx
	cmp		dl,10
	jge		its_letter
	add		dl,30h
	jmp		its_notletter
its_letter:
	add		dl,41h-10
its_notletter:
	mov		byte ptr [di],dl
	inc		cx
	inc		di
	test	ax,ax
	jne		its_repeat
	
	push	cx
	shr		cx,1
	jnc		$+3
	inc		cx

its_invert_order:
	dec		di
	mov		dl,byte ptr [di]
	mov		al,byte ptr [si]
	mov		byte ptr [si],dl
	mov		byte ptr [di],al
	inc		si
	dec		cx	;loop its_invert_order
	jnz		its_invert_order
	pop		cx
	
	pop		cx
	pop		di
	pop		dx
	ret
	
its_out_of_range:
	xor		bx,bx	;EBX = 0 if Error
	ret

IntToStr endp
end start
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия 29.07.2025 8:04
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"