2020-9.14~9.28学习笔记
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
一、汇编指令
寄存器
寄存器可以理解为CPU中的存储器或者内存,是CPU中可以存储数据的器件,一个CPU中可以有多个寄存器。
1、数据寄存器:数据寄存器主要用来保存操作数和运算结果等信息,从而节省读取操作数所需占用总线和访问存储器的时间。如:寄存器DX。
2、变址寄存器:可作一般的存储器指针使用。在字符串操作指令的执行过程中,对它们有特定的要求,而且还具有特殊的功能。如:ESI、EDI、SI和DI。
3、指针寄存器:主要用于存放堆栈内存储单元的偏移量,用它们可实现多种存储器操作数的寻址方式,为以不同的地址形式访问存储单元提供方便。指针寄存器不可分割成8位寄存器。如:EBP、ESP、BP和SP。
4、段寄存器:段寄存器是根据内存分段的管理模式而设置的。内存单元的物理地址由段寄存器的值和一个偏移量组合而成的,这样可用两个较少位数的值组合成一个可访问较大物理空间的内存地址。
5、指令指针EIP、IP(Instruction Pointer)是存放下次将要执行的指令在代码段的偏移量。在具有预取指令功能的系统中,下次要执行的指令通常已被预取到指令队列中,除非发生转移情况。
简单传送指令
指令 | 作用 | 备注 |
---|---|---|
MOV | 传送字或字节 | - |
XCHG | 交换字或字节 | 至少有一个操作数为寄存器,段寄存器不可作为操作数 |
目的地址传送指令
指令 | 作用 |
---|---|
LEA | 装入有效地址。例:LEA DX,string;把偏移地址存到DX。 |
LDS | 传送目标指针,把指针内容装入DS。例: LDS SI,string;把段地址:偏移地址存到DS:SI。 |
简单加减指令
指令 | 名称 | 格式 | 作用 | 备注 |
---|---|---|---|---|
ADD | 加法指令 | ADD DEST,SRC | 加法 | 数的相加 |
SUB | 减法指令 | SUB DEST,SRC | 减法 | 数的相减 |
INC | 加1指令 | INC DEST | 加 1 | - |
DEC | 减1指令 | DEC DEST | 减 1 | - |
CMP | 比较指令 | CMP OPR1 , OPR2. | 比较 | (两操作数作减法,仅修改标志位,不回送结果) |
逻辑运算指令
指令 | 作用 |
---|---|
NOT | 把操作数OPRD按位取反,然后送回OPRD |
AND | 把两个操作数进行与运算之后结果送回DEST |
OR | 把两个操作数进行或运算之后结果送回DEST |
XOR | 把两个操作数进行异或运算之后结果送回DEST |
TEST | 测试。(两操作数作与运算,仅修改标志位,不回送结果) |
中断指令
指令 | 作用 |
---|---|
INT | 中断指令 |
INTO | 溢出中断 |
IRET | 中断返回 |
二、Python
1.基础语法
标识符
- 第一个字符必须是字母表中字母或下划线 _ 。
- 标识符的其他的部分由字母、数字和下划线组成。
- 标识符对大小写敏感。
注释
Python中单行注释以 # 开头,实例如下:
#!/usr/bin/python3
# 第一个注释
print ("Hello, Python!") # 第二个注释
执行以上代码,输出结果为:
Hello, Python!
行与缩进
python使用缩进来表示代码块,不需要使用大括号 {} 。
缩进的空格数是可变的,但是同一个代码块的语句必须包含相同的缩进空格数。实例如下:
if True:
print ("True")
else:
print ("False")
以下代码最后一行语句缩进数的空格数不一致,会导致运行错误:
if True:
print ("Answer")
print ("True")
else:
print ("Answer")
print ("False") # 缩进不一致,会导致运行错误
以上程序由于缩进不一致,执行后会出现类似以下错误:
File "test.py", line 6
print ("False") # 缩进不一致,会导致运行错误
^
IndentationError: unindent does not match any outer indentation level
等待用户输入
执行下面的程序在按回车键后就会等待用户输入:
#!/usr/bin/python3
input("\n\n按下 enter 键后退出。")
import 与 from…import
在 python 用 import 或者 from…import 来导入相应的模块。
将整个模块(somemodule)导入,格式为: import somemodule
从某个模块中导入某个函数,格式为: from somemodule import somefunction
从某个模块中导入多个函数,格式为: from somemodule import firstfunc, secondfunc, thirdfunc
将某个模块中的全部函数导入,格式为: from somemodule import *
导入 sys 模块:
import sys
print('================Python import mode==========================')
print ('命令行参数为:')
for i in sys.argv:
print (i)
print ('\n python 路径为',sys.path)
2.函数
定义函数
Python 定义函数使用 def 关键字,一般格式如下:
def 函数名(参数列表):
函数体
默认情况下,参数值和参数名称是按函数声明中定义的顺序匹配起来的。
#!/usr/bin/python3
# 计算面积函数
def area(width, height):
return width * height
def print_welcome(name):
print("Welcome", name)
print_welcome("Runoob")
w = 4
h = 5
print("width =", w, " height =", h, " area =", area(w, h))
输出结果为:
Welcome Runoob
width = 4 height = 5 area = 20
参数传递
在 python 中,类型属于对象,变量是没有类型的:
a=[1,2,3]
a="Runoob"
以上代码中,[1,2,3] 是 List 类型,“Runoob” 是 String 类型,而变量 a 是没有类型,她仅仅是一个对象的引用(一个指针),可以是指向 List 类型对象,也可以是指向 String 类型对象。
from … import 语句
Python 的 from 语句让你从模块中导入一个指定的部分到当前命名空间中,语法如下:
from modname import name1[, name2[, ... nameN]]
例如,要导入模块 fibo 的 fib 函数,使用如下语句:
>>> from fibo import fib, fib2
>>> fib(500)
1 1 2 3 5 8 13 21 34 55 89 144 233 377
这个声明不会把整个fibo模块导入到当前的命名空间中,它只会将fibo里的fib函数引入进来。
chr() 函数
chr() 用一个整数作参数,返回一个对应的字符。
pow() 函数
pow() 方法返回 xy(x的y次方) 的值。
min() 函数
min() 方法返回给定参数的最小值,参数可以为序列。
str() 函数
返回一个对象的string格式。以下是 str() 方法的语法:
class str(object='')
三、linux命令行的基本操作
常用快捷键
- Tab键:tab键是有两个功能,一个一次tab命令补齐。
- Ctrl+C:Ctrl+c中断,强行打断进程,如果终端命令行正在执行某个进程的程序,这时想要中断掉该进程就可以使用Ctrl+c。
- Ctrl+D:Ctrl+d退出,相当于exit和quit,比如用python命令进入python交互环境后,就可以用Ctrl+d退出python交互。
- Ctrl+Shift+c和Ctrl+Shift+v:在终端中复制粘贴时,先用鼠标选中需要复制的内容,然后用Ctrl+Shift+c进行复制,再用Ctrl+Shift+v进行粘贴。
- 图形界面和纯文本交互模式切换:
Ctrl+Alt+F1-F6:纯文本交互模式登入tty1~tty6终端机;
Ctrl+Alt+F7:切回图形界面。
关机与重启命令
- 关机:sudo poweroff;
- 重启:sudo reboot
目录与文件相关命令
- 显示文件和目录列表:ls
- 切换目录:cd <目标目录>
- 显示当前所在工作目录:pwd
- 创建文件:touch <文件名>
- 复制文件:cp <源文件路径> <目标文件路径>
- 移动文件:mv <源文件路径> <目标文件路径>
- 删除文件:rm <文件名>
- 显示文件内容:cat <文件名>
- 创建文件夹:mkdir <文件夹名>
10.删除文件夹:rmdir <文件夹名>