|
主题 : : hello world问题 [已解决] |
回复[ 6次 ]
点击[ 387次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2009-06-20 05:48 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:3
注册日期:2009-06-20 05:31 |
我这里有两个hello world的程序
在debug下都实现了效果
但是生成com文件都显示不出来
jpm 111
db 'Hello,world',0d,0a,0
mov bx,0
mov dl,[bx+102]
cmp dl,0
jz 124
mov ah,2
int 21
inc x
jmp 114
int 20
在debug下可以显示
是不是生成com文件出了问题
我是下面生成com文件
ntest.com
rbx
rcx
26
w | | |
|
|
|
|
[第1楼]
[ 回复时间:2009-06-20 16:29 ]
[引用]
[回复]
[ top ] | |
荣誉值:61
信誉值:4
注册日期:2008-10-14 16:29 |
是怎么在debug下弄的?你生成的com文件运行的时候能保证你的程序入口和地址跳转的正确性么? | | |
|
|
|
|
[第2楼]
[ 回复时间:2009-06-20 16:36 ]
[引用]
[回复]
[ top ] | |
荣誉值:61
信誉值:4
注册日期:2008-10-14 16:29 |
com文件中应该有一个指定在运行的时候将程序加载到0:100H这段内存中的指令吧,好像是org 100吧。 | | |
|
|
|
|
[第3楼]
[ 回复时间:2009-06-20 17:07 ]
[引用]
[回复]
[ top ] | |
荣誉值:16
信誉值:0
注册日期:2008-10-12 13:46 |
加载到0:100H
---------
这里写错了吧,应该段地址是100H。 | | |
|
|
|
|
[第4楼]
[ 回复时间:2009-06-22 09:48 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:3
注册日期:2009-06-20 05:31 |
这里有没有图片功能可以引用的
在debug下不能抓图 | | |
|
|
|
|
[第5楼]
[ 回复时间:2009-06-22 10:30 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:3
注册日期:2009-06-20 05:31 |
a100 ;程序的起始地址
137E:100 jmp 111 跳开字符定义的区域
137E:102 db'Hello,world',0d,0a,0 定义字符0代表最后一个字符
137E:111 mov bx,0 初始化bx
137E:114 mov dl,[bx+102] 将字符的首地址赋给dl
137E:118 cmp dl,0 判断字符是不是0
137E:11B jz 124 如果是就跳到124 结束程序
137E:11D mov ah,2 给ah赋值02H(显示一个字符)
137E:11F int 21 中断
137E:121 inc bx bx加1
137E:122 jmp 114 循环到114重新输出
137E:124 int 20 结束程序
137E:126
-n1.com 命名1.com
-rbx bx是不是0
0000
:0
-rcx 1.com 程序长度为26
0000
:026 程序长度为26
w 写入程序
g100
g 运行程序
这是debug的详细步骤,在debug里是可以显示hello,world
但是1.com什么都没有输出
C:\DOCUME~1\ADMINI~1>1
C:\DOCUME~1\ADMINI~1>1.com
C:\DOCUME~1\ADMINI~1> | | |
|
|
|
|
[第6楼]
[ 回复时间:2009-07-12 17:33 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:3
注册日期:2009-06-20 05:31 |
此贴由 贴主 于 [ 2009-07-12 17:33 ] 结贴。 结贴原因:问题已解决 | | |