Member 12935107 Ответов: 2

Печать вход в сборку


Я работаю над операционной системой. Для этого я создаю функцию печати в сборке. Когда я пытаюсь напечатать "- - - - " с этим. это не работает. Мой код доступен по этому адресу: ThunderEagle/printf. asm at master · Sansoft500/ThunderEagle · GitHub[^]

пожалуйста, помогите мне решить

Что я уже пробовал:

Url-адрес, показанный ранее, является единственным, но когда я использую

мов ал,' -'
int 10h
int 10h
int 10h

это работает. как я использую это с моей функцией?

[Правка Йохена Арндта: вставленный код из GitHub]
printf:
	mov ah,0x0e
	mov bh,0x00
	mov bl,0x07
	next:
		mov al,[si]
		or al,al
		jz done
		int 0x10
		inc si
		jmp next
	done:
		ret

[РЕДАКТИРОВАТЬ]

2 Ответов

Рейтинг:
1

Kornfeld Eliyahu Peter

Чтобы напечатать символ с помощью BIOS interrupt 10h, сначала необходимо установить функцию в AH...

mov ah, 0x0e
mov al, '-'
int 0x10

Если вы хотите, чтобы мы изучили ваш код, пожалуйста, вставьте его в свой вопрос вместо добавления ссылки...


Рейтинг:
0

Jochen Arndt

Код с URL-адреса GitHub:

printf:
	mov ah,0x0e
	mov bh,0x00
	mov bl,0x07
	next:
		mov al,[si]
		or al,al
		jz done
		int 0x10
		inc si
		jmp next
	done:
		ret

Вышеизложенное требует, чтобы DS:SI указывает на строку с нулевым завершением. Так что вам нужно что-то вроде этого:
SECTION .data
minus3: db "---", 0

    SECTION .TEXT

; ...
; DS must be .data which it usually is 
    mov si,minus3
    call printf