вывод с помощью BIOS

Тема в разделе "WASM.BEGINNERS", создана пользователем Axotnik, 18 май 2007.

  1. Axotnik

    Axotnik New Member

    Публикаций:
    0
    Регистрация:
    8 май 2007
    Сообщения:
    48
    как вывести на екран Hello world!!!! с помощью средств BIOS функцией 13h....обьясните пожалуста.....
     
  2. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    читаешь описание этой функции. заносишь в регистры нужные значения, вызываешь int 13h.
     
  3. Axotnik

    Axotnik New Member

    Публикаций:
    0
    Регистрация:
    8 май 2007
    Сообщения:
    48
    пасибо но я просил обьснений...
     
  4. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    я объяснил. Конкретика где?
    Функция 13h. 10ое прерывания, открываешь справочник, смотришь параметры. Какой из этих шагов не понятен?
     
  5. Axotnik

    Axotnik New Member

    Публикаций:
    0
    Регистрация:
    8 май 2007
    Сообщения:
    48
    извини но я вообще не шару етон надо для проги на СИ...
     
  6. Vov4ick

    Vov4ick Владимир

    Публикаций:
    0
    Регистрация:
    8 окт 2006
    Сообщения:
    581
    Адрес:
    МО
    Код (Text):
    1. INT 10 - VIDEO - WRITE STRING (AT and later,EGA)
    2.         AH = 13h
    3.         AL = write mode
    4.            bit 0: update cursor after writing
    5.            bit 1: string contains alternating characters and attributes
    6.            bits 2-7: reserved (0)
    7.         BH = page number
    8.         BL = attribute if string contains only characters
    9.         CX = number of characters in string
    10.         DH,DL = row,column at which to start writing
    11.         ES:BP -> string to write
    12. Return: nothing
    13. Notes:  recognizes CR, LF, BS, and bell; for the ET4000 BIOS, scrolling,
    14.           backspace, and CR only take place in the active page
    15.         also available PC or XT with EGA or higher
    16.         HP 95LX only supports write mode 00h
    17.         IBM documents AL=10h,11h,20h,21h as "private" rather than "reserved"
    18.         with PhysTechSoft's PTS ROM-DOS the AL,BH,BL,DH, and DL values are
    19.           ignored on entry.
    20. BUG:    on the IBM VGA Adapter, any scrolling which may occur is performed on
    21.           the active page rather than the requested page
    (с) Ralph Brown
     
  7. Axotnik

    Axotnik New Member

    Публикаций:
    0
    Регистрация:
    8 май 2007
    Сообщения:
    48
    и что ето всё означает?
     
  8. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    назначение регистров при использовании этого прерывания.
     
  9. Axotnik

    Axotnik New Member

    Публикаций:
    0
    Регистрация:
    8 май 2007
    Сообщения:
    48
    а вы,знатоки(пожалуста) не можете написать код с коментариями
     
  10. matich

    matich New Member

    Публикаций:
    0
    Регистрация:
    16 апр 2007
    Сообщения:
    72
    >а вы,знатоки(пожалуста) не можете написать код с коментариями

    не можем =(
    мы асма отроду не видовали =(

    Код (Text):
    1. org 100h
    2.  
    3.  
    4.  mov ax, 0003h  ;set 03 text mode 80x25 chars
    5.  int 10h
    6.  
    7.  mov ax, cs
    8.  mov es, ax     ;mov cs to ds
    9.  
    10.  lea bp, [mess] ;mov string offset to bp
    11.  
    12.  mov ah, 13h    ;number of function
    13.  mov bx, 0000h  ;BH = page numbe BL = attribute if string contains only characters
    14.  mov cx, 4      ;number of characters in string
    15.  mov dx, 0a0ah  ;DH,DL = row,column at which to start writing
    16.                 ;yeah-yeah we will write at (10, 10)
    17.  int 10h        ;put our string to screen
    18.  
    19.  
    20.  mov ah, 10h     ;wait for key
    21.  int 16h         ;by 16h intrrupt
    22.  
    23.  int 20h         ;exit program
    24.  
    25. mess db 'T',7,'e',7,'s',7,'t',7 ; this is our string, isn't it?
     
  11. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    если лаба/курсовик/... то http://www.wasm.ru/forum/viewtopic.php?id=17088
    если другое, то http://www.wasm.ru/forum/viewforum.php?id=26
    тк заметно что не для изучения, а ради кода.
     
  12. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    так же заметно, что знаний асма у топикстартера 0, поэтому "объясните" == "напишите за меня"
     
  13. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    matich
    С регистром AL при вызове функции (AH=13h) у тебя непонятки :) Строка же с атрибутами.
     
  14. matich

    matich New Member

    Публикаций:
    0
    Регистрация:
    16 апр 2007
    Сообщения:
    72
    С регистром AL при вызове функции (AH=13h) у тебя непонятки :)

    после

    mov ax 0003h
    int 10h

    в al хранится 03h
    следовательно 0 и 1 биты установлены.

    хотя правильнее будет
    не mov ah, 13h а mov ax 1300h
     
  15. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    matich
    Только ты забыл, что у тебя после
    следует
    Еще правильнее видимо
    mov ax, 1303h
     
  16. matich

    matich New Member

    Публикаций:
    0
    Регистрация:
    16 апр 2007
    Сообщения:
    72
    >Еще правильнее видимо mov ax, 1303h
    Ой! очепятолся.

    ЗЫ: но ведь работает же, а раз работает... =)
     
  17. Axotnik

    Axotnik New Member

    Публикаций:
    0
    Регистрация:
    8 май 2007
    Сообщения:
    48
    вот посидел разобрался ..получил код..вроде всё правильно но вместо--- нелло ворлд!!!--
    выводит символы ...и не могу понят почему...может дело в 13н ..но мне строго с неей надо сделать..посмотрите пожалуста..
    my_data segment
    string db 'hello world' ; ASCII-строка
    lenS = $-string
    my_data ends

    my_stack segment stack ; описание сегмента стека
    dw 32 dup(?) ; резервирование 32 слов для стека
    my_stack ends
    ; Код
    my_commands segment
    assume cs:my_commands, ds:my_data
    begin: mov ax, my_data ; занесение адреса сегмента my_data
    mov ds, ax ; в сегментный регистр ds
    mov ah, 3 ; вначале узнаем, где курсор
    mov bh, 0 ;
    int 10h ; dh = строка экрана, dl = позиция
    mov si, 0 ; будем циклить
    next: mov ah, 13h ; функция BIOS вывода символа
    mov cx, 1 ; количество экземпляров символа
    mov bl, 7 ; атрибут цвета - серым по черному
    mov al, [si] ; загружаем символ
    int 10h ; вызов BIOS
    mov ah, 2 ; подвинем курсор
    mov bh, 0 ; (№ видеостраницы)
    inc dl ; (dh = прежняя строка)
    int 10h ; вызов BIOS
    inc si ; смещаемся по строке символов
    cmp si, lenS ; дошли до конца?
    jb next

    ; (содержательная часть программы)
    exit: mov ah, 4Ch ; функция завершения программы
    int 21h
    my_commands ends
    end begin ; конец программы, метка входа
     
  18. Vov4ick

    Vov4ick Владимир

    Публикаций:
    0
    Регистрация:
    8 окт 2006
    Сообщения:
    581
    Адрес:
    МО
    Axotnik Ты хоть 6-й пост читал?
     
  19. Axotnik

    Axotnik New Member

    Публикаций:
    0
    Регистрация:
    8 май 2007
    Сообщения:
    48
    не не читал а что ето такое?
     
  20. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    Axotnik
    сообшение номер 6.
    Номер сообщения пишется в его правом верхнем углу - например это сообщение #20.