V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Sainias
V2EX  ›  问与答

我想问问用Xcode可以编译和运行汇编语言程序么?如果不行的话在Mac下要如何编译运行汇编程序?希望高手们多多帮忙....

  •  
  •   Sainias · 2011-03-31 10:46:02 +08:00 · 19897 次点击
    这是一个创建于 4779 天前的主题,其中的信息可能已经有所发展或是发生改变。
    正在学微机,要学汇编语言程序设计。
    上课老师都是用masm.exe,link.exe和windows自带的debug.exe运行。
    刚刚换了mac,不知道能不能在mac上编译运行汇编程序呢??
    39 条回复    1970-01-01 08:00:00 +08:00
    liwei
        2
    liwei  
       2011-03-31 10:55:20 +08:00
    汇编器用as, 连接器用ld,汇编的语法也不一样
    或者可以选择跨平台的 nasm
    Sainias
        3
    Sainias  
    OP
       2011-03-31 11:00:43 +08:00
    @liwei 谢谢。原来是不一样的,上课问老师,老师也一头雾水。

    @dreamer 谢谢谢谢。我是新手,比较笨,这么简单的小问题也来打搅高手们,见谅见谅。
    limon
        4
    limon  
       2011-03-31 11:16:33 +08:00
    刚学汇编都是在实模式下的,所以一般用的win98,像如今的windows7,macos都只能在保护模式下运行程序,所以用虚拟机是比较好的办法啦
    fanzeyi
        5
    fanzeyi  
       2011-03-31 11:19:37 +08:00
    @dreamer 哎 刚刚发现首页提问框下面多了 V2EX 提问指南 • 本站规则指南 这个两个按钮。。。
    Sainias
        6
    Sainias  
    OP
       2011-03-31 11:26:45 +08:00
    @limon 嗯,晓得了~谢谢~
    summic
        7
    summic  
       2011-03-31 12:43:23 +08:00
    @dreamer 最后一句的太打击新人了,@Sainias 同学很郁闷:http://fanfou.com/statuses/XTVbv0cBDsM

    Google背后是冷冰冰的机器,而这里每一个回复背后都是独一无二的智慧和经验。
    yelusiku
        8
    yelusiku  
       2011-03-31 12:59:30 +08:00
    @summic
    Google搜索刀的也是其他人的智慧和经验。

    先搜索一下更能节省自己的时间。
    dreamer
        9
    dreamer  
       2011-03-31 13:03:09 +08:00
    @summic 我觉得在提问之前做充分的调查是基本的要求,Google 一下就会在第一页找到的东西确实不应该提问。如果这个算打击的话,那就算打击吧。
    summic
        10
    summic  
       2011-03-31 13:17:56 +08:00
    @yelusiku

    google有太多不经思考的转贴,太过零散,也不便于交流,信息浓度低于这里
    Sainias
        11
    Sainias  
    OP
       2011-03-31 15:47:48 +08:00
    @dreamer
    首先我想说,我问过老师,也搜索过,我
    在发这个帖子之前我不知道原来mac下写的汇编是跟书本上dos下的语法,编译和链接都是不一样的。
    我是第一次用xcode,我也不知道该如何利用xcode去编译和链接我的代码,这个是我想问的。
    我写了代码进去可是编译出错,网上各种论坛的答案五花八门,所以我才想到在这里问问大家。
    我觉得我最白痴的就是我不应该用baidu来搜?
    这个问题到此为止吧。以后这些小事我不会再来打搅你们这些高手了,谢谢你的提醒。
    如果说我给你说中我是没搜索过没思考过就来问问题的话,我就不会像现在一样难受。
    zhouhua97
        12
    zhouhua97  
       2011-03-31 16:03:52 +08:00
    不要难过,呵呵,都是从菜鸟过来的。
    dreamer
        13
    dreamer  
       2011-03-31 16:10:42 +08:00
    @Sainias 首先我要说明一下,我不是什么高手,也从来没有自诩过高手,我也不懂汇编,程序写得不好。回到正题,我并没有说你不应该提问,而是你不应该提问“这样的问题”。

    很抱歉,我从你的提问中没有看到你最后的回帖中说明的那些努力。看一下你最初的提问:

    “我想问问用Xcode可以编译和运行汇编语言程序么?” —— 写一段放进去试着编译运行,不行机器会告诉你。

    “如果不行的话在Mac下要如何编译运行汇编程序?” —— 搜索可以得到,关键词 “Mac 编译运行汇编程序”。

    “不知道能不能在mac上编译运行汇编程序呢??” —— 搜索可以得到。

    这就是最初问题的答案。如果你在一开始就把最后回复我的信息加上,那么就是一个好的问题:

    “各位同学,我之前都是在 Windows 环境下写汇编语言,但是用了 Mac 之后发现 Mac 下的汇编语法、编译和链接都是和 windows 环境不同的。我尝试用 xcode 编译和链接我的代码,但是失败了,xcode 的错误提示是:Failure xxx blablabla

    我重新写了一些测试代码,代码如下:

    mov xx xx
    ...
    blablabla

    可是编译依旧出错。错误信息如下:

    xxxxxxxx failure xxxxx

    然后我又利用搜索引擎搜索了错误信息,找到了一些看似有用的信息,有一篇文章(给出文章链接)说 blablabla,但是还有一篇文章(同样给出链接)说 blablabla。

    我对 mac 和 xcode 都不熟悉,所以给搞糊涂了。不知道这里有没有人可以提出一些帮助?

    非常感谢。



    可惜你没有,然后你觉得被我打击然后满腹委屈和我争辩的时候才提到了这些真正有助于解决你问题的信息。

    无疑冒犯,就事论事。或许刻薄了点儿,那是我性格缺陷,见笑了。
    Sainias
        14
    Sainias  
    OP
       2011-03-31 16:16:33 +08:00
    @zhouhua97 谢谢你,真的谢谢你,是我自己比较笨。
    Sainias
        15
    Sainias  
    OP
       2011-03-31 16:29:00 +08:00
    @dreamer 是我自己表达不清楚,其实我是想问问有没有人在xcode上写过汇编的来教我一下的;
    而且我也不应该这么没用的,这个事情我想了一个下午,就觉得自己好没用,上课焊电路板还差点烫到手;
    我以前不爱问问题就是很怕被人笑话,我这一次是真的鼓捣了两天没弄出了所以然才上来问问看的希望能找到人带带我;
    其实真的有点打击到,刚刚跟老公哭诉完,我自己太软弱了,不好意思,下次我会注意的。
    dreamer
        16
    dreamer  
       2011-03-31 16:47:37 +08:00
    @Sainias 提问的时候别着急。如果你想找人带你,可以换种提问方法,比如“有没有 xcode 上的汇编入门手册?”。不要在社区中希望别人手把手教你,那是你自己的事情,而且自己从头开始做会学到更多东西。

    如果你在提问之前进行过足够多的思考的话,就不用担心别人笑话你,每个人都会遇到问题,没什么丢人的。但是最好提供足够多的与问题相关的信息,减少一些情绪的表达。社区是一个松散的组织,不是“圈子”和“家庭”,所以不要希望大家都像你身边的亲人那样无论你有什么问题都全身心帮助你。只有你的问题值得回答,才会得到回答。:)

    另外,如果你刚才光顾着哭的话,可能错过了那篇文章:http://www.beiww.com/doc/oss/smart-questions.html 真的非常推荐看一下。每次看都会有新的收获。

    最后希望你的手没事 :D

    。。。女生还真是脆弱啊。。。
    summic
        17
    summic  
       2011-03-31 16:55:36 +08:00
    大家都没什么恶意,都是就事论事。我觉得对于问题质量的要求是一方面,还有重要的一方面是提问者的态度,不能一概而论。一个初级问题经过讨论逐渐深入,不也是好事一件。

    lz注册没多久,对这个社区还不太了解,可能没有掌握v2ex提问题的技巧,对于一个还在上学的女生,问这方面的问题,要求不能那么苛刻。sainias最近换到mac平台,又新接触汇编,遇到的麻烦肯定特别多,如果不是搜索不能解决问题和出于对这个社区的信任和期望,她也不会跑到这里来提问。

    结果今天郁闷了一整天,甚至开始怀疑自己的智力水平了。

    希望大家关照一下新人也希望这一帖的事情给@livid持续改进问与答节点提供一点思索。
    Sainias
        18
    Sainias  
    OP
       2011-03-31 17:29:52 +08:00
    @dreamer - -其实一个人折腾很无助的。。@summic 同学带领我加入mac大军,我回学校了他又不在我身边,有问题也不知道怎么解决,他也不搞汇编什么的,是我自己懒,不想把旧电脑搬出来。。。。
    清明节假期回家我就好好再跟他纠结一下,谢谢你的推荐,我晚上上完课回来好好研究研究。
    9hills
        19
    9hills  
       2011-03-31 17:36:25 +08:00
    嘛,搜索也是靠技巧的,不是想搜就能搜出来的。
    别人问问题回答就是了-- 太打击别人MM了


    另外确实汇编的语法各种不一样、各种头大--假如lz有做嵌入式开发的话感觉会更深,毕竟已经很少有人用汇编开发PC上的程序了。
    dreamer
        20
    dreamer  
       2011-03-31 17:37:22 +08:00
    @Sainias 嗯,没想到 @summic 就是你老公。建议:回家再和他继续撒娇哭诉,逼他学汇编就行了,程序员学什么都很快的。相信他。

    @summic 老兄,真不好意思,给你添麻烦了。你就当增加你们情感交流吧,那个,吵架也是一种交流。。。我挨骂两句也无所谓。。。XD

    这里究竟有多少夫妻档啊。。。
    virushuo
        21
    virushuo  
       2011-03-31 17:41:23 +08:00
    @dreamer @Sainias 我觉得这样提问没什么问题。提问的智慧是很多年前mail list下的提问指南,现在有很多信息过滤方法,人们不会太被这种问题打扰。但对于提问人,确实能节约很多时间。很多东西有经验的人只是随手一解释,当事人可能能节约2,3天。
    Livid
        22
    Livid  
    MOD
       2011-03-31 17:42:45 +08:00 via iPhone
    用 virtual box 里安装 win98,这样你就可以在 Mac 上获得一个和教材上一致或接近的学习环境。现代的 Mac 跑这样的虚拟机是非常轻松的。
    Livid
        23
    Livid  
    MOD
       2011-03-31 17:52:06 +08:00 via iPhone
    @fanzeyi 如果你不知道一个问题的确切答案,请不要灌水。谢谢。
    dreamer
        24
    dreamer  
       2011-03-31 17:57:33 +08:00
    @virushuo 嗯,那篇文章一直修订到08年,我觉得里面大部分东西对论坛和社区还是适用的。我对“新手问题”没有意见,不过如果可以尽可能多地提供细节,可能会让有经验的人更能明白问题是什么,那样就不需要在回帖中另外做很多解释了。

    OK,还是和 @Sainias 说声不好意思,开始我是随口刻薄了一下,希望没有打击你学习和参与的热情 ^皿^
    Livid
        25
    Livid  
    MOD
       2011-03-31 18:01:26 +08:00 via iPhone
    @dreamer Thank you :)
    Livid
        26
    Livid  
    MOD
       2011-03-31 18:03:21 +08:00
    @summic Thank you and I'm writing a new tip now. :)
    zhouhua97
        27
    zhouhua97  
       2011-03-31 18:39:02 +08:00
    还是一团和气的好,其实谁都没错,而且现在真心想学东西的人还真是少啊,v2ex确实是和其他论坛不一样,提问的时候先想一下怎么问比较好,不要当伸手党为好。当了几年老师,面对无数的各种各样问题,仿佛习惯了,但是真心想学习的同学还是应该鼓励的。
    Sainias
        28
    Sainias  
    OP
       2011-03-31 20:46:40 +08:00
    @zhouhua97 我平时不太问问题,表达能力也不太好,所以一出口就闯祸了TAT,其实对于这个专业,真是又爱又恨,学起来难,但是动起手来觉得真的很有意思,要自己多多鼓捣鼓捣,有时候纠结也不知道该问谁。。。
    @Livid 谢谢,我清明节回家就好好弄,学这种东西还是自己多多动手的好!
    @dreamer 怪我这个人表达能力不好,小时候语文就很烂,没法表达清楚。。。虽然在发帖之前用了15分钟组织语言,谁知道还是一塌糊涂。。。加上现在对mac还是很陌生,才用了几天,要是windows我估计怎么鼓捣也没问题。。。
    @9hills 嵌入式开发就是弄单片机什么的么?我下半学期就要开始学这个了,大三下学期的课都好可怕~~

    anyway谢谢大家的帮忙和关注~玩玩汇编还是挺有意思的!!!
    zhouhua97
        29
    zhouhua97  
       2011-03-31 21:26:21 +08:00
    @Sainias 也不用太在意,我刚才看了下那篇提问的智慧,确实不错,建议看看。你什么专业的啊,还要学习单片机,现在的嵌入式系统可不单单指单片机了,包含很多,实际上搞ARM的应该更多,当然还有DSP、FPGA也是可以搞嵌入式的。
    9hills
        30
    9hills  
       2011-03-31 21:27:38 +08:00
    @Sainias 嗯,单片机也算嵌入式的一种吧,里面汇编应用的比较多。

    话说本科时我们宿舍某哥们写了一个上千条汇编的程序。。。我是基本用c了,用汇编写会死人的,一般是做移植的时候才用一点。。
    fanzeyi
        31
    fanzeyi  
       2011-03-31 21:27:46 +08:00
    @Livid 我是在回答 @dreamer 最后的一点。
    Sainias
        32
    Sainias  
    OP
       2011-03-31 21:47:02 +08:00
    @9hills 汇编因为刚刚开始学,热情比较高涨,我刚刚翻了单片机的课本,里面是汇编的。。。我去图书馆找书也看过用c写的,等我开始上这门课了估计会有更多了解~
    @zhouhua97 我刚刚回来就开始看了,确实我一直没注意过这方面(因为一直都是潜水。。),以后一定会多多注意的!我学通信工程的,作为一个女生,觉得真是各种头大,现在每周的乐趣就是集成电路实验课焊焊电路板了。。。专业课特多,好苦恼。。。一个月之后锁相和单片机的课也要开始上了,各种压力阿。。。TAT
    zhouhua97
        33
    zhouhua97  
       2011-03-31 22:26:50 +08:00
    @Sainias 嗯,学通信的,我那时候学的电子工程,差不多。女生有什么关系,现在一个班上学习好的基本都是女生,看来你还蛮喜欢动手的。不知道你们的单片机课讲的是51还是什么单片机,单片机种类太多了现在,而且不同的单片机汇编都不太一样,不过原理基本都差不多,学单片机有块自己的板子的话学起来要快的多。上学的时候都差不多,课程太多,想在一个方向上花时间又怕拖了其他的后腿。
    jjgod
        34
    jjgod  
       2011-03-31 22:43:55 +08:00
    首先要了解的是汇编语言,就算是 x86 汇编也有很多格式,而且和支持的系统有关。

    比如你们课本里学的是 masm 格式加 x86 实模式的汇编,这在 Windows 下是通过一个实模式模拟器运行的。

    Mac OS X 自带的汇编器是 nasm,是 Linux/Unix 下常用的一种,语法和 nasm 稍有不同,一般用来做 x86/x86_64 保护模式的汇编,另外 gcc 可以做 inline assembly 的汇编,使用的语法是 gas 格式。

    这些基本知识比较老旧的课本都不太教,所以是比较头疼的地方。
    jjgod
        35
    jjgod  
       2011-03-31 22:44:29 +08:00
    “语法和 nasm 稍有不同”应该是“语法和 masm 稍有不同”。
    summic
        36
    summic  
       2011-04-01 00:03:25 +08:00
    @dreamer 并没有怪你的意思 :),06年就开始泡在v2ex,很享受这里的气氛。

    @livid 或许可以从程序层面的推荐算法上做些尝试

    谢谢@virushuo 没想到这帖居然引来火炬还有@jjgod两位大神的参与。
    9hills
        37
    9hills  
       2011-04-01 10:05:51 +08:00
    @Sainias @zhouhua97 应该还是51吧,51是基础中的基础,51的汇编也是基础中的基础
    都是需要仔细把握的,不同的单片机虽然各不一样,不过看datasheet就可以了,一通百通

    初学单片机还是要有个自己的板子多做,一个51的板很便宜,而且自己画一个都行。找个小的感兴趣的项目做一做,比如参加一下电子设计竞赛之类的,不仅能提高自己的实力,而且以后找工作/保研/考研面试的时候是一个非常大的优势。
    Sainias
        38
    Sainias  
    OP
       2011-04-01 10:30:07 +08:00
    @zhouhua97 确实是,课程太多,每一门都要花时间,要全部顾及好还真是不容易的事情,再加上还有课程外的需要看。。。
    @9hills 其实我现在是想把课程上的知识学扎实,之后出来找工作可能不会往这方面发展,但是学多点知识总归没错的!
    @jjgod 谢谢阿,你这么一说我就比较清楚了,原来是有差别的,那看来我还是要装个xp吧,我现在只希望把课本上的知识先搞懂呢~等我弄懂了masm估计nasm学起来也不难了!
    virushuo
        39
    virushuo  
       2011-04-01 12:42:37 +08:00
    啊,如果 @Sainias 是说的汇编是mcs51,这个我倒是玩过一点,学这东西最好的玩法是去电子城买一个小实验板,大约150块钱能搞定。如果用pc,可以直接拿串口线烧录,如果mac就麻烦了,需要弄一个写入器,大约80块钱。51还是很好玩的,纯在计算机上是看不出来效果的,尤其往各管脚发送信息改变电平AD转换什么的,基本都没法模拟,只能用实验板。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2530 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 12:35 · PVG 20:35 · LAX 05:35 · JFK 08:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.