Почему это не работает? 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!!!'
вообще не пойму. даже такой код не выводит 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 '*'
pashe4ka13 следи за соответствием количества push и pop и освой отладчик - для твоих 16 битных опытов пойдет Turbo Debugger он есть в комплекте tasm http://www.wasm.ru/baixado.php?mode=tool&id=230 (2,3Мб)
Вопрос про Хелло Ворлд? Код (Text): org 100h use16 mov ah, 9 mov dx, string int 21h ret string db 'Hello world!$'
Asterix тут человек про биос функции спрашивает, а про дос ни слова Код (Text): mov ah, 15 int 0x10 push bx mov ah, 3 int 0x10 pop bx mov ax, 0x1301 mov bl, 7 mov cx, длина_строки.привет_мир mov bp, привет_мир push ds pop es int 0x10 привет_мир db "Hello world!" длина_строки.привет_мир = $-привет_мир
Всем огромное СПАСИБО за ответы. Я знаю, что моя беда в том, что я не использую отладчик. С Turbo Debugger знаком хорошо, но он не работает под Вистой. Вопрос не в том, как написать Hello Word под ДОС. Строковые функции BIOS тоже не подойдут. Мне нужно, вывести на экран шестнадцатиричные значения каждого символа "Hello world!", а для этого я думаю нужно брать каждый "символ"- байт отдельно и преобразовывать его в символьный аналог шестнадцатиричного числа. Все это нужно сделать используя только функции BIOS, либо прямым выводом в видеопамять, так как на машине отсутствует операционная система.
А и еще приведенный выше код max7C4 у меня не выводит строку. Я вижу смещение курсора на её конец, что означает, что функция 0x13 int 10h отработала, но самой строки не видно. Пробовал менять mov bl, 7 тоже самое. Может это из-за того, что я запускаю код на виртуальной машине? И что за функция 0х15 ? Может кто то даст ссылку на справочник по функциям биоса. Я пользуюсь TachHelp. Сейчас наверное уже гараздо больше функций?
Код (Text): mov si, str @@: lodsb test al, al jz @f movzx bx, al shr bl, 4 add bx, digits push ax mov al, [bx] mov ah, 0x0E int 0x10 pop ax mov bl, al and bx, 0x0F add bx, digits mov al, [bx] mov ah, 0x0E int 0x10 mov al, " " int 0x10 jmp @b @@: ... digits db "0123456789ABCDEF" str db "Hello world!",13,10,0
попробуйте не получать номер текущей страницы, а просто указать нулевую. на некоторых эмуляторах 15-ая функция не пашет.