文章目录
- 一、align 字节对齐指令
- 二、db / dw / dd 指令
- 三、nop 指令
- 总结
一、align 字节对齐指令
align 字节对齐 ; 默认情况下是
字节对齐 ; 该指令是伪指令 , 没有机器码与之对应 ;
代码语言:javascript复制align 16h
内存中是分页的 , 如果要记录每一块内存的使用状况 , 需要占用很大的内存空间 , 为了方便系统中内存的使用与记录 , 首先将操作系统分页 , 只需要记录每个分页的使用情况即可 , 每个分页只有 使用 / 没有使用 两种状态 ; 如果有
个分页 , 只需要有
位 ,
字节 , 就可以记录
个分页中 , 哪块内存使用了 , 哪块内存没有使用 ;
实际中 , 每个分页有
K , 以分页为单位 , 将内存分配给各个进程 ;
分页内部的数据 , 如果是乱的 , 如 第
字节有数据 , 然后空了
字节 , 第
字节才有下一个数据 , 这样内存的使用效率很低 , 这里就需要引入对齐操作 ; 将分页中的数据按照
字节对齐 , CPU 如果读取内存中的数据 , 可以直接读取数据 , 加载内存数据到高速缓存中 ; 如果没有对齐 , 还要进行地址操作 , 从间隔的内存中获取数据 ;
如果设置了
字节对齐 , 数据只有
字节 , 那么在数据后会空出一个字节 ;
二、db / dw / dd 指令
db 指令 , 用于声明 字符 / 字符串 常量 ;
代码语言:javascript复制# 声明字符
db 'a'
# 声明字符串
db 'a', 'b', 'c'
dw 指令 , 用于声明
字节短整型 ;
代码语言:javascript复制dw 0x1234
dd 指令 , 用于声明
字节长整型 ;
代码语言:javascript复制dd 0x12345678
上述 db , dw , dd 指令 , 都是伪指令 , 没有机器码与之对应 ;
三、nop 指令
nop 指令 是 空指令 , 没有参数 ; 该指令的作用是不做任何操作 ;
x86 汇编中 , nop 指令有对应的机器码 0x90 与之对应 ;
总结
align 字节对齐 , db 声明字符 / 字符串 , nop 空指令 cmp 比较 , test call 调用 , jmp 跳转 (a , b , c , g , l , o , p , s , z , e , n) lea , lds , les , lfs , lgs , lss , mov 移动 push , pop , pushf , popf , pushd , popd , pushad , popad , pusha , popa ret , retn , set add , sub , mul , div xor , not , shl , shr , sal , sar , rol , ror , rcl , rcr