拷贝自己

因为有可能在0x7c00处放东西所以将自己拷贝到0x90000处去执行

 

SETUPLEN = 4
BOOTSEG = 0x7c0
INITSEG = 0x9000
SETUPSEG = 0x9020
SYSSEG = 0x1000
ENDSEG = SYSSEG + SYSSIZE
.text  
.globl start/*程序从start处开始运行*/  
.code16  
start:  

	mov $BOOTSEG,%ax  //将ds段寄存器设置为0x07c0
	mov %ax,%ds
	mov $INITSEG,%ax	//将es段寄存器设置为0x9000
	mov %ax,%es
	mov $256,%cx
	sub %si,%si
	sub %di,%di
	rep
	movsw
	jmpl $INITSEG,$code

  
msg:  
 .string "Hello world!"  
code:  
    mov     %cs,%ax     
    mov     %ax,%ds   
    mov     %ax,%es      
    mov     %ax,%ss    
    mov  $0x400,%sp    
    call DispStr/*调用显示字符串函数*/  
              
loop0:/*无限循环*/  
    jmp loop0  
      
DispStr:  
    mov $msg   ,%ax  
    mov %ax    ,%bp/*es:bp = 串地址*/  
    mov $12    ,%cx/*cs = 串长度*/  
    mov $0x1301,%ax/*ah=13是功能号表示显示字符串 ,al=01是显示输出方式*/  
    mov $0x000c,%bx/*bh=0是0页,bl=0ch高亮 黑底红字*/  
    mov $0     ,%dl/*0行0列*/  
      
    int $0x10  
    ret  
      
      
.org 0x1fe, 0x90   
.word 0xaa55 
	


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值