超简单一段汇编程序,但有一事不明,高手指点!!!

raining_peidx 2008-11-25 11:09:40
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 ; 结束标志
问题就在“mov bp, ax ; ES:BP = 串地址”,怎么就知道用es,不用ss?
请高手明鉴~~~ 在线等~~~~~
...全文
113 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
raining_peidx 2008-11-26
  • 打赏
  • 举报
回复
各位捡便宜了,我误点了加分贴
raining_peidx 2008-11-25
  • 打赏
  • 举报
回复
http://hi.baidu.com/gwutf/blog/item/48c449637c3bc4610c33fa8b.html这个地址写了bp作基址寄存器,默认段是SS,可扩展段是CS,DS,ES
xiaopoy 2008-11-25
  • 打赏
  • 举报
回复
AH = 13: Write text string
AL = 0: without moving cursor
= 1: moving cursor
= 2: without moving cursor - c/a string
= 3: moving cursor - c/a string
BH = page (0)
BL = attrib (AL=0,1)
CX = string length
DH,DL = row,column for cursor start
ES:BP -> string buffer


- c/a string: string of c/a words char,attrib,char,attrib,...
- c/a word:
hi: attrib
lo: char

BIOS中断的设计如此。又为什么要设置成 ss:bp?
raining_peidx 2008-11-25
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 feeboby 的回复:]
bp 默认是使用bs
我怀疑注释写错了

期待lx 解释
[/Quote]

这回我没写错 copy的
killbug2004 2008-11-25
  • 打赏
  • 举报
回复
这里默认因该是ds,注释错了 另外建议楼主先打好汇编基础在去学习写os
killbug2004 2008-11-25
  • 打赏
  • 举报
回复
数据操作要指定段,程序里面定义的数据一般默认为ds数据段,一些指令默认使用扩展数据段es为其段偏移,而ss是堆栈段偏移,堆栈操作时使用
而你的程序里
mov ax, cs
mov ds, ax
mov es, ax
cs,ds,es都是指向同一段,而且这里是对内存数据操作,bp做为基址寄存器,自然不会是ss
feeboby 2008-11-25
  • 打赏
  • 举报
回复
bp 默认是使用bs
我怀疑注释写错了

期待lx 解释
BAYNPU 2008-11-25
  • 打赏
  • 举报
回复
在BP作为基址的寻址的时候,默认的段寄存器是SS,但可以超越的段其他寄存器如:CS、DS、ES。
rularys 2008-11-25
  • 打赏
  • 举报
回复

mov bp, ax ; ES:BP = 串地址

这个指令只是给bp寄存器赋值,并没有引用bp来寻址,所以也没有什么默认与非默认的段寄存器;
至于这里的注释,我想他说的是 int10h 中断的实现要求的参数是"ES:BP = 串地址 ",那么可想
在该中断例程里用的就是ES:BP来寻址字符串的,在中断例程里面才会用到寻址方式——用默认或者
非默认段寻址

21,500

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧