1

我在 turbo pascal 中的语法有问题,这在调试中没有问题,但我不能让它在 Turbo Pascal 中工作。

program foo;

begin
asm
    mov ah,06h;
    mov bh,$21;
    mov cx,$0000;
    mov bx,$1950; 
    int 10h;
    mov ah,00h;
    int 16h;  
end;
end.

我不知道出了什么问题。

PD:这东西里的h、$和b是什么意思?

4

1 回答 1

8

INT 10h / AH=06h还需要一个值AL

program foo;

begin
    asm
        mov ah, 06h
        mov bh, $21
        mov cx, $0000
        mov bx, $1950      (* Should it rather be `dx`? *) 
        mov al, 25         (* Scroll up 25 lines *)
        int 10h

        mov ah, 00h
        int 16h
    end;
end.

要清除整个窗口,您可以设置AL为零(mov al, 0xor al, al)。

后缀“h”表示这是一个十六进制数。前缀“$”的含义相同。第一个是汇编符号,第二个是帕斯卡符号。没有后缀或前缀,它是一个十进制数。

于 2015-04-25T05:41:49.563 回答