01_days
CPU其实只算是个集成电路板,它只能忠实地执行电信号给它的指令,输出相应的电信号。也就是说,其实CPU只是个乖乖执行命令的笨蛋。
人们发现把二进制的01与电信号的开关对应起来,CPU就从一个处理电信号的机器摇身一变为一个神奇的二进制数计算机。给文字进行编码,就把文字也转换成二进制了,从而让CPU实现对文章的处理等等。
汇编语言:
DB define byte, 往文件中直接写入1个字节的指令
DW define word 定义字 16位,也就是两个字节
DD define double word 定义32位
DB可以直接用来写字符串,在写字符串时,汇编语言会自动地查找字符串中每一个字符所对应的编码,然后把它们一个字节一个字节地排列起来。
DB "HELLOIPL"
$是一个变量,表示现在这一样的字节数。主打一个灵活性
启动区:软盘的第一个扇区称为启动区,如果计算机确认了第一个扇区的最后两个字节正好是55AA,就认为这个扇区的开头是启动程序,并开始执行这个程序
IPL:initial program loader
02_days
MOV:赋值
MOV AX, 0 ;AX=0
MOV SS, AX ;SS=AX
AX accumulator, 累加寄存器
CX counter,计数寄存器
DX data,数据寄存器
BX base,基址寄存器
SP stack pointer
BP base pointer
SI source index
DI destination index
这些寄存器都是16位寄存器,可以存储16位的二进制数。X表示拓展extend的意思,也就是说之前的CPU寄存器都是8位的,现在变成了16位,扩展了一倍,所以加了个X,表示自己很了不起。这8个寄存器合起来也 一共才区区16个字节。
另外,CPU还有八个八位寄存器,注意不是新寄存器,而是从上面八个寄存器中拆出来命名的。
AL 累加寄存器低位
CL 计数寄存器低位
DL 数据寄存器低位
BL 基址寄存器低位
AH 累加寄存器高位
CH 计数寄存器高位
DH 数据寄存器高位
BH 基址寄存器高位
有人可能会说,嘿,我的电脑是32位的,这样就能以32位为单位来处理数据了吧,那32位的寄存器在哪?
EAX, ECX, EDX, EBX, ESP, EBP,ESI, EDI