Hello Word на fasm

Тема в разделе "WASM.BEGINNERS", создана пользователем pashe4ka13, 12 окт 2010.

  1. pashe4ka13

    pashe4ka13 New Member

    Публикаций:
    0
    Регистрация:
    4 окт 2010
    Сообщения:
    263
    Почему это не работает?

    org 600h
    use16
    x1=0
    mov ah,0
    mov al,3
    int 10h
    mov cl,13
    push cx

    start:
    x1=x1+1
    mov ah,0ah
    mov bh,0
    mov al,[bufer+x1]
    mov cx,1
    int 10h
    mov ah,02h
    mov bh,0
    mov dx,x1
    int 10h
    pop cx
    loop start
    stop:
    jmp stop


    bufer db 'Hello Word!!!'
     
  2. baldr

    baldr New Member

    Публикаций:
    0
    Регистрация:
    29 апр 2010
    Сообщения:
    327
    pashe4ka13,

    Хтонический ужас. То, что x1 — константа времени компиляции, не смущает?
     
  3. pashe4ka13

    pashe4ka13 New Member

    Публикаций:
    0
    Регистрация:
    4 окт 2010
    Сообщения:
    263
    смущает. А как мне задать смещение по bufer ?
     
  4. pashe4ka13

    pashe4ka13 New Member

    Публикаций:
    0
    Регистрация:
    4 окт 2010
    Сообщения:
    263
    вообще не пойму. даже такой код не выводит 13 звездочек в ряд. Что не так?

    org 600h
    use16

    mov ah,0
    mov al,3
    int 10h
    mov cx,13
    push cx

    start:

    mov ah,0ah
    mov bh,0
    mov al,[bufer]
    mov cx,1
    int 10h
    mov ah,02h
    mov bh,0
    pop cx
    mov dx,cx
    int 10h
    loop start
    stop:
    jmp stop


    bufer db '*'
     
  5. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    pashe4ka13
    следи за соответствием количества push и pop ;)
    и освой отладчик - для твоих 16 битных опытов пойдет Turbo Debugger он есть в комплекте tasm
    http://www.wasm.ru/baixado.php?mode=tool&id=230 (2,3Мб)
     
  6. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    Вопрос про Хелло Ворлд?

    Код (Text):
    1. org 100h
    2. use16
    3.  
    4. mov ah, 9
    5. mov dx, string
    6. int 21h
    7. ret
    8.  
    9. string  db 'Hello world!$'
     
  7. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    Asterix
    тут человек про биос функции спрашивает, а про дос ни слова
    Код (Text):
    1. mov ah, 15
    2. int 0x10
    3. push bx
    4. mov ah, 3
    5. int 0x10
    6. pop bx
    7. mov ax, 0x1301
    8. mov bl, 7
    9. mov cx, длина_строки.привет_мир
    10. mov bp, привет_мир
    11. push ds
    12. pop es
    13. int 0x10
    14. привет_мир  db "Hello world!"
    15. длина_строки.привет_мир = $-привет_мир
     
  8. pashe4ka13

    pashe4ka13 New Member

    Публикаций:
    0
    Регистрация:
    4 окт 2010
    Сообщения:
    263
    Всем огромное СПАСИБО за ответы. Я знаю, что моя беда в том, что я не использую отладчик. С Turbo Debugger знаком хорошо, но он не работает под Вистой.
    Вопрос не в том, как написать Hello Word под ДОС. Строковые функции BIOS тоже не подойдут. Мне нужно, вывести на экран шестнадцатиричные значения каждого символа "Hello world!", а для этого я думаю нужно брать каждый "символ"- байт отдельно и преобразовывать его в символьный аналог шестнадцатиричного числа. Все это нужно сделать используя только функции BIOS, либо прямым выводом в видеопамять, так как на машине отсутствует операционная система.
     
  9. pashe4ka13

    pashe4ka13 New Member

    Публикаций:
    0
    Регистрация:
    4 окт 2010
    Сообщения:
    263
    А и еще приведенный выше код max7C4 у меня не выводит строку. Я вижу смещение курсора на её конец, что означает, что функция 0x13
    int 10h отработала, но самой строки не видно. Пробовал менять mov bl, 7 тоже самое. Может это из-за того, что я запускаю код на виртуальной машине? И что за функция 0х15 ? Может кто то даст ссылку на справочник по функциям биоса. Я пользуюсь TachHelp. Сейчас наверное уже гараздо больше функций?
     
  10. KIV

    KIV Member

    Публикаций:
    0
    Регистрация:
    16 июл 2009
    Сообщения:
    231
    Код (Text):
    1.     mov si, str
    2. @@:
    3.     lodsb
    4.     test al, al
    5.     jz @f
    6.     movzx bx, al
    7.     shr bl, 4
    8.     add bx, digits
    9.     push ax
    10.     mov al, [bx]
    11.     mov ah, 0x0E
    12.     int 0x10
    13.     pop ax
    14.     mov bl, al
    15.     and bx, 0x0F
    16.     add bx, digits
    17.     mov al, [bx]
    18.     mov ah, 0x0E
    19.     int 0x10
    20.     mov al, " "
    21.     int 0x10
    22.     jmp @b
    23. @@:
    24.     ...
    25. digits db "0123456789ABCDEF"
    26. str db "Hello world!",13,10,0
     
  11. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    попробуйте не получать номер текущей страницы, а просто указать нулевую. на некоторых эмуляторах 15-ая функция не пашет.