Вывод на экран средствами биоса - Assembler

Узнай цену своей работы

Формулировка задачи:

есть мини функция которая выводит строку на экран:
 proc printstr 
   push    ax      ; store registers...
push    si      ;
 
next_char:        
 
        mov     al, [si]   
        cmp     al, 0
        jz      printed
        inc     si
        mov     ah, 0eh ; teletype function.
        int     10h
        jmp     next_char
printed:
 
pop     si      ; re-store registers...
pop     ax      ;
 
     endp
Дело в том что при вызове функции вместе с ней печатается +3 символа разной фигни(рожица и еще что-то).Есть мысли?
А сама строка выводится

Решение задачи: «Вывод на экран средствами биоса»

textual
Листинг программы
org 0x7C00        
              
mov ah,02h
mov dl,0
mov dh,0,
mov ch,0
mov cl,3
mov al,2
 
mov krnl,bx              
              
              
mov 0x7c00,krnl
 
                    
                          krnl: db 65h

Объяснение кода листинга программы

Список элементов:

  1. Переменная ah содержит значение 02h (код функции вывода на экран).
  2. Переменная dl содержит значение 0 (определяет номер строки, начиная с 0).
  3. Переменная dh содержит значение 0 (определяет номер столбца, начиная с 0).
  4. Переменная ch содержит значение 0 (определяет номер страницы, начиная с 0).
  5. Переменная cl содержит значение 3 (количество символов, которые будут выведены).
  6. Переменная al содержит значение 2 (тип символов, которые будут выводиться).
  7. Переменная bx содержит адрес начала строки, которую необходимо вывести.
  8. Переменная krnl содержит адрес начала строки, которую необходимо вывести.
  9. Переменная 0x7c00 содержит адрес начала строки, которую необходимо вывести.
  10. Значение 65h является первым символом строки, которую необходимо вывести.

Оцени полезность:

11   голосов , оценка 3.909 из 5
Похожие ответы