| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1803 人关注过本帖
标题:我写的第一个汇编代码。
取消只看楼主 加入收藏
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
结帖率:96%
收藏
已结贴  问题点数:20 回复次数:5 
我写的第一个汇编代码。
总感觉能在自己的电脑里找到,果然找到了。说最后更改时间是 2010 年 1 月 10 日。
和我印象里学汇编的时间出入不大。我应该是 09 年暑假开始学的,看的书讲的是 masm。在 windows 下实践半年,学的差不多了才开始转战 linux,好像是比较合逻辑的。

其实就是 hello word 而已。还有详细的注释,应该是怕日后自己也看不懂。AT&T 语法的,但其实和 intel 语法区别也不是很大。
比如 mov a, b 的意思是 move a to b,和正常说话的语序是一样的。寄存器的名字前要加 %, 变量或立即数前要加 $。
不过看了看,感觉我现在能写的最复杂的汇编也许也就这个程度。

程序代码:
.data   # section declaration

msg:
    .ascii "Hello, world!\n"
    len = . - msg               # length of string

.text   # section declaration

# we must export the entry point to the ELF linker or loader. They
# conventionally recognize _start as their entry point. Use ld -e foo to
# override the default.

    .global _start

_start:

# same as write(1, msg, len)

    movl    $len, %edx
    movl    $msg, %ecx
    movl    $1, %ebx
    movl    $4, %eax    # the system call number of write() is 4.
    int     $0x80       # call kernel

# exit(0)

    movl    $0, %ebx
    movl    $1, %eax    # exit() is 1
    int     $0x80

搜索更多相关主题的帖子: hello 寄存器 
2012-09-01 14:09
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
以下是引用有容就大在2012-9-1 18:02:38的发言:

貌似比intel的复杂难辨些

语法上有区别,但不是很大。毕竟汇编指令都是一样的。难辨的原因可能是论坛不识别这种语法,所以颜色比较单一吧。

顺便结帖。
2012-09-01 23:36
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
以下是引用TonyDeng在2012-9-1 23:41:31的发言:

下次发百分帖才成

z版已经很肥,不能再喂了。
2012-09-02 00:03
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
以下是引用admin_xyz在2012-9-2 08:36:49的发言:

在linux上学汇编能干嘛,了解linux底层工作?做病毒?

我当时学汇编就是为了看 Linux 的源码。
不熟悉 cpu 的架构是很难看懂内核源码的,当然学汇编是熟悉 cpu 构架的好方法了。

总的来说汇编现在应用的都不是很广。难道你在 windows 下学汇编是会了写病毒吗?


[ 本帖最后由 pangding 于 2012-9-2 16:40 编辑 ]
2012-09-02 16:33
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
以下是引用zklhp在2012-9-2 08:38:02的发言:


我身材很好 185cm 63kg

矮穷矬膜拜高富帅
2012-09-02 16:39
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
发现了一个对比这两种汇编语法的文章。
http://www.

结论是:
Even though the differences between these two assemblers are substantial, it's not that difficult to convert from one to another.
You might find that the AT&T syntax seems at first difficult to understand, but once mastered, it's as simple as the Intel syntax.
译:
虽然这两种汇编语言大相径庭,但从一种转化成另一种却并不困难。
你也许起初会觉得 AT&T 语法很难理解,但掌握之后,它也像 intel 语法一样简单。

2012-09-03 00:35
快速回复:我写的第一个汇编代码。
数据加载中...
 
   



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

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