一个简单的汇编入门程序

操作系统一个简单的汇编入门程序如下,代码中注释得已很详细

;程序被加载到的内存地址,即寄存器IP的值
 org 07c00h
;以下3句是设置ds、es段寄存器的值
 mov ax,cs
 mov ds,ax
 mov es,ax
;将字符串的首地址赋给ax
 mov ax,BootMsg
;将字符串第19个字符改写
 mov byte [BootMsg+18],0x07
;bp是传给中断的参数es:bp指向的是字符串
 mov bp,ax
;字符串中字符的个数
 mov cx,21
;表示的是写字符串,并移动光标到结尾处
 mov ax,01301h
;字符显示属性红色,0页
 mov bx,000ch
 mov dl,0
 int 10h
 jmp $
BootMsg: db "Loading system ...."
  db 13,10
;$表示程序的当前地址,$$表示程序所在节的地址,在这里只有一个节
times 510-($-$$) db 0
;软盘第一扇区结束标志
 dw 0xaa55

程序在Virtual Box下运行的截图如下:

一个简单的汇编入门程序


在Virtual PC下运行的截图如下:

一个简单的汇编入门程序


特别注解:

1:org 07c00h,用Bochs调试运行后会发现,ip=0x7c00h,cs=0x0000,所以从这里可以得出的是四个段寄存器均是0

一个简单的汇编入门程序

2:mov byte [BootMsg+18],0x07,这是为什么会发出滴答声的原因,查看ASCII码可以发现的是这里的0x07对应的实际上就是一个声响的ASCII码。

3:中断int 10h的0x13功能,其中ah用来表示功能号,其参数如下:

功能号:13H

功能:在Teletype模式下显示字符串
入口参数:AH=13H
BH=页码
BL=属性(若AL=00H或01H)
CX=显示字符串长度
(DH、DL)=坐标(行、列)
ES:BP=显示字符串的地址 AL= 显示输出方式
0—字符串中只含显示字符,其显示属性在BL中。显示后,光标位置不变
1—字符串中只含显示字符,其显示属性在BL中。显示后,光标位置改变
2—字符串中含显示字符和显示属性。显示后,光标位置不变
3—字符串中含显示字符和显示属性。显示后,光标位置改变

工具软件(nasm,bochs,程序源码)

免费下载地址在

用户名与密码都是

具体下载目录在 /2013年资料/6月/9日/一个简单的汇编入门程序

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/c3c3b6bd1f3f5169a70cca7464c70505.html