2024-2025-1 20241305 《计算机基础与程序设计》第五周学习总结
作业信息
这个作业属于哪个课程 | 2024-2025-1-计算机基础与程序设计(https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP)) |
---|---|
这个作业要求在哪里 | 2024-2025-1计算机基础与程序设计第五周作业(https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP/homework/13276)) |
这个作业的目标 | Pep/9虚拟机 机器语言与汇编语言 算法与伪代码 测试:黑盒,白盒 |
作业正文 | 本博客链接 |
教材自学内容总结
《计算机科学概论》第六章 低级程序设计语言与伪代码
1、机器语言
定义:由计算机直接使用的二进制编码指令构成的语言
计算机指令的表示 给每个指令分配一个二进制代码
2、Pep/9:一台虚拟机
基本特性:内存单元由65536字节的存储空间构成
每个字节由8位组成 字长是2字节或16位
Pep/9中重点的三个寄存器:
程序计数器(PC)
指令寄存器(IR)
累加器(A)
Pep/9的CPU:
累加器(A)
程序寄存器(PC)
指令寄存器(IR)
Pep/9的存储器:0000---FFFF
表示的十六进制数的范围:-7FFF到+7FFF,相当于十进制数的-32767到+32767
3、Pep/9的指令格式
指令组成:8位的指令说明符和16位的操作数说明符
3位的寻址模式说明符
一元指令:没有操作数的指令 长度为1字节
4、一些示例指令
0000停止执行
1100将字载入寄存器A中
1101将字节载入寄存器A中
1110存储寄存器A中的字
1111存储寄存器A的字节
0110将操作数加到寄存器A中
1000从寄存器A减操作数
5、Pep/9的输入/输出
输入设备地址FC15 输出设备地址FC16
6、Pep/9模拟器
下图为自己动手操作图:
读取-执行周期:
1)从由程序计数器确定的存储器位置上获取指令
2)解码指令,更新程序计数器
3)获得操作数(如果需要)
4)执行指令
7、汇编语言
汇编器:把汇编语言程序翻译成机器代码的程序
《C语言程序设计》第四章 键盘输入和屏幕输出
1、常用的转义字符
'\n' 换行
'\r' 回车
'\0' 空字符
'\t' 水平制表
'\v' 垂直制表
'\b' 退格
'\f' 走纸换页
'\a' 响铃报警提示音
'"' 一个双引号
''' 单引号
'\' 一个反斜线
'?' 问号
'\ddd' 1到3位八进制ASCII码值所代表的字符
'\xhh' 1到2位十六进制ASCII码值所代表的字符
2、函数printf()的格式转换
1. %d 或 %i :用于打印一个十进制的整数。
2. %u :用于打印一个无符号十进制整数。
3. %x 或 %X :用于打印一个十六进制整数, %x 输出小写字母, %X 输出大写字母。
4. %o :用于打印一个八进制整数。
5. %f :用于打印一个浮点数,默认显示小数点后六位。
6. %e 或 %E :用于打印一个科学计数法表示的浮点数, %e 使用小写 e , %E 使用大写 E 。
7. %g 或 %G :用于打印一个浮点数,根据数值的大小自动选择 %f 或 %e 的格式。
8. %c :用于打印一个字符。
9. %s :用于打印一个字符串。
10. %p :用于打印一个指针,通常显示为十六进制格式。
11. %% :用于打印 % 符号本身。
除了这些基本的格式说明符, printf() 还允许你指定宽度、精度、填充字符等,以更精细地控制输出格式。例如:
%5d :打印一个整数,至少占用5个字符的宽度,如果不足5位,则左边填充空格。
%.2f :打印一个浮点数,保留小数点后两位。
%05d :打印一个整数,至少占用5个字符的宽度,如果不足5位,则左边填充0。
3、函数scanf()的格式转换说明符
1. %c :读取一个字符。
2. %d 或 %i :读取一个有符号的十进制整数。
3. %o :读取一个八进制整数。
4. %u :读取一个无符号十进制整数。
5. %x 或 %X :读取一个十六进制整数( %x 输出小写字母, %X 输出大写字母)。
6. %f :读取一个浮点数。
7. %e 、 %E 、 %g 、 %G :读取一个浮点数,与 printf() 中的用法相同。
8. %s :读取一个字符串,直到遇到空格、制表符或换行符。
9. %[...] :读取一个字符串,直到遇到指定的字符集合中的字符。
10. %p :读取一个指针值。
11. %n :读取的字符数赋值给相应的变量,不作为格式转换说明符使用。
基于AI的学习
代码调试中的问题及解决方案
问题:C语言:用无符号整数、有符号的整数依次以域宽12输出9000000000,编程格式无误,却总显示错误
解决:求助后知道9000000000是长数字,需要在域宽+ll
如 printf("%12llu\n",num);其中num是int的变量
总结
计划学习时间9小时
实际学习时间7小时