第一、二周(9.14~9.27)
一、汇编语言
1. 寄存器
寄存器 | 64位 | 32位 | 16位 | 8位 |
---|---|---|---|---|
累计寄存器 | RAX | EAX | AX | AL |
计数寄存器 | RCX | ECX | CX | CL |
数据寄存器 | RDX | EDX | DX | DL |
基址寄存器 | RBX | EBX | BX | BL |
堆栈顶指针 | RSP | ESP | SP | AH |
堆栈基指针 | RBP | EBP | BP | CH |
变址寄存器 | RSI | ESI | SI | DH |
指令寄存器 | RDL | EDL | DL | BH |
2.简单加减指令
指令 | 中文名 | 格式 | 解释 |
---|---|---|---|
ADD | 加法指令 | ADD DEST,SRC | DEST<=DEST+SRC |
SUB | 减法指令 | SUB DEST,SRC | DEST<=DEST-SRC |
INC | 加1指令 | INC DEST | DEST<=DEST+1 |
DEC | 减1指令 | DEC DEST | DEST<=DEST-1 |
NEG | 取补指令 | NEG OPRD | OPRD=0-OPRD |
3.逻辑运算指令
指令 | 中文名 | 格式 | 解释 |
---|---|---|---|
NOT | 否操作指令 | NOT OPRD | 把OPRD取反,再回送给OPRD |
AND | 与操作指令 | AND OPRD1,OPRD2 | OPRD1和OPRD2执行与操作,结果送到OPRD1 |
OR | 或操作指令 | OR OPRD1 OPRD2 | OPRD1和OPRD2执行或操作,结果送到OPRD1 |
XOR | 异或操作指令 | XOR OPRD1 OPRD2 | OPRD1和OPRD2执行异或操作,结果送到OPRD1 |
TEST | 测试指令 | TEST OPRD1 OPRD2 | 指令与AND类似,但结果不回送 |
4.简单传送指令
指令 | 中文名 | 格式 | 解释 |
---|---|---|---|
MOV | 传送指令 | MOV DEST,SRC | DEST<=SRC |
XCHG | 交换指令 | XCHG OPER1,OPER2 | 把操作数oper1的内容与操作数oper2的内容交换 |
二、Python
1.基础语法
(1).Python 标识符
在 Python 里,标识符由字母、数字、下划线组成。
在 Python 中,所有标识符可以包括英文、数字以及下划线“_",但不能以数字开头。
Python 中的标识符是区分大小写的。
以下划线开头的标识符是有特殊意义的。以单下划线开头 _foo 的代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用 from xxx import * 而导入。
以双下划线开头的 __foo 代表类的私有成员,以双下划线开头和结尾的 foo 代表 Python 里特殊方法专用的标识,如 init() 代表类的构造函数。
Python 可以同一行显示多条语句,方法是用分号 "; "分开.
(2).多行语句
Python语句中一般以新行作为语句的结束符。
但是我们可以使用斜杠"\"将一行的语句分为多行显示。
(3).行和缩进
学习 Python 与其他语言最大的区别就是,Python 的代码块不使用大括号 {} 来控制类,函数以及其他逻辑判断。python 最具特色的就是用缩进来写模块。
缩进的空白数量是可变的,但是所有代码块语句必须包含相同的缩进空白数量,这个必须严格执行。
(4)…Python空行
函数之间或类的方法之间用空行分隔,表示一段新的代码的开始。类和函数入口之间也用一行空行分隔,以突出函数入口的开始。
空行与代码缩进不同,空行并不是Python语法的一部分。书写时不插入空行,Python解释器运行也不会出错。但是空行的作用在于分隔两段不同功能或含义的代码,便于日后代码的维护或重构。
记住:空行也是程序代码的一部分
(5).print 输出
print 默认输出是换行的,如果要实现不换行需要在变量末尾加上逗号 。
(6).多个语句构成代码组
缩进相同的一组语句构成一个代码块,我们称之代码组。
像if、while、def和class这样的复合语句,首行以关键字开始,以冒号":"结束,该行之后的一行或多行代码构成代码组。
我们将首行及后面的代码组称为一个子句(clause)。
2.运算符
(1).算术运算符
运算符 | 中文名 | 描述 | 实例 |
---|---|---|---|
** | 幂 | 返回x的y次幂 | a**b (为a的b次方) |
// | 取整除 | 返回商的整数部分(向下取整) | 9//2=4: -9//2=-5 |
其余都与C++相同。
(2).比较运算符
基本与C++完全相同,除:“<>",不等于 , 比较两个对象是否不相等。(python3已废弃),这个运算符类似 != 。
返回值为“true”或“false”。
(3).赋值运算符
运算符 | 描述 | 实例 |
---|---|---|
= | 简单的赋值运算符 | c = a + b ,将 a + b 的运算结果赋值为 c |
+= | 加法赋值运算符 | c += a ,等效于 c = c + a |
-= | 减法赋值运算符 | c -= a ,等效于 c = c - a |
*= | 乘法赋值运算符 | c *= a ,等效于 c = c * a |
/= | 除法赋值运算符 | c /= a, 等效于 c = c / a |
%= | 取模赋值运算符 | c %= a ,等效于 c = c % a |
**= | 幂赋值运算符 | c **= a ,等效于 c = c ** a |
//= | 取整除赋值运算符 | c //= a ,等效于 c = c // a |
3.函数
(1).定义函数
函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。
任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。
函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
函数内容以冒号起始,并且缩进。
return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。
(2).函数调用
定义一个函数只给了函数一个名称,指定了函数里包含的参数,和代码块结构。
这个函数的基本结构完成以后,你可以通过另一个函数调用执行,也可以直接从Python提示符执行。
(3).参数传递
在 python 中,类型属于对象,变量是没有类型的。
在 python 中,strings, tuples, 和 numbers 是不可更改的对象,而 list,dict 等则是可以修改的对象。
不可变类型:变量赋值 a=5 后再赋值 a=10,这里实际是新生成一个 int 值对象 10,再让 a 指向它,而 5 被丢弃,不是改变a的值,相当于新生成了a。
可变类型:变量赋值 la=[1,2,3,4] 后再赋值 la[2]=5 则是将 list la 的第三个元素值更改,本身la没有动,只是其内部的一部分值被修改了。
python 函数的参数传递:
不可变类型:类似 c++ 的值传递,如 整数、字符串、元组。如fun(a),传递的只是a的值,没有影响a对象本身。比如在 fun(a)内部修改 a 的值,只是修改另一个复制的对象,不会影响 a 本身。
可变类型:类似 c++ 的引用传递,如 列表,字典。如 fun(la),则是将 la 真正的传过去,修改后fun外部的la也会受影响
python 中一切都是对象,严格意义我们不能说值传递还是引用传递,我们应该说传不可变对象和传可变对象。
三、linux命令行基本操作
1.打开终端命令行
方法一:右键->打开终端。
方法二:Ctrl+Alt+T
2.常用快捷键
2.1 tab键
tab键是有两个功能,一个一次tab命令补齐,另一个两次tab提示内容,如果我们不记得一个命令的全拼,或者不记得某个路径的全拼,可以输入命令的前面几个字母,然后使用tab键自动补齐命令或查看提示信息。
2.2 Ctrl+c组合键
Ctrl+c中断,强行打断进程,如果终端命令行正在执行某个进程的程序,这时想要中断掉该进程就可以使用Ctrl+c。
2.3 Ctrl+d组合键
Ctrl+d退出,相当于exit和quit,比如用python命令进入python交互环境后,就可以用Ctrl+d退出python交互。
2.4Ctrl+Shift+c组合键和Ctrl+Shift+v组合键
在终端中复制粘贴时,先用鼠标选中需要复制的内容,然后用Ctrl+Shift+c进行复制,再用Ctrl+Shift+v进行粘贴。
2.5图形界面和纯文本交互模式切换
Ctrl+Alt+F1F6:纯文本交互模式登入tty1tty6终端机;
Ctrl+Alt+F7:切回图形界面。
3.终端命令行中一些常用符号
用户主目录:~
系统根目录:/
一般用户提示符:$
root用户提示符:#
4.关机与重启命令
关机:sudo poweroff
重启:sudo reboot
5.目录与文件相关命令
显示文件和目录列表:ls
切换目录:cd <目标目录>
显示当前所在工作目录:pwd
创建文件:touch <文件名>
复制文件:cp <源文件路径> <目标文件路径>
移动文件:mv <源文件路径> <目标文件路径>
删除文件:rm <文件名>
显示文件内容:cat <文件名>
创建文件夹:mkdir <文件夹名>
删除文件夹;rmdir <文件夹名>