| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 450 人关注过本帖
标题:很小白的问题,希望援手!
只看楼主 加入收藏
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
结帖率:99.34%
收藏
已结贴  问题点数:20 回复次数:7 
很小白的问题,希望援手!
c语言HELLO WORLD!程序大家都知道,即:
#include <stdio.h>
int main(void)
{
  printf("HELLO WORLD!");
  return 0;
}

初学写了个汇编的,下面是代码:
图片附件: 游客没有浏览图片的权限,请 登录注册
后面是运行结果:
图片附件: 游客没有浏览图片的权限,请 登录注册

问题是:1.为什么HELLO WORLD!前会有一串乱码,并且有个no stack segment 的警告?
        2.编译--链接要回车好多次,显得很繁杂,有没有一步到位的方法?
        3.MOV DX,AX能改成MOV DS,AX吗?
貌似C语言隐藏了很多东西,比如中断调用。
我知道这些个问题很小白,但是我反复运行程序,却越搞越乱。看到C版车水马龙的,希望哪位热心给个解答,诚谢!
搜索更多相关主题的帖子: c语言 void 运行程序 include return 
2012-01-31 12:14
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:10 
呼叫zklhp,請向就大開炮!!!

授人以渔,不授人以鱼。
2012-01-31 14:17
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
以下是引用TonyDeng在2012-1-31 14:17:08的发言:

呼叫zklhp,請向就大開炮!!!
哇咔咔,等你来。等你来。等你来。等你来。等你来。。。。。

梅尚程荀
马谭杨奚







                                                       
2012-01-31 14:22
hellovfp
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:禁止访问
威 望:30
帖 子:2976
专家分:7697
注 册:2009-7-21
收藏
得分:10 
很久没有汇编了,还是老dos汇编,呼叫zklhp版版吧。
no stack segment 的警告,意思是分段stack没有定义 ASSUME CS:CODE, DS:DATA, SS:DATA,一般好象是link成com文件才不定义stack段。
编译链结,你可以学习一下nmake,写编译脚本。
21中断的09号子功能用于显示字符串,需要ds:dx指向这个0结尾的字符串做为参数,4ch功能用于结束程序。
研究中断,不如研究一下汇编程序如何和C程序混合编程,更有意义。

[ 本帖最后由 hellovfp 于 2012-1-31 14:34 编辑 ]

我们都在路上。。。。。
2012-01-31 14:32
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 4楼 hellovfp
我用masmplus写的。

梅尚程荀
马谭杨奚







                                                       
2012-01-31 15:09
hellovfp
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:禁止访问
威 望:30
帖 子:2976
专家分:7697
注 册:2009-7-21
收藏
得分:0 
回复 5楼 有容就大
我看的是win32 汇编,用的是masm32 v10。。呵呵。
偶写的hello world
.386
.model flat, stdcall
    option casemap : none

include windows.inc
include user32.inc
include kernel32.inc

includelib user32.lib
includelib kernel32.lib

.data
strHello db 'Hello world', 0

.code

start:
    invoke MessageBox, 0, addr strHello, addr strHello, MB_OK
    invoke ExitProcess, 0

    end start

用masm32编译。
ml /c /Cp /coff /I"c:\masm32\include" hello.asm
link /subsystem:windows /libpath"c:\masm32\lib" hello.obj

[ 本帖最后由 hellovfp 于 2012-1-31 15:13 编辑 ]

我们都在路上。。。。。
2012-01-31 15:11
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 6楼 hellovfp
N多头文件?

梅尚程荀
马谭杨奚







                                                       
2012-01-31 15:19
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
哦也,不是MOV DX,AX能改成MOV DS,AX吗?而是必须MOV DX,AX改成MOV DS,AX才可以。


梅尚程荀
马谭杨奚







                                                       
2012-01-31 16:59
快速回复:很小白的问题,希望援手!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020813 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved