继续分页,这次改了第一页的映射关系

加入的汇编代码:

_change_page:  //第一页的地址被映射到第七页(自己是这样想的),所以修改0xc00的内容,即是修改了0x7c00的内容
    mov $0x7007, %eax
    mov $0x1000000, %edi
    stosl
    
    movl $0xfff000, %eax  //更新页目录表
    movl %eax, %cr3
    ret
    
改动的主程序代码:

    fillbox(0x001e90ff, 0, 0, 799, 599);
    str = "又做了一些改动,把第一页映射到第七页,借用小米的一句话,\"永远相信美好的事情即将发生\"";
    print_gb2312(0xffffffff, 0, 0, str);
    print_gb2312(0xffffffff, 80, 80, addr0);
    setup_page();
    print_gb2312(0x00000000, 80, 160, addr0);
    change_page();
    print_gb2312(0x00ff0000, 80, 240, (char *)0xc00);
    char *addr1 = (char *)0xc00;
    *addr1 = 0xce;              // 这是‘我’字的gb2312码值
    *(addr1 + 1) = 0xd2;
    print_gb2312(0x0000ff00, 80, 320, addr0);
    print_gb2312(0xffffffff, 80, 400, addr1);

猜你喜欢

转载自blog.csdn.net/weixin_39410618/article/details/82731872