笔记

标签和变量是一样的, 变量名代表了变量的地址,而[标签]表示值

$表示当前行呗汇编后的地址

$$表示 一个节被汇编后的起始地址

 

ret 用栈中数据改IP内容,近转移
retf用栈中数据同时改CS,IP,远转移

用汇编解释
ret   ->  pop ip

retf  ->  pop ip
             pop cs

 

 

编写汇编程序的思维方式:

汇编程序是由段构成,所以编写汇编代码要摒弃高级语言(C语言)的程序函数构成。

C语言将程序分解为若干函数

汇编语言将程序分解为若干段,段与段之间通过跳转实现(函数的实现其实就是CALL,JMP等跳转功能)

 

高效交换元素
PUSH BUF1
PUSH BUF2
POP BUF1
POP BUF2
能够实现两个字型存储单元BUF1、BUF2的数据交换。


段具体的寻址范围跟你使用的存储器寻址方式有关。 
1】在实地址模式下,由于偏移地址为16位的数,故每一段的最大寻址空间是64K,且允许段重叠。
2】保护模式下,偏移地址达到了32位,故每段的最大寻址范围可达4G。

最后,段的起始地址是由操作系统完成分配的。还有,段类型还包括有ES(附加段),常用于串的相关操作。

 

物理内存是实实在在的内存,它与虚拟内存相对,物理内存被分页,其实就像一本书里面的好多页纸,每张纸上记录了不同的信息,物理内存被分页,对于32位的CPU来说,每个物理页大小是4K。对于每一个物理页,系统使用一个24字节长的结构来保存它的相关信息。

 

posted @ 2014-01-11 16:04  Pavkoo  阅读(219)  评论(0编辑  收藏  举报