|
![]() | 作者: qwhacker [qwhacker]
![]() |
登录 |
俺根据286的汇编教程编写(实际上是抄)了一个hello,world程序;全文如下: ;在屏幕上输出hello,world程序。 data segment msg db'Hello,Mr.Frog.$' data ends code segment assume cs:code,ds:data start:mov ax,data mov ds,ax lea dx,msg mov ah,9h ;调用21号中断9h号功能 int 21h mov ax,4c00h ;调用21号中断4c00h号功能 int 21h code ends end start 编译时没有warning error,也没有severe error;但是link的时候出现: LINK:warning L4021:no stack segment 286说:这个没关系,没有的话系统会自动给一个。 但是可以产生exe文件,执行exe文件后可以输出Hello,Mr.Frog. 为了消除那个:no stack segment,我又在code segment 之前添加了如下内容: stack segment stack ends 同时将assum那一行改为:assume cs:code,ss:stack,ds:data 结果同没有添加时完全一样。 更改后全文如下: ;在屏幕上输出hello,world程序。 data segment msg db'Hello,Mr.Frog.$' data ends stack segment stack ends code segment assume cs:code,ss:stack,ds:data start:mov ax,data mov ds,ax lea dx,msg mov ah,9h int 21h mov ax,4c00h int 21h code ends end start 请问link时为什么会出现 no stack segment ?我已经定义了stack了呀。 ![]() ![]() [此贴被 青蛙(qwhacker) 在 05月24日10时13分 编辑过] [此贴被 青蛙(qwhacker) 在 05月24日10时13分 编辑过] [此贴被 青蛙(qwhacker) 在 05月24日10时15分 编辑过] [此贴被 青蛙(qwhacker) 在 05月24日10时17分 编辑过] [此贴被 青蛙(qwhacker) 在 05月24日10时22分 编辑过] |
地主 发表时间: 05-05-24 10:12 |
![]() | 回复: 286 [unique] ![]() |
登录 |
stack segment db 500 dup(?) <-----光定义,还得有实实在在的空间 stack ends mov ax,stack <-----也要赋值呀。 mov ss,ax |
B1层 发表时间: 05-05-24 12:08 |
![]() | 回复: qwhacker [qwhacker] ![]() |
登录 |
哦,谢谢286。 再问一个问题: 用lea dx,msg将msg的地址赋值给dx后就直接调用中断输出了,而没有特别指明输出dx寄存器中地址所指的内容。是不是说21H号中断9h功能默认输出dx所指的内容? 如果改为lea ax,msg后输出的是乱码。能不能指定输出ax中的内容或所指的内存单元? |
B2层 发表时间: 05-05-24 17:22 |
![]() | 回复: 286 [unique] ![]() |
登录 |
是说21H号中断9h功能默认输出dx所指的内容 |
B3层 发表时间: 05-05-24 17:35 |
![]() | 回复: qwhacker [qwhacker] ![]() |
登录 |
谢谢286,多谢你的汇编连载,是你使我对汇编产生了浓厚的兴趣,让我能够继续学下去! 你的连载比课本有趣多了! ![]() |
B4层 发表时间: 05-05-24 22:05 |
![]() | 回复: 286 [unique] ![]() |
登录 |
![]() |
B5层 发表时间: 05-05-25 09:10 |
![]() | 回复: sunhw963 [sunhw963] ![]() |
登录 |
如果写成 stack segment stack 'stack' db 500 dup(?) stack ends 是不是就不要赋值了呢? ![]() |
B6层 发表时间: 05-07-19 15:33 |
![]() | 回复: future0906 [future0906] ![]() |
登录 |
286斑竹,应该不是没有定义空间的问题吧? stack segment stack ends 他的这一句明显有个错误,这并不是一个堆栈段,只是一个名叫stack的段而已啊 应该是这样吧 stack segment stack stack ends 这样才可以吧? 以上是个人看法 |
B7层 发表时间: 05-07-21 18:30 |
|
20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon
粤ICP备05087286号