设置了段地址就不对,为什么?

expert2000 2005-06-29 10:58:05
[BITS 16]
[ORG 0x0100]
JMP start
msg DB 'Hello!',13,10,0
start:
mov ax , 0x0000
mov ds , ax
MOV si, msg
call ShowMessage
ret


ShowMessage:
mov ah , 0x0e
mov bh , 0x00
mov bl , 0x07
call nextchar
ret

nextchar:
lodsb

or al , al
jz return
int 0x10
call nextchar
return:
ret

有mov ax , 0x0000
mov ds , ax
这两句就不对,没有就对,为什么?
...全文
97 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
大熊猫侯佩 2005-06-29
  • 打赏
  • 举报
回复
这两句将 数据段基址改为 0,但是你code的数据段基址真的是0么?check it?
若是错误的段基址结果就可能不对。
大熊猫侯佩 2005-06-29
  • 打赏
  • 举报
回复
org 0x0100 形成 100h 的偏移,可见该代码的意图是想生成一个 .com 而不是一个
.exe 文件。在 .com 文件中只有一个段,那即是说 cs==ds==es==ss 。
详细请看:
http://wncj.vicp.net/course/hep/huibianyuyan/10-6.htm
expert2000 2005-06-29
  • 打赏
  • 举报
回复
那为什么不写就对的?是不是程序自己会找到正确的段基址?
还有,ORG 0x0100是什么意思?

21,458

社区成员

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

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