Chinaunix首页 | 论坛 | 博客
  • 博客访问: 715580
  • 博文数量: 182
  • 博客积分: 2088
  • 博客等级: 大尉
  • 技术积分: 1698
  • 用 户 组: 普通用户
  • 注册时间: 2009-12-16 15:09
个人简介

.

文章分类

全部博文(182)

文章存档

2016年(1)

2015年(18)

2014年(14)

2013年(20)

2012年(129)

分类: 嵌入式

2012-06-13 21:49:33

jmpi(Jump Intersegment)段间跳转
16位实模式下
如jmpi 0,90000 !则表示程序跳到90000:0去继续执行,使得CS=90000,IP=0
如jmpi go,INITSEG !INITSEG指出跳转到的段地址,假设INITSEG=0x90000,标号go是段内偏移地址
go: mov ax,cs !将ds、es、ss都置成移动后代码所在的段处( 0x90000 )
mov ds,ax
mov es,ax
mov ss,ax
mos sp,#0x9FF00 !将堆栈指针sp指向0x9FF00(即 0x9FF00:0x90000 )处

32位保护模式下
mov ax,#0x0001 !置保护模式比特位(PE)
lmsw ax !加载机器状态字Load Machine Status Word,也称控制寄存器CR0
jmpi 0,8 !跳转至cs段偏移0处,此处‘8’是段选择符,用来指定gdt中的段描述符项,‘0’是
!描述符项指定的代码中的偏移值,8(0b0000 0000 0000 1000)表示请求特权级0,使用
!全局描述符表GDT中第2个段描述符项,在此段描述符中得到base address基地址
阅读(3122) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~