Chinaunix首页 | 论坛 | 博客
  • 博客访问: 305728
  • 博文数量: 214
  • 博客积分: 4258
  • 博客等级: 上校
  • 技术积分: 2021
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-02 09:16
个人简介

http://blog.csdn.net/ly21st http://ly21st.blog.chinaunix.net

文章分类

全部博文(214)

文章存档

2018年(16)

2015年(1)

2014年(2)

2012年(22)

2011年(173)

分类: LINUX

2011-12-30 13:14:15

汇编程序版本1
;我们的启动程序实现的功能是在屏幕中央
;打印一行字符串即可
org 07c00h      ;指令明确告诉编译器我程序的段地址是7c00h
                ;而不是原来的 00000
                ; int汇编指令 int  10h
 mov ax,cs
 mov es,ax
 
 mov bp,msgstr   ;es:bp指向的内容就是要显示的字符串地址
 mov cx,12  ;字符串长度
 mov dh,12  ;显示行号
 mov dl,36  ;显示的列号
 mov bh,0   ;显示的页数
 mov al,1   ;显示的串结构
 mov bl,0ch ;显示的字符属性
 mov ah,13h ;明确调用13h子程序
 jmp int0
 msgstr: db "hello my os!"
int0:
 int 10h
 
 jmp $  ; 不断跳转到当前位置,是个死循环
 times 510-($-$$) db 0 ;重复N次,每次填充为0
 
 dw 55aah
 
 
 
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
汇编程序版本2
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 = 13,  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                ; 结束标志
 
===============================================================================
================================================================================
C语言复制文件程序(复制汇编代码到引导盘)
阅读(306) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~