Orange’s学习笔记(一)

原创 2016年05月30日 17:14:57

伪汇编指令ORG
学习操作系统两个多月以来,一直对org这个伪汇编指令似懂非懂,拿Orange’s的一个最简单的引导扇区代码来说

org 07c00h                      ;告诉编译器程序加载到7c00处
    mov ax,cs                   
    mov ds,ax
    mov es,ax
    call DispStr                ;调用字显示字符串例程
    jmp $                       ;无限循环
DispStr:
    mov ax,BootMessage
    mov bp,ax                   ;ES:BP = 串地址
    mov cx,16                   ;CX = 串长度
    mov ax,01301h               ;AH = 13h,AL = 01h
    mov bx,000ch                ;页号为0(BH = 0) 黑底红字(BL = 0Ch,高亮)
    mov dl,0
    int 10h                     ;10h号中断
    ret
BootMessage:    db  "Hello, OS world!"
times   510-($-$$)   db  0      ;填充剩下的空间,使生成的二进制代码恰好为512字节
dw  0xAA55

这段代码的org 07c00h指的是,这段程序将来要加载到偏移地址为07c00h的地方,所以在编译器编译时会将标号代表的相对地址(编译后的程序代码地址从0开始)+07c00h(org指明的地址值)作为编译后标号所在位置的实际数值,ep:看第16行标号BootMessage,不考虑org,编译后的二进制代码在文件中地址的偏移为0x1E,加上org指定的地址值,则第8行指令编译出来的BootMessage所占空间存储的数值应该是0x7C1E,用二进制文件查看器查看,如下图:这里写图片描述
其中的B8 1E 7C机器码对应的就是第8行的mov ax,BootMessage指令。
如果我们去掉org这条指令编译之后,得到的机器码,如下图:这里写图片描述
可以看出其中表示的地址偏移值为0x001E。
org伪指令其实仅仅是个开始,在学习Orange’s过程中问题很多,前前后后我看过很多遍的书,每次重看都有新的收获,但是还有很多搞不明白的,所以想写出来,既与大家分享了学习经验也想获得一些指点

Orange’s学习笔记(二)

GDT(全局描述符表) 全局描述符表实际上是为80386以上的32位cpu在保护模式下提供段式寻址机制的一个索引表,这个表的每一个表项描述了一段地址的起始地址、界限以及属性,原来实模式下的段寄存器存...

《Orange's 一个操作系统的实现》学习笔记(一) 实验环境搭建

《Orange's 一个操作系统的实现》学习笔记

《Orange'S:一个操作系统的实现》学习笔记(一)

我使用的操作系统是ubuntu 12.10。 1.首先下载nasm:http://www.nasm.us/pub/nasm/releasebuilds/?C=M;O=D 我下载的是2.10.07版...
  • yc21337
  • yc21337
  • 2013年03月16日 11:52
  • 1074

学习笔记 |《ORANGE’S:一个操作系统的实现》| (一) Ubuntu - 16.04 bochs安装与配置

目录bochs的安装 实验环境 直接获取 下载bochs 安装编辑依赖环境 配置文件 操作命令 在Bochs中使用Dos的步骤bochs的安装实验环境 Ubuntu 16.04 + bochs 2...

北大青鸟S1 1-6 学习笔记

  • 2009年03月25日 18:20
  • 5KB
  • 下载

张龙S2SH学习笔记(经典)

  • 2013年08月05日 18:03
  • 1.67MB
  • 下载

S5PV210(TQ210)学习笔记——按键驱动程序

 经过前面的配置,S5PV210开发已经可以成功进入Linux控制台了,那么,有了这个环境就可以开始学习Linux驱动的编写和测试了。学习Linux设备驱动,通常是从字符设备驱动开始。我写的第一...

cisco R&s CCIE学习笔记pdf

  • 2015年01月06日 16:22
  • 5.02MB
  • 下载

Atmel SAM4S Xplained pro学习笔记

  • 2014年12月17日 14:05
  • 2.31MB
  • 下载

Kubernetes(k8s)学习笔记(一)——系统架构

Kubernetes学习笔记前言主要是对Kubernetes一些概念性的记录,更好的理解Kubernetes的工作原理,一个大致的架构,有了一定的了解,看官方文档可以更好的理解。什么是Kubernet...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Orange’s学习笔记(一)
举报原因:
原因补充:

(最多只允许输入30个字)