学习笔记——1.2自己写操作系统 汇编相关知识扩展

汇编的调试

不建议在实体机上进行。可以使用DOS模拟软件,DOSBOX。

安装后,下载debug软件备用。进入DOSBOX,挂载debug所在的目录为一个虚拟目录(如挂载f盘下的debug目录为虚拟盘D,命令 mount d f:\debug),就可以使用debug软件了(编译的程序也可以放到相应目录,就不用单独挂载了)。

通过debug就可以看到相应的寄存器状态。

编译的汇编程序执行后,也可以直观看到。

通用寄存器

名称:EAX中,低16位部分,AX;AX的低8位AL,AX的高8位AH

EAX 相对其他寄存器,在进行运算方面比较常用 在保护模式中,也可以作为内存偏移指针(此时,DS作为段寄存器或选择器)
EBX 通常作为内存偏移指针使用(相对于EAX、ECX、EDX),DS是默认的段寄存器或选择器 在保护模式中,一样的。
ECX 通常用于特定指令的计数。 在保护模式中,也可以作为内存偏移指针(此时,DS作为寄存器或段选择器)
EDX 某些运算中作为EAX的溢出寄存器(例如乘、除)。 在保护模式中,也可以作为内存偏移指针(此时,DS作为寄存器或段选择器)

 

 

 

 

 

作内存指针的特殊寄存器

名称:ESI中,低16位部分SI。

ESI 源地址指针 DS是默认段寄存器或选择器
EDI 目的地址指针 DS是默认段寄存器或选择器
EBP 指针的寄存器,通常,它被高级语言编译器用以建造‘堆栈帧’来保存函数或过程的局部变量 SS是它的默认段寄存器或选择器

 

 

 

 

段寄存器和选择器

保护模式下,为选择器

CS 代码段/代码选择器 IP寄存器一同指向当前正在执行的那个地址
DS 数据段/数据选择器 低16 bit连同ESI一同指向的指令将要处理的内存
ES 附加段/附加选择器 低16 bit连同EDI一同指向的指令将要处理的内存。
FS F段/F选择器  
GS G段/G选择器  
SS 堆栈段/堆栈选择器 的低16bit连同ESP一同指向下一次堆栈操作(push和pop)所要使用的堆栈地址

 

 

 

 

 

 

 

特殊寄存器

指向到特定段或内存的偏移量)

EIP,同CS一同指向即将执行的那条指令的地址

ESP,指向堆栈中即将被操作的那个地址,SS是默认的段或选择器

IP,指令指针

SP,堆栈指针

 

自我理解:

1.CS,IP存储的是内存中存放指令的内存起始地址和偏移量,cpu会按时钟周期自动读取相应内存地址的数据所代表的指令来执行。每次执行后,IP存储的偏移量会依据指令占据内存大小自动增加相应大小,以保证下次读取的偏移量正确。

2.DS存储的是内存中存储数据的内存起始地址。当指令中使用内存操作符时,如[1],会以DS为基址,1为偏移量,读取相应内存地址的数据。

3.SS,SP存储的是内存中作为栈的内存起始地址和偏移量。

posted on 2014-12-19 15:18  阿呜的边城  阅读(174)  评论(0)    收藏  举报

导航