1. Linux基本操作
在讲文件/文件夹的增删改之前,先聊一下路径的问题,因为有些命令创建文件(夹)时会直接在当前目录创建,或者需要自己指定相应的目录,所以知晓当前所处的位置就显得尤为重要。
进入终端之后默认进入用户目录,即"/根目录/用户",直接输入"pwd"进行查看;
puyalee@puyalee-virtual-machine:~$ pwd
/home/puyalee
切换目录用的是"cd"
最直接的是“cd 路径”,可进入指定的目录下,当然这里的路径有绝对路径和相对路径之分。绝对路径就是按部就班地从根目录一直写道目标目录,如:
puyalee@puyalee-virtual-machine:~$ cd /home/puyalee/test0/test1/test2
puyalee@puyalee-virtual-machine:~/test0/test1/test2$
相对路径允许省略用户,比如我要到/home/puyalee/test0/test1/test2,也可直接用:
puyalee@puyalee-virtual-machine:~$ cd ./test0/test1/test2
puyalee@puyalee-virtual-machine:~/test0/test1/test2$
另外"cd ~"、"cd …"分别表示返回用户目录和返回上一级目录
puyalee@puyalee-virtual-machine:~/test0/test1/test2$ cd ..
puyalee@puyalee-virtual-machine:~/test0/test1$ pwd
/home/puyalee/test0/test1
puyalee@puyalee-virtual-machine:~/test0/test1$ cd ~
puyalee@puyalee-virtual-machine:~$ pwd
/home/puyalee
补充一点:"pwd"是显示当前的目录
对文件的基本操作
- "touch"该命令可修改文件的修改时间,当文件不存在时,会建立一个新的文件
支持"touch [文件名]"在当前目录创建新文件,也支持"touch [目录/文件名]"在指定目录下创建文件
- "rm"命令可直接删除文件,也有一些其它选项
"rm -i"删除前询问,空与非空均可
puyalee@puyalee-virtual-machine:~/test0$ rm -i 1
rm:是否删除普通空文件 '1'? y
“rm -f"强制删除文件,空与非空均可
此外"rm -r”、"rm -d"也可删除文件,也均支持通过路径删除
- 向txt文件写入文本
1、“vi"输入"vi test.txt” 回车,按a或i进入编辑模式,输入“ I am a boy”,然后按esc键退出编辑模式,输入":wq"保存并退出,当test.txt不存在时创建
2、"echo"只可单行追加
puyalee@puyalee-virtual-machine:~/test0$ echo 123 >> test.txt
//当test.txt不存在时创建
3、"cat"可对文件进行编辑,“cat >> test.txt”,键入需要输入的文本,按Ctrl+D保存
对文件夹的操作
- "mkdir"用来创建文件夹
"mkdir"可直接在当前目录下创建新的文件夹
puyalee@puyalee-virtual-machine:~$ mkdir test
"mkdir"可在指定目录下创建新的文件夹
puyalee@puyalee-virtual-machine:~$ mkdir test/test1
"mkdir -p"递归创建所需的目录,上一级目录可以不存在,也一并创建
puyalee@puyalee-virtual-machine:~$ mkdir -p test1/test2/test3/test4
- "rm"用来删除文件夹
"rm -d"可删除空文件夹,删除test4
puyalee@puyalee-virtual-machine:~$ rm -d test1/test2/test3/test4
"rm -r"可删除文件夹及其内容,删除test1
puyalee@puyalee-virtual-machine:~$ rm -r test1
"rmdir"也可删除空文件夹,"rmdir -p"连同上一级空目录也一起删除
- "mv"对文件和文件夹进行移动、重命名,如将文件"1"从test0移动到test1
puyalee@puyalee-virtual-machine:~$ cd test0 //首先进入test0
puyalee@puyalee-virtual-machine:~/test0$ mv 1 test1
重命名"mv [原名字] [新名字]“即可,如将文件’'1"重命名为"2”
puyalee@puyalee-virtual-machine:~/test0/test1$ mv 1 2
2. 汇编语言编写hello world!
在网上找了一个源程序,只能看懂基本的结构,还有好多地方不明白,或者说压根不会。比如,我知道前面定义了数据段(应该是用来存储字符串)和堆栈段,但不知道为什么这么做,具体的语法也不清楚。
DATA SEGMENT ;定义数据段
PRINT DB "Hello World!", 0AH, 0DH, '$' ;定义一个字符串,以'$'结束
DATA ENDS ;定义数据段结束
STACK SEGMENT STACK ;定义堆栈段
DW 20 DUP(0) ;为堆栈段分配空间
STACK ENDS ;定义堆栈段结束
CODE SEGMENT ;定义代码段
ASSUME CS:CODE, DS:DATA, SS:STACK ;告诉编译器将段寄存器与符号对应起来
START: ;程序入口
MOV AX, DATA
MOV DS, AX ;将段地址DATA送入DS中
MOV DX, OFFSET PRINT ;将字符串地址送人DX中
MOV AH, 09H
INT 21H ;调用INT 21H的9号中断
MOV AH, 4CH ;返回DOS系统
INT 21H
CODE ENDS ;定义代码段结束
END START ;程序结束
至于源程序的编辑、编译、连接、生成可执行文件并执行的方法步骤,已经掌握。
-
准备材料
dosbox、masm -
事先将hello world源程序放在一个txt文件中,并将后缀改为.asm 我将其暂时和masm中的程序放在一个文件夹内,便于操作。
-
运行dosbox,依次输入命令,回车
mount c d:\home\ //将d:\home\作为虚拟c盘,省去配置环境变量
c: //进入虚拟c盘
-
输入命令 masm hello.asm 一路回车,将hello.asm编译成目标文件,会在当前目录生成一个目标文件hello.obj
-
输入命令 link hello.obj 一路回车,生成可执行文件 hello.exe
-
输入命令 hello.exe ,回车即可打印出 hello world!