VGA线性帧地址对齐问题 显示错位 显示乱码 地址错误

        当我们用BIOS服务获得一些关于VGA的视频信息后,一定要注意的一点是:BIOS会对齐每一行的线性帧地址,换句话说,我们需要把每行的像素数(x)以0x10为单位进行向上舍入,否则就会出现错位现象。

        比如说,屏幕分辨率为1366*768,也就是x为556H,那么我们就把它向上舍入,这个方法有很多,比如用if(这里就不贴代码了😃),但我们可以用跟更加简洁的写法(非三目:

x = (x + 0x0f) & 0xfff0; //x为每行的像素数

    这个其实很容易理解:加上0fH的作用和if是一样的,即判断它的个位数是否为零,若是则进一位;然后在再向下舍入,即把个位清零,这个技巧十分有用,不过不是笔者想出来的,而是笔者在书上看到的。

    最后上几张图😉46046d69c4534b4bbfbf45720ba2f764.jpeg

错位

1875702c0cb746738e583d955523174e.jpeg

错位放大图·1

6f295244e01c4dfd85af3b00ad39438f.jpeg

错位放大图·2

c2b5f097cfba4f589ac835d67f91248e.jpeg

正确

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值