《汇编程序设计与计算机体系结构:软件工程师教程》 —3.9 作业

举报
华章计算机 发表于 2019/12/04 12:22:23 2019/12/04
【摘要】 本节书摘来自华章计算机《汇编程序设计与计算机体系结构:软件工程师教程》一书中第3章,第3.9.4节,作者是布莱恩·R. 霍尔(Brian R. Hall)[美] 凯文·J.斯隆卡(Kevin J. Slonka),爱飞翔 译。

3.9 作业

前两道题分别要求你必须用某种特定的汇编器来完成,之所以这样限定,是为了帮助你熟悉本书所用的几种汇编器。本章的其中一项目标就是使你了解这几种汇编器之间的区别。第 3 道题不限定具体的汇编器,你选用自己最喜欢的那一种来完成就可以了。

3.9.1 定义变量

用 GAS 汇编器制作一款程序并在其中完成下列任务。

用大小合适的数据类型来声明 sum 变量,并将其初始值正确地设置为 0x10000。

用名为 message 的变量来表示这三行文字(以及其中的断行):

 image.png

声明不含初始值的 input 变量并使其能够容纳 0 至 255 之间的值。

用一条指令,把 input 变量的值设置成与十进制的 200 相对应的二进制字面量。

3.9.2 在表达式中运用符号

用 NASM 汇编器制作一款程序并在其中完成下列任务。

创建名为 message 的变量并用它来表示这两行文字(以及其中的断行):

 image.png

用名为 length 的变量来表示 message 变量所指向的字符串的大小。

通过 EQU 命令创建名为 length5 的变量(该变量也必须位于 data 段中),并用它来表示 5 与 length 相加的结果。

用只带一个操作数的指令来给 length5 变量的值加1(想一想加 1又可以叫作什么?)。

3.9.3 语法翻译

把下面这段 GAS 程序转换成符合 MASM 语法或 NASM 语法的汇编代码。你可以参考附录 A 来完成。

 

 image.png

image.png

3.9.4 按照正确的顺序执行运算(挑战题)

编写程序计算表达式 answer = (A + B) – (C + D) 的值。

答案必须存放在大小合适的变量中,以正确保存根据给定的数据 (A, B, C, D) 算出的结果。

数据 (A, B, C, D) 的值必须保存在 eax、ebx 等寄存器里,而不能用变量来保存。

必须给数据 (A, B, C, D) 提供初始值。

创建一个字符串,以便在输出运算结果的时候可以将其用作提示语,这个字符串的内容可以是 “The answer is:”(答案是:)。你也可以不打印这个字符串。

像 3-5 节里的程序 3-2 那样给每行代码加上注释,以简单地解释其含义。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。