文档章节

深入理解程序设计使用linux汇编语言--第3章练习题

guonaihong
 guonaihong
发布于 2015/07/05 22:29
字数 555
阅读 219
收藏 14

1.程序中的某一行以字符"#"开始意味着什么?

以字符"#"开头在汇编语言中是注释,汇编程序不会对注释进行任何处理。

2.汇编语言文件和对象代码之间有何区别?

汇编语言文件里的汇编语言是方便人类阅读的机器指令形式。机器不可读,为了将其转换为机器可读需要汇编并链接 程序。对象文件是机器语言写成的代码,机器可读的。

3.链接器有什么作用?

链接器程序把多个目标文件合而为一,并且向其中添加信息,以使内核知道如何加载和运行改目标文件。

4.如何检测你最近运行的程序的结果状态吗?

在shell环境下运行echo $?

5.指令movl $1, %eax 和movl 1, %eax有何区别?

movl $1, %eax是把1加载到寄存器%eax中

movl 1, %eax是把地址1的值加载到寄存器%eax中

6.哪一个寄存器保存系统调用号?

32的寄存器是%eax 64的寄存器是%rax

7.使用索引的目的是什么?

可以使用索引寻址

8.什么索引通常从0开始?

9.条件跳转的作用是什么?

10.编写程序应计划好哪些事?


更改第一个程序使之返回值3

.section .data
.section .text

.global _start

_start:
    movl $1, %eax
    movl $3, %ebx
    int $0x80

更改最大值程序使之返回最小值。

.section .data
data_item:
    .long 2, 5, 8, 10, 7, 4, 3, 0

.section .text

.global _start

_start:

    xorl %edi, %edi
    movl data_item(, %edi, 4), %eax
    movl %eax, %ebx

loop_start:
    cmp $0, %eax
    je loop_exit
    incl %edi

    movl data_item(, %edi, 4), %eax
    cmp %eax, %ebx
    jle loop_start

    cmp $0, %eax
    je loop_exit

    movl %eax, %ebx

    jmp loop_start

loop_exit:
    movl $1, %eax
    int $0x80

更改最大值程序,使之以数字255取代0作为循环终止条件。

.section .data
.equ MY_EOF, 255
data_item:
    .long 2, 5, 8, 10, 7, 4, 3, 255

.section .text

.global _start

_start:

    xorl %edi, %edi
    movl data_item(, %edi, 4), %eax
    movl %eax, %ebx

loop_start:
    cmp $MY_EOF, %eax
    je loop_exit
    incl %edi

    movl data_item(, %edi, 4), %eax
    cmp %eax, %ebx
    jle loop_start

    cmp $MY_EOF, %eax
    je loop_exit

    movl %eax, %ebx

    jmp loop_start

loop_exit:
    movl $1, %eax
    int $0x80


© 著作权归作者所有

guonaihong

guonaihong

粉丝 6
博文 83
码字总数 27591
作品 1
徐汇
程序员
私信 提问
阅读《深入理解程序设计使用linux汇编语言》

以前有过,对熟悉汇编后的幻想。 如果会汇编,能打印coredmp文件里函数参数(没有用gcc -g 编译)的就好了。。 好吧,现在满足自己的心愿。 开始时间:6,30 结束时间:8,30 状态:closed 第3...

guonaihong
2015/06/30
514
2
业余爱好者的C程序设计学习之路

我学习和工作的方向都是化工,和 IT 专业一点边都不搭,属于程序设计爱好者一类。坚持了很多年了,谈谈我的认识。 一、为什么是C 汇编太难,直接下手会吓死宝宝的。 basic 不能考虑,因为“对...

四彩
2016/02/04
186
2
【计算机类】大学生计算机专业电子书汇总

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 https://blog.csdn.net/dengjin20104042056/article/details/95334387 00. 目录 文章目录 本...

沧海一笑-dj
2019/07/10
0
0
2020年,除了《深入理解java虚拟机》,还有哪些java书籍值得一看?

  2020年伊始,很多新粉丝立下了几大目标,其中热门目标之一就是,一年看十本技术书籍,问我有什么推荐,那我就姑且推荐一番,看看除了周志明的《深入理解java虚拟机》之外,还有哪些书籍值...

java进阶架构师
01/01
0
0
收藏|学习Python编程的6本书籍

本文与大家分享一些Python编程语言的入门书籍,其中不乏经典。有关书籍的介绍,大部分截取自官方介绍。 Python基础教程(Begining Python) 《Python基础教程(第2版·修订版)》是经典的Pyt...

诸葛玥
2017/12/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Numpy处理图片方法

在进行图像领域的深度学习的时候经常需要对图片进行处理,包括图像的翻转,压缩,截取等,一般都是用Numpy来处理。处理起来也很方便。 In[3] # 导入需要的包 import numpy as np import matp...

北方的郎
28分钟前
8
0
AMD集中擢升高管:从Intel挖了个高手

  1 月 17 日,AMD 官方宣布多项人事升迁、新人任命,擢升了四位高级副总裁:   AMD 同时还宣布, 聘请行业资深人士 Daniel McNamara 出任高级副总裁兼服务器业务部总经理,负责在第二代...

水果黄瓜
32分钟前
6
0
什么是泛型?

一、泛型的概念 泛型是 Java SE5 出现的新特性,泛型的本质是类型参数化或参数化类型,在不创建新的类型的情况下,通过泛型指定的不同类型来控制形参具体限制的类型。 二、泛型的意义 一般的...

hncboy
今天
8
0
dynamic-connectivity 动态连通性问题之 quick-union 算法

quick-union 的思想是:若对象 p 的 root_id 和对象 q 的 root_id 相等,则认为 p 和 q 连通。 若要将对象 p 和对象 q 连通(已知两对象未连通),则将 p 的 root_id 的值设为 q 的 root_id ...

Phpythoner_Alei
今天
51
0
OSChina 周六乱弹 —— 实在选不出来就唱国歌

Osc乱弹歌单(2020)请戳(这里) 【今日歌曲】 @花间小酌 :#今日歌曲推荐# 分享阿冗的单曲《你的答案》。--祝大家在2020年都找到自己答案。 《你的答案》- 阿冗 手机党少年们想听歌,请使劲...

小小编辑
今天
327
6

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部