OS编写
文章平均质量分 66
柳家山头号矿工
如果你喜欢数学,那我们就是朋友!!!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
操作系统真相还原_第8章:内存管理系统
笔记原创 2023-03-03 16:44:15 · 1136 阅读 · 1 评论 -
操作系统真相还原_第7章:中断
笔记原创 2023-02-28 10:43:45 · 1331 阅读 · 0 评论 -
操作系统真相还原_第6章:完善内核
笔记原创 2023-02-21 14:46:14 · 963 阅读 · 0 评论 -
操作系统真相还原_第5章第4节:特权级
笔记原创 2023-01-25 22:21:52 · 1138 阅读 · 0 评论 -
操作系统真相还原_第5章第3节:加载内核(ELF格式分析)
笔记原创 2023-01-24 12:16:38 · 1965 阅读 · 0 评论 -
操作系统真相还原_第5章第2节:内存分页机制
笔记原创 2023-01-22 11:35:37 · 1749 阅读 · 0 评论 -
操作系统真相还原_第5章第1节:利用BIOS中断0x15 获取内存信息
笔记原创 2023-01-22 11:15:54 · 1684 阅读 · 0 评论 -
操作系统真相还原_第3章:实模式下跳转指令补充
笔记原创 2022-12-30 10:02:21 · 824 阅读 · 0 评论 -
操作系统真相还原_第4章:进入保护模式
笔记原创 2022-10-23 18:36:03 · 1033 阅读 · 0 评论 -
操作系统真相还原_第3章:8086汇编硬件交互
笔记原创 2022-10-21 17:08:13 · 1203 阅读 · 0 评论 -
操作系统真相还原_第1~2章:环境配置
笔记原创 2022-10-19 20:03:35 · 785 阅读 · 0 评论 -
80386汇编_冒泡排序
文章目录要求效果代码要求1、进入32保护模式2、在32保护模式下,对字符串进行按照字符大小进行排序效果第一行:成功进入保护模式第二行:原字符串顺序第三行:排序后字符串顺序代码;------------------------------------------------------------------------------- ;设置堆栈段和栈指针 mov ax,0x7a00 mov ss,ax mov sp,0x0200;-------------------原创 2022-04-25 18:27:32 · 302 阅读 · 0 评论 -
80386汇编_进入32位保护模式
文章目录效果代码效果代码 ;栈段与栈指针 0x07c00 --> 0x07a00 由高地址 到 低地址 mov ax,0x07a0 mov ss,ax mov sp,0x7c00 ;-------------------------------------------------------------------------------- ;计算gdt的逻辑地址 mov dx,[cs:gdt_base+0x7c00+2] mov原创 2022-04-24 15:42:16 · 343 阅读 · 0 评论 -
80386汇编_全局描述表GDT介绍
文章目录图示解析图示解析原创 2022-04-22 16:26:21 · 293 阅读 · 0 评论 -
80386汇编_寄存器 & 寻址方式介绍
文章目录寄存器寻址方式寄存器寻址方式原创 2022-04-22 15:38:30 · 357 阅读 · 0 评论 -
8086汇编_用户程序_字符串打印
文章目录要求编写一个用户程序加载器编写一个用户程序思路用户程序解析代码要求编写一个用户程序加载器具体要求:用户程序在磁盘的第100个扇区将用户程序从磁盘加载到内存的0x10000位置进入用户程序执行,最后返回程序加载器编写一个用户程序具体要求:在屏幕上打印字符串ascii字符0x0d为回车字符,光标回车ascii字符0x0a为换行字符,光标换行ascii字符0x0为字符串结尾,结束输出其他字符进行打印输出显存写满时,则向上滚屏,整体向上移动一行思路用户程序解析代码...原创 2022-04-19 07:54:17 · 1645 阅读 · 0 评论 -
汇编语言练习_5_用户程序书写
文章目录解析说明步骤效果代码解析说明1、retf指令的作用:从栈中取出段地址和偏移地址,进行跳转2、一般调用例程用call,但是retf也可以3、该应用程序需要配合上loader程序(程序加载器)才能被调用程序加载器代码地址4、该程序根据加载器loader的要求必须位于硬盘的第100个逻辑扇区,但是可以通过修改loader程序中的app_lba_start equ来重新指定5、该程序根据加载器loader的要求会被加载到物理地址0x10000处,但是可以通过修改loader程序中的phy_原创 2022-04-16 14:56:03 · 750 阅读 · 0 评论 -
汇编语言练习_4_用户程序加载器
文章目录解析说明流程代码解析说明app_lba_start equ 表示用户程序在硬盘上的具体扇区号phy_base 表示用户程序被加载到内存的位置本加载程序使用LBA直写模式流程第一步:计算用户程序加载位置第二步:读取用户程序头部前512个字节第三步:根据头部信息,判断整个应用程序大小,是否需要再次读取硬盘,若需要则继续读取第四步:用户程序加载完毕,修改重定位表原因:程序被加载后的逻辑地址改变,需要将重定位表中的段的地址加上程序加载地址再写回第五步:计算用户程序入口地址写回用户程序原创 2022-04-16 14:43:14 · 348 阅读 · 0 评论 -
x86汇编_硬盘控制器端口读取扇区数据
文章目录本质主硬盘从硬盘本质端口是由外围设备提供的接口,本质上是寄存器,属于外围设备主硬盘主硬盘控制器端口共有8个,端口号分别为0x1f0:16位端口,数据传输端口0x1f1:错误类型返回0x1f2:8位端口,设置读取的扇区数量0x1f3:8位端口,扇区号低0~7位设置端口(LBA28模式)0x1f4:8位端口,扇区号低8~15位设置端口(LBA28模式)0x1f5:8位端口,扇区号低16~23位设置端口(LBA28模式)0x1f6:8位端口,低四位设置扇区号低24~27位设置端口(L原创 2022-04-16 08:27:58 · 1659 阅读 · 1 评论 -
8086汇编_用户程序基本框架
section header align=16 vstart=0 ;头部段,描述用户程序基本信息program_length: ;用户程序长度 dd program_end code_main_entry: ;用户程序入口 dw start dd section.code_main.start realloc_tbl_length: ;段重定位表长度 dw (header_end-code_原创 2022-04-15 15:20:39 · 501 阅读 · 0 评论 -
8086汇编_常用指令
文章目录mov指令and指令or指令xor指令push指令pop指令jmp指令cmp指令JG / JL指令JGE / JLE指令call指令ret指令未完…mov指令mov OPRD1, OPRD2将OPRD2送到OPRD1中and指令and OPRD1, OPRD2两操作数进行按位与运算,结果存于OPRD1两操作数长度必须一致or指令or OPRD1, OPRD2两操作数进行按位或运算,结果存于OPRD1两操作数长度必须一致xor指令xor OPRD1, OPRD2两操作数进行原创 2022-04-14 10:22:19 · 2831 阅读 · 0 评论 -
汇编语言练习_3_利用栈写显存
文章目录要求思路效果代码汇编码lst汇编对照码要求1、计算1+2+3…+100的结果2、利用栈将表达式与计算结果输出到显存思路第一步:利用loop计算1~100的和,保存在dx中第二步:将计算结果进行拆分,并拆分的数位与其字符属性保存在栈中第三步:现将表达式字符串输出到显存,再从栈中取数据输出到显存效果代码汇编码start: jmp code0 data: db '1+2+3+...+100=';1byte;累加计算code0: mov cx,100 xor ax,原创 2022-04-14 09:11:05 · 516 阅读 · 0 评论 -
8086汇编_寄存器介绍
文章目录一、通用寄存器数据寄存器基址寄存器变址寄存器二、段寄存器三、补充 逻辑地址组成偏移地址组成四、控制寄存器一、通用寄存器数据寄存器• ax:累加器• ah• al• bx:基址寄存器• bh• bl• cx:计数器• ch• cl• dx:数据中转• dh• dl基址寄存器• sp:堆栈指针(不能作为间址寄存器)• bp:基址指针(可作为间址寄存器)变址寄存器• si:源变址寄存器(缺省段寄存器为ds)• di:目的变址寄存器二、段寄存器• cs:代码段寄存原创 2022-04-12 21:27:07 · 693 阅读 · 0 评论 -
汇编语言练习_2_批量传送 & 条件转移
文章目录解析movsb指令(mov string byte)movsw指令(mov string word)jns指令(jmp not sf)效果movsb指令显示"Hello"movsw指令显示"BOCHS"jns指令显示"HelloBOCHS"代码前期准备批量传送指令 movsb批量传送指令 movsw条件转移 jns字符填充解析movsb指令(mov string byte)以ds:si为源地址,es:di为目的地址进行传送,每次传送一个字节DF寄存器设置数据读取以及数据填入的方向DF=0时原创 2022-04-11 13:11:15 · 3323 阅读 · 0 评论 -
8086汇编_四则运算
文章目录一、加法1、语法:2、作用:3、限制:4、补充:二、减法1、语法:2、作用:3、限制:三、乘法(无符号)1、语法:2、作用:3、补充:四、除法(无符号)1、语法2、作用五、异或1、语法2、作用3、限制4、补充一、加法1、语法:add OPRD1, OPRD22、作用:OPRD1 = OPRD1 + OPRD2将OPRD1加上OPRD2保存在OPRD1中3、限制:1、两操作数不允许同时为内存2、立即数不能做OPRD14、补充:add操作结果会影响到标志寄存器二、减法1、语法:原创 2022-04-10 20:51:30 · 1596 阅读 · 0 评论 -
汇编语言练习_1_数字分解_显示
文章目录环境1、Bochs虚拟机2、VirtualBox工具1、notepad++2、nasm思路第一步:第二步:第三步:第四步:第五步:第六步:第七步:解析1、第二行中jmp code2、计算字符串长度3、ds为何为0x07c05、loop s解释6、第111行加上0x30的原因7、除法指令解析8、数字分解原理9、为何屏幕显示的数字是逆序的10、结尾的字符填充效果1、要求2、virtualbox3、bochs代码1、汇编代码2、机器码 对照 汇编代码环境1、Bochs虚拟机代码调试2、Virtua原创 2022-04-10 14:04:14 · 1211 阅读 · 0 评论 -
8086汇编_除法指令
文章目录语法规则16位除法32位除法语法div m规则16位除法除数m为8位时默认ax存储被除数商保存在al中余保存在ah中32位除法除数m为16位时默认ax存储被除数低16位,dx存储被除数高16位商保存在ax中余保存在dx中...原创 2022-04-10 13:59:12 · 1144 阅读 · 0 评论 -
汇编语言练习_0_字符串显示
文章目录环境1、Bochs虚拟机2、VirtualBox工具1、notepad++2、nasm思路第一步:第二步:第三步:第四步:第五步:第六步:第七步:第八步:解析1、第二行中jmp code2、计算字符串长度3、ds为何为0x07c04、有关8086显存知识5、loop s解释6、结尾的字符填充效果1、virtualbox2、bochs代码汇编代码机器码 对照 汇编代码环境1、Bochs虚拟机代码调试2、VirtualBoxBIOS运行工具1、notepad++编写代码2、nasm编原创 2022-04-09 18:00:07 · 1899 阅读 · 0 评论 -
8086_显存相关知识
文章目录显存位置显存写入规则字符属性显存位置8086的RAM一共有2^20bit,也就是0xFFFFFbit0x0~0xA0000:作为常规内存0xA0000~0xEFFFF:提供给外围设备0xF0000~0xFFFFF:提供给ROM-BIOS芯片提供给外围设备的0xA0000~0xEFFFF,其中0xB8000 ~0xBFFFF用作显存显存写入规则0xB8000 ~0xBFFFFbit一共有4KB一个字符用ASCII码表示,占用一个字节这个字节还需要一些属性,也需要占用一个字节4KB原创 2022-04-09 17:56:11 · 1045 阅读 · 0 评论 -
bochs调试常用命令
文章目录一、跳转单步跳转1、指定步数跳转2、指定跳转位置二、查看1、寄存器查看2、内存查看三、补充四、退出一、跳转单步跳转1、s遇到循环,则进入2、n遇到循环,则跳过1、指定步数跳转1、s num2、指定跳转位置第一步:b address设置断点address第二步:c持续执行直至遇到断点二、查看1、寄存器查看1、通用寄存器rreg2、段寄存器查看sreg3、标志寄存器查看info eflags2、内存查看1、线性地址方式x address仅查看一个双字的原创 2022-04-09 13:00:14 · 2511 阅读 · 0 评论
分享