汇编基础
汇编的3类指令:
1)汇编指令:机器码的助记符,有对应的机器码。
2)伪指令:没有对应的机器码,由编译器执行,计算机并不执行。
3)其他符号:如+、-、*、/等,由编译器识别,没有对应的机器码。
汇编语言的核心是汇编指令,它决定了汇编语言的性质。
磁盘不同于内存,磁盘上的数据或程序如果不读到内存中,就无法被CPU使用。
CPU进行数据读写与外部器件的3类交互:
1)存储单元的地址(地址信息)。-> 地址总线
2)器件的选择,读或写的命令(控制信息)。-> 控制总线
3)读或写的数据(数据信息)。-> 数据总线
一个CPU有N根地址线,则可以说这个CPU的地址总线的宽度为N。这样的CPU最多可以寻找2的N次方个内存单元。
有多少根控制总线,就意味着CPU提供了对外部器件的多少种控制,所以,控制总线的宽度决定了CPU对外部器件的控制能力。
在CPU中:
1)运算器进行信息处理。
2)寄存器进行信息存储。
3)控制器控制各种器件进行工作。
4)内部总线连接各种器件,在它们之间进行数据的传送。
寄存器是CPU中程序员可以用指令读写的部件。程序员通过各种寄存器中的内容来实现对CPU的控制。
汇编指令
mov ax,18 将10送入寄存器AX
mov ah,78 将78送入寄存器AH
add ax,8 将寄存器AX中的数值加上8
mov ax,bx 将寄存器BX中的数据送入寄存器AX
add ax,bx 将AX和BX中的数值相加,结果存在AX中
sub bx,ax 相当于bx = bx - ax
当ax分为al和ah之后就分为两个独立的8位寄存器所以al产生的进位并不会存储在ah中。
在进行数据传递或运算时,要注意指令的两个操作对象的位数应当是一致的。即16寄存器不能add内存单元的数据(8位)
物理地址
CPU访问内存单元,要给出内存单元的地址。所有的内存单元构成的存储空间是一个一维的线性空间,每一个内存单元在这个空间中都有唯一的地址,我们将这个唯一的地址称为物理地址。
CPU通过地址总线送入存储器的,必须是一个内存单元的物理地址。
16位结构的CPU
运算器一次最多可以处理16位的数据。
寄存器的最大宽度为16位。
寄存器和运算器之间的通路位16位。
内存单元的地址在送上地址总线之前,必须在CPU中处理、传输、暂时存放,对于16位CPU,能一次性处理和传输、暂时存储16位地址。
给出物理地址的方法
CPU在访问内存时,用一个基础地址(段地址*16)和一个相对于基础地址的偏移地址相加,给出内存单元的物理地址,
乘16在16进制中相当于左移一位。
8086CPU : 基础地址 + 偏移地址 = 物理地址 (大多都是)
偏移地址16位,变化范围为0 ~ FFFFH,仅用偏移地址来寻址最多可寻64KB个内存单元。
在8086PC中,存储单元的地址用两个元素来描述,段地址和偏移地址。