x86汇编
文章平均质量分 85
多凡
一起为技术奋斗吧
展开
-
x86汇编加载用户程序-4-2
基于上篇加载了应到程序后,这一篇对用户程序内容进行增加,有屏幕显示多行内容,并实现超出屏幕,滚动屏幕,光标移动等。引言简单介绍本次实践,需要用的知识点。屏幕光标控制索引寄存器的端口号是 0x3d4,可以向它写入一个值,用来指定内部的某个寄存器。比如,两个 8 位的光标寄存器,其索引值分别是 14(0x0e)和 15(0x0f),分别用于提供光标位置的高 8 位和低 8 位。指定了寄存器之后,要对它进行读写,这可以通过数据端口 0x3d5 来进行。高八位 和第八位里保存这光标的位置,显卡文本.原创 2021-08-11 10:47:49 · 460 阅读 · 0 评论 -
x86汇编加载用户程序-4-1
离开主引导扇区之后,前方通常就是操作系统的森林,也就是我们经常听说的 DOS、Windows、Linux、UNIX 等,本篇要实现的就是通过引导程序加载硬盘上的用户,并执行。由于内容比较多,用户程序简写了,下一篇将在此基础上写入带有多段用户程序引言简单介绍本次实践,需要用的知识点。SECTIONIntel 处理器要求段在内存中的起始物理地址起码是 16 字节对齐的。这句话的意思是,必须是16 的倍数,或者说该物理地址必须能被 16 整除。所以每个段的定义中都包含了要求 16 字节对齐的子.原创 2021-08-06 00:04:34 · 432 阅读 · 0 评论 -
汇编语言完成1到100累加-3
如何完成1到100的累加,并把结果显示到屏幕上,使用对战储存数据引言简单介绍本次实践,需要用的知识点。堆栈使用前设置ss堆栈段的寄存器,设置sp栈顶偏移地址,此处都为0,原因是主引导程序从0x7c00开始,那么两个是不是冲突呢?后每次压栈时,SP 都要依次减 2,即 0x0000-0x0002=0xFFFE于是与主引导程序是不会冲突的。push, sp-2 pop, sp+2cmpcmp 指令在功能上和 sub 指令相同,唯一不同之处在于,cmp 指令仅仅根据计算的结果设置相.原创 2021-08-04 00:04:57 · 5180 阅读 · 0 评论 -
主引导扇区程序代码优化-2
上一期的代码使用笨拙的手段,将字符传入到显卡里,如果要增加或减少字符,工作量就会很大,考虑到这点,汇编当然有更好的方式去实现了,那就是循环,这篇文章将详细介绍。 会使用到一些新的指令 cld, movsw,rep,inc,loop,dec,jns,,,,$等引言依然先介绍会使用到的指令。主要是循环,和内存搬运指令。内存复制指令movsb,movsw这里有两个同样功能的指令区别在于,一次转移内存的大小,movsb 的传送是以字节为单位的,而 movsw 的传送是以字为单位的。从ds:si地址.原创 2021-08-03 00:34:13 · 173 阅读 · 0 评论 -
主引导扇区程序在屏幕显示文字-1
这章是学习了x86汇编从实模式到保护模式的初步实践,主要完成1.利用显卡在屏幕上显示文字,2.使用div汇编指令将标号以十进制的方式显示引言简单介绍本次实践,需要用的知识点。主引导扇区指的是处理器加电或者复位后,ROM-BIOS读取启动硬盘的第一个扇区,512字节。该扇区的最后两个字节必须 是0x55 0xaa。显卡内存地址0xB8000~0xBFFFF,由显卡来提供,用来显示文本。(所有在个人计算机上使用的显卡,在加电自检之后都会把自己初始化到80×25 的文本模式。在这种模式下,屏幕.原创 2021-07-31 16:05:18 · 225 阅读 · 0 评论