一般情况下,寄存器默认组合:
ds:si
es:di
在没声明段寄存器的情况下,按照默认组合寻址,但是如果想要指定特定的段寄存器,需要使用seg cs
。CLI禁止中断发生,STI允许中断发生
这两个指令只能在内核模式下执行,不可以在用户模式下执行;而且在内核模式下执行时,应该尽可能快的恢复中断,因为CLI会禁用硬件中断,若长时间禁止中断会影响其他动作的执行(如移动鼠标等等),系统就会变得不稳定。在标志寄存器中中断标志清零的情况下,可以以“int ××”的形式调用软中断。CLD与STD是用来操作方向标志位DF(Direction Flag)。CLD使DF复位,即DF=0,STD使DF置位,即DF=1.
- ROL和ROR指令
循环左移/右移指令只是移位方向不同,它们移出的位不仅要进入CF,而且还要填补空出的位。
例如:
MOV AL,82H
ROL AL,1
首先把82H转换成二进制数10000010B
循环左移1位后变成:00000101B,换算成十六进制数便是05H
循环右移1位后变成:01000001B,换算成十六进制数便是41H
Test命令将两个操作数进行逻辑与运算,并根据运算结果设置相关的标志位。
影响标志寄存器的指令大都是进行逻辑算数运算的指令,如add、sub、mul等
有的指令对标志寄存器的执行没有影响,传送指令:如mov,push,pop等汇编语言中用3个概念来表达数据的位置:
立即数(idata)、寄存器、段地址(SA)和偏移地址(EA)启动引导时内核在内存中的位置和移动后的位置情况
- 在保护模式下,jmpi 0,8不再像实模式下,直接将ip置为0,cs置为8,然后cs左移4位+ip,而是采用在gdt表中查询翻译加上ip
比如:
jmpi 0,8
需要在gdt表中8的位置,找出地址翻译,然后加上偏移量0,最后得出真正的物理地址,这是保护模式与实模式不同的地方。
- 内嵌汇编的格式
asm(
汇编语言模板:
输出部分:
输入部分:
破坏描述部分
)
汇编语言模板必不可少,其他三个可选. - OF
针对有符号数,当结果用原来的寄存器无法表示的时候,OF置为1 - docker使用
给image打标签
sudo docker tag 原image名字 新建标签名
向docker hub提交image
1. 通过docker login登录docker hub
2. 生成新的镜像
sudo docker commit -m "add .." -a "author" ID repository
3. 给要上传的image打标签,名字的格式为 name/repository:tag
4. sudo docker push name/repository