《汇编程序设计与计算机体系结构:软件工程师教程》 —3.9 作业
3.9 作业
前两道题分别要求你必须用某种特定的汇编器来完成,之所以这样限定,是为了帮助你熟悉本书所用的几种汇编器。本章的其中一项目标就是使你了解这几种汇编器之间的区别。第 3 道题不限定具体的汇编器,你选用自己最喜欢的那一种来完成就可以了。
3.9.1 定义变量
用 GAS 汇编器制作一款程序并在其中完成下列任务。
用大小合适的数据类型来声明 sum 变量,并将其初始值正确地设置为 0x10000。
用名为 message 的变量来表示这三行文字(以及其中的断行):
声明不含初始值的 input 变量并使其能够容纳 0 至 255 之间的值。
用一条指令,把 input 变量的值设置成与十进制的 200 相对应的二进制字面量。
3.9.2 在表达式中运用符号
用 NASM 汇编器制作一款程序并在其中完成下列任务。
创建名为 message 的变量并用它来表示这两行文字(以及其中的断行):
用名为 length 的变量来表示 message 变量所指向的字符串的大小。
通过 EQU 命令创建名为 length5 的变量(该变量也必须位于 data 段中),并用它来表示 5 与 length 相加的结果。
用只带一个操作数的指令来给 length5 变量的值加1(想一想加 1又可以叫作什么?)。
3.9.3 语法翻译
把下面这段 GAS 程序转换成符合 MASM 语法或 NASM 语法的汇编代码。你可以参考附录 A 来完成。
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 那样给每行代码加上注释,以简单地解释其含义。
- 点赞
- 收藏
- 关注作者
评论(0)