LAB1
1.c语言定义字符串的中括号是加在变量名后边的char str[10]="hello"
2.联合编译:
gcc 程序1.c 程序2.c -o 目标程序名
3.搜索etc目录下所有以“pa”开头的文件,并拷贝到目标目录中
cp -r /etc/pa* 目标路径
4.在vi编辑器中显示行号:
在vi编辑器中输入::set number
取消行号::set nonumber
5.用vi编辑器,执行下述操作,并详细说明操作过程及方法。
1)删除第5,15和25行指令:
这个需要三行指令:
:25d
:15d
:5d
要从后往前删,是因为从前往后删有这么一个问题:比如先把第5行删了,那么原来的第10行
就变成了第9行,容易出错,所以要从后往前删。
2)将文本中所有的”etc”替换为”config”:
:%s/etc/config/g
3)复制第11~20行的内容,并且贴到文件最后一行之后:
:11,20 co 34
把指定行的内容移到指定位置的指令是:x,y co z,其中x,y,z分别是被拷贝文本的起始行、
被拷贝文本的结束行和目标行数。我的文件的最后一行行号是34,所以贴到文件最后一行之
后,就是贴到34行之后
4)然后将光标移动至文件最后:
有两步指令:
1)shift+g(没有冒号,这一步是移到文件最后一行行首)
2)shift+4(没有冒号,这一步是从最后一行行首移到行末,从而使光标移动到文件末尾)
5)将每行开头第一个字符”#”删除:
:%s/^#/
6)删除包含有字符串”conf”的那几行:
:g/conf/d
7)在第一行新增一行,输入你的姓名,学号:
先将光标移动到第一行,然后输入大写O(输入小写o则是向下插入),然后就可以在第一行
向上插入一行并进入插入模式从而可以输入自己的信息。
8)文件另存为new-inittab.conf:
:w new-inittab.conf
LAB02
1.more指令一般是个管道有关,比如用more指令查看A文件的内容:cat A|more
chown -R jhon:project /tmp/srv
这个命令就是把这个目录中的所有文件的所有者和组更改为用户jhon和用户组project。
3.chmod 770 相应目录
这是在根据数字修改权限,r=4,w=2,x=1,每组的权限为上面三个相加,比如权限为[-rwxrwx---]
,那么对应的权限便为770
LAB03
1.若要在shell脚本中用expr来计算,那要将整个算式用"`"括起来,比如:
这里还要注意一点,$a
和$b
它们两个都和加号之间要用一个空格隔开
2.expr的使用有比较多的坑,所以建议使用let。下面是用shell实现计算斐波那契第17项的值:
#!/bin/sh
i=3
a=1
b=1
c=0
while [ $i -le 17 ]
do
let c=a+b
let a=b
let b=c
((i+=1))
done
echo " 17th= "$c
exit 0
3.在终端中输入expr计算算式时,记得在算子和运算符之间加一个空格,比如:
如果不加空格的话,只会原样输出算式:
4.case语句里面的每个选项是以双分号结尾的:
5.case分支的注意事项:
1)除了默认选项(就是最后一个选项)外,其它选项都要以双分号结尾
2)和while、select一样,case结构需要有关键字来表示分支结束了,它是用关键字esac来表示分支结束
6.select分支的注意事项:
1)select语句实质上也是一个循环语句,若不添加break关键字,将无法跳出循环
2)select列表里各项需要用空格隔开,下列写法都是错的:“a”"b"
,"a","b"
,第一种写法相当于只有一个ab
项,第二种写法相当于只有一个a,b
项
7.while,case,select三个结构都没有冒号
LAB04
1.对/proc/sys/net目录下内容的修改都是临时的,任何修改在系统重启后都会丢失LAB05
1.标志寄存器CF置1的条件:加法使得寄存器溢出,向高位进1;减法需要向高位借1.CF寄存器发生改变后,会在紧接着的adc指令中起作用。指令`adc ax,bx`实现的功能是`(ax)=(ax)+(bx)+cf`2.所以想要实现进位功能的加法,一般流程都是这样子(反正我是这样写的):
mov bx,0
add ax,cx
add bx,bx
这样,ax存的就是低位数据,bx存的就是高位数据
LAB07
1.用int中断例程把字符串输出到光标位置上:1)(把ah设置为2)用int 10h的2号子例程设置光标位置,并设置dh,dl的值(设置光标位置),设置bh的值(设置显示的页号)
2)(把ah设置为9)用int 21h 的9号子例程设置在光标处显示字符串,字符串的首地址存储在ds:dx中
3)记住,存储子例程序号的是ah,ah,ah,ah,ah!!!!!!!!!!!!!!!!!
2.用int中断例程把字符串输出到显存上:
1)准备工作:
哈哈i)设置ds:si指向源地址
哈哈ii)设置es:di指向目的地址
哈哈iii)设置cx为传输的长度
哈哈iv)设置传输方向为正:cld
哈哈v)开始传输:rep movsb
2)更改中断向量表,指向目的地址(这里要注意,更改完成以后就要用mov ax,4c00h 和 int 21h回到DOSBOX了,因为安装程序不需要执行中断例程)
3)编写中断例程