学习笔记
《x86汇编语言:从实模式到保护模式》
https://www.jianshu.com/p/d481cb547e9f
标号
- 标号可以由
字母 数字 _ $ # @ ~ . ?
组成; - 标号必须以
字母 . _ ?
中的任意一个打头;
声明(Declare)
并不是处理器指令,只是编译器提供的汇编指令,称为伪指令(pseudo instruction)
-
DB declare byte
声明字节 -
DW declare word
声明字 -
DD declare double word
声明双字 -
DQ declare quad word
声明四字数据
转移指令 JMP
0xEA
:直接转移指令0xE9
:相对转移指令
near 仅仅用以指示相对量是16位的
c5-4.lst
1 00000000 E90200 jmp near start
2 00000003 55AA data db 0x55,0xaa
3 00000005 B80000 start: mov ax,0
4 00000008 EA05000020 jmp 0x2000:0x0005
e5-2.lst
行号 汇编地址 机器码 汇编指令 注释
98 0000012B E9FDFF infi: jmp near infi ;无限循环
-
0xFDFF
等于十进制数 65533
,本质等于jmp -3
- 当指令
jmp near infi
执行时,转移到的目标位置是IP+0xFFFD+3
,0xFFFD+3 = 0x 1 0000
,处理器只使用16位的偏移地址,保留16位的结果是0x0000
,导致处理器再次执行当前的指令,无限循环。