@Sergey_Lomakin

Как создать процедуру выводящую код символа в HEX формате?

Не получается создать процедуру выводящую код символа в HEX формате, уже перерыл много форумов и никак, что делаю не так?
ideal
	model	small
	stack	256
	include	"primer1.uno"
	dataseg
simvol	db	?
	codeseg
	extrn	write_2:proc, write_10:proc, write_16:proc	
start:
	mov	ax,@data
	mov	ds,ax
	mov	ah,1
	int	21h
	mov	[simvol],al		
	probel				
	mov	bl,[simvol]
	call	write_2			
	probel
	mov	dh,0
	mov	dl,[simvol]
	call	write_10		
	probel
	mov	dh,0
	mov	dl,[simvol]
	call	write_16		
	mov	ax,4c00h
	int	21h
	end	start

файл процедур PROC4.ASM
push	dx
	push	si
	mov	ax,dx
	mov	si,10	
	mov	cx,0	
non_zero:
	mov	dx,0
	div	si
	push	dx	
	inc 	cx
	cmp	ax,0
	jne	non_zero
metka1:
	pop	dx
	call	wr_cifra
	loop	metka1
	pop	si
	pop	dx
	pop	cx
	pop	ax
	ret
	endp

	proc	wr_cifra
	add	dl,30h
	mov	ah,2
	int	21h
	ret
	endp

	proc	write_16
	push	ax
	push	cx
	push	dx
	push	bx
	mov	ax,dx
	mov	si,16
	mov	cx,0
non_zero_w16:
	mov	dx,0
	div	si
	push	dx
	inc	cx
	cmp	ax,0
	jne	non_zero_w16
metka2:
	pop	dx
	call	wr_cifra
	loop	metka2
	pop	si
	pop	dx
	pop	cx
	pop	ax
	ret
	endp
	end

файл макросов PRIMER1.UNO
macro	probel
	push	ax
	push	dx
	mov	ah,2
	mov	dl," "
	int	21h
	pop	dx
	pop	ax
	endm
  • Вопрос задан
  • 91 просмотр
Решения вопроса 1
@pfemidi
Тут могло бы быть краткое описание меня
Красивый хак для вывода AL именно в шестнадцатиричном виде, подсмотренный мной в далёком 1989-м году в SYMDEB.EXE и так мне в своё время понравившийся, что я его запомнил на всю жизнь. Вот слегка видоизменённый по сравнению с оригиналом из SYMDEB.EXE вариант (там использовались всякие дополнительные проверки, которые я тут выкинул). Прошу заметить -- ни одного сравнения, ни одного условного перехода!

AL_to_HEX       proc near
        push    ax
        shr     al,4
        call    @@outNibble
        pop     ax
@@outNubble:
        and     al,0fh
        add     al,90h
        daa
        adc     al,40h
        daa
        mov     ah,0eh
        int     10h
        ret
AL_TO_HEX       endp
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
freeExec
@freeExec
Участник OpenStreetMap
что делаю не так

Не пользуетесь отладкой своего кода. За вас это делать бесплатно никто не будет, тем более в асме.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы