Помощь программы сборки - PullRequest
1 голос
/ 01 декабря 2010

У меня есть программа, которая должна очистить экран и напечатать мое имя, затем новую строку и снова напечатать мое имя. но когда я бегу, ничего не появляется. просто программа проходит нормально. Я делаю это в командной строке Windows, используя отладку.

    call 010E
    call 0125
    call 012D
    call 0125
    int 20

    push ax     #clearscreen(010E)
    push bx
    push cx
    push dx
    xor al, al
    xor cx, cx
    mov dh, 18
    mov dl, 4f
    mov bh, 07
    mov ah, 06
    int 20
    pop dx
    pop cx
    pop bx
    pop ax
    ret

    mov dx, 0200    #printline(0125)
    mov ah, 09
    int 21
    ret

    push ax         #new line( 012D)
    push dx
    mov ah, 02
    mov dl, 0d
    int 21
    mov dl, 0a
    int 21,
    pop dx
    pop ax
    ret

    DB' Antarr$ #(0200)

Ответы [ 2 ]

2 голосов
/ 01 декабря 2010

Ваша первая и наиболее очевидная ошибка - вызов int 20, Завершение программы, вместо прерывания BIOS int 10 с помощью функции clearscreen.

РЕДАКТИРОВАТЬ: но почему бы вам не использовать ассемблер дляэтот?Попробуйте NASM например.Также эта программа: Tech , поможет вам найти правильную функцию DOS или BIOS.

1 голос
/ 01 декабря 2010

Вы пытаетесь вызвать аппаратное прерывание (int 20).Из-за защищенного режима вы не сможете войти в режим 20. Другими словами, Windows не позволит вам напрямую общаться с оборудованием.

...