作业信息
这个作业属于哪个课程 | 2024-2025-1-计算机基础与程序设计) |
---|---|
这个作业要求在哪里 | <作业要求的链接>(如2024-2025-1计算机基础与程序设计第五周作业) |
这个作业的目标 | 学习Pep/9虚拟机,机器语言与汇编语言,算法与伪代码,测试:黑盒,白盒 |
作业正文 | ... 本博客链接 |
教材学习内容总结
1.虚拟机 PEP/9:书中引入了 PEP/9 这一虚拟机概念。PEP/9 一共有 40 条机器语言指令,其指令格式由 8 位数的指令说明符和(可选的)16 位的操作数说明符构成,这决定了 PEP/9 的指令长度为 1 字节或 3 字节。指令中的寻址位置说明符表示了如何解析操作数部分。PEP/9 的输入/输出:介绍了该虚拟机的输入输出操作方式。
2.PEP/9 模拟器:这是用于模拟 PEP/9 程序的工具,可以按照虚拟机的设计方式进行运算,并且可免费下载,通过实例展示了机器语言程序的运行过程。
3.汇编语言:定义与特点:汇编语言是一种低级语言,用助记码表示特定计算机的机器语言指令。有专门的汇编器把汇编语言程序翻译成机器代码。PEP/9 汇编语言特性:在 PEP/9 汇编语言中,操作数用 0x 和十六进制表示,后面跟逗号和寻址模式(由字母 i 表示立即寻址或 d 表示直接寻址)。并且程序中可以添加注释,为程序读者提供解释性文字。还介绍了数字数据、分支、标签等概念,分支指出执行下一条指令的指令,标签是对内存位置起的名字,可以当作操作数使用。
4.表达算法:伪代码的功能:伪代码是一种表达算法的语言,具有多种功能,包括对变量的定义和使用、赋值操作、输入/输出操作、选择结构(类似 if...else)以及重复结构(类似 while 等)。
执行伪代码算法:讲解了如何执行伪代码所表达的算法。写伪代码算法:介绍了编写伪代码算法的方法和要点。翻译伪代码算法:阐述了将伪代码算法翻译成其他程序设计语言的过程。
5.关系运算符:C 语言提供了 6 种关系运算符,分别是 >
(大于)、>=
(大于等于)、<
(小于)、<=
(小于等于)、==
(等于)、!=
(不等于)。这些运算符用于判断两个操作数的大小关系或是否相等。关系运算符都是双目运算符,其结合方向是左结合。关系运算符的优先级低于算术运算符,但高于赋值运算符,并且 >=
、<=
、>
、<
的优先级相同,==
、!=
的优先级相同,前者高于后者。
6.关系表达式:用关系运算符将两个表达式连接起来的式子称为关系表达式。关系表达式的结果是一个逻辑值“真”或“假”,在 C 语言中用“1”表示“真”,“0”表示“假”。例如,关系表达式“5 == 3”的值为“假”,“5 >= 0”的值为“真”。关系表达式中允许出现嵌套的情况,但要注意区分运算符“=”和“”,“=”是赋值运算符,“”是关系运算符。
7.逻辑运算符: !
(逻辑非):是单目运算符,用于对一个逻辑值取反。例如,!true
的结果为 false
,!false
的结果为 true
。 &&
(逻辑与):是双目运算符,当且仅当两个操作数都为“真”时,结果才为“真”,否则为“假”。 ||
(逻辑或):也是双目运算符,只要两个操作数中有一个为“真”,结果就为“真”,只有当两个操作数都为“假”时,结果才为“假”。
8.逻辑表达式:用逻辑运算符将关系表达式或其他逻辑量连接起来的式子就是逻辑表达式。在逻辑表达式中,如果包含多个逻辑运算符,其优先级顺序为 !
(非)→ &&
(与)→ ||
(或)。逻辑运算符中的 &&
和 ||
低于关系运算符,!
高于算术运算符。并且在 C 语言中,参与逻辑运算的数据可以是 1
和 0
,也可以是非零值和 0
,系统在表示逻辑运算结果时,用数值 1
代表“真”,用 0
代表“假”,但在判断一个量是否为“真”时,以 0
代表“假”,以非 0
代表“真”。
9.if 语句:
单分支 if 语句:如果条件表达式的值为真,则执行 if 后面的语句块;如果条件表达式的值为假,则跳过该语句块,继续执行后续代码。例如,编写程序任意输入一个实数,输出其绝对值,就可以使用单分支 if
语句,当输入的数小于 0
时,将其取反得到绝对值。
双分支 if-else 语句:根据条件表达式的真假来决定执行两个不同的语句块。如果条件表达式为真,执行 if
后面的语句块;如果条件表达式为假,执行 else
后面的语句块。例如,输入两个整数,判断哪个数更大,并输出较大的数。
嵌套 if 语句:在一个 if
语句中又包含另一个或多个内嵌的 if
语句。通过嵌套 if
语句,可以实现复杂的条件判断。例如,输入三个任意整数,找出其中的最大数,就需要使用嵌套的 if
语句来进行多次比较。
多分支 if 语句(if-else if-else 语句):当有多个条件需要判断时,可以使用 if-else if-else
语句。依次判断每个 if
语句中的条件表达式,如果某个条件表达式为真,则执行该 if
后面的语句块,然后跳出整个多分支结构;如果所有的条件表达式都为假,则执行 else
后面的语句块。
switch 语句:switch
语句也是一种多分支选择结构,根据一个表达式的值来选择执行不同的代码块。switch
语句中的表达式通常是一个整型表达式或字符型表达式,根据表达式的值与 case
后面的常量值进行匹配,如果匹配成功,则执行该 case
后面的语句块,直到遇到 break
语句或 switch
语句结束。如果没有匹配的 case
常量值,则执行 default
后面的语句块(如果有 default
的话)。
教材学习中的问题和解决过程
问题:为什么在搭建Pep/9编程环境时无法正确编译汇编程序
AI解答:在搭建 PEP/9 编程环境时无法正确编译汇编程序可能有以下几个原因:
一、环境配置问题
- 依赖项缺失
- PEP/9 的汇编器可能依赖特定的软件或库,如果这些依赖项没有正确安装,就会导致编译失败。你可以检查安装文档,确认是否有遗漏的依赖项,并进行安装。
- 例如,可能需要特定版本的汇编器支持库,或者某些运行时环境组件。
- 路径设置错误
- 确保汇编器的路径被正确添加到系统的环境变量中。如果路径设置不正确,系统将无法找到汇编器可执行文件,从而导致编译失败。
- 你可以检查系统的环境变量设置,确认汇编器的路径是否正确。如果不确定,可以尝试手动指定汇编器的完整路径来进行编译。
二、汇编程序代码问题
- 语法错误
- 仔细检查你的汇编程序代码是否存在语法错误。常见的语法错误包括指令拼写错误、操作数格式错误、标签使用不当等。
- 例如,指令的大小写是否正确,操作数的寻址模式是否与指令要求匹配,标签是否在正确的位置定义和引用。
- 逻辑错误
- 即使语法正确,程序也可能存在逻辑错误,导致编译过程中出现异常。例如,分支指令指向了不存在的地址,或者数据定义与实际使用不匹配。
- 你可以通过仔细分析程序的逻辑流程,使用调试工具或逐步执行程序来查找逻辑错误。
三、工具版本问题
- 汇编器版本不兼容
- 确保你使用的汇编器版本与你所参考的文档或教程相匹配。不同版本的汇编器可能在语法、功能或行为上有所不同,从而导致编译问题。
- 你可以查看汇编器的文档,了解其支持的语法和特性,并确认你的程序是否符合该版本的要求。
- 其他相关工具版本冲突
- PEP/9 编程环境可能还涉及其他工具,如模拟器或调试器。如果这些工具的版本与汇编器不兼容,也可能导致编译失败。
- 确保所有相关工具的版本相互兼容,并按照正确的顺序安装和配置。
四、系统环境问题
- 操作系统差异
- PEP/9 可能在不同的操作系统上有不同的表现。某些操作系统可能对文件权限、路径格式或其他方面有特定的要求。
- 你可以检查你的操作系统是否满足 PEP/9 的要求,并根据操作系统的特点进行相应的调整。
- 资源限制
- 编译过程可能需要一定的系统资源,如内存、磁盘空间等。如果系统资源不足,可能会导致编译失败。
- 你可以关闭不必要的程序,释放系统资源,或者考虑在具有更多资源的系统上进行编译。
基于AI的学习