CPU内:
运行器进行信息处理;寄存器进行信息存储;控制器控制各种器件进行工作;内部总线连接各种器件,进行信息传输。注:不同的CPU寄存器的个数、结构是不同的。
A、寄存器
寄存器是程序员主要能进行读写操作的部件。通过寄存器来实现对CPU的控制。8086所有的寄存器都是16位(16个二进制位)的,可以存放2个字节。
8086总计14个寄存器:AX、BX、CX、DX、SI、DI、SP、BP、IP、CS、SS、DS、ES、PSW(FLAGS)
通用寄存器:(通常用来存放一般性的数据)
AX、BX、CX、DX又称数据寄存器。数据寄存器可以一分为二、变成两个8位的寄存器。前面的AH为高八位,后面的AL为低八位。AX又称累加器、BX基址寄存器、CX计数寄存器、DX数据寄存器。
SP、BP、DI、SI又称地址指针变址寄存器。只能按16位寄存器。SP栈顶、BP栈内数据地址,是对堆栈的操作。 IP指向的是指令地址的段内地址偏移量。IP指向当前需要取出的指令字节。IP取出后自动加一。转移返回能对IP进行改变。 标志寄存器FLAGS
用于控制运算的状态。如:加法溢出等。
段寄存器(代码段、数据段、堆栈段)代码(指令):计算机执行何种操作。
数据(字符、数值):程序执行的对象。
堆栈:保存返回地址和中间结果。
物理地址的寻址:段地址 x 16 + 偏移地址====物理地址:基础地址+偏移地址
注意:不能短地址加偏移地址不能参生溢出。
8086CPU内部寄存器皆为16位,而8086一次寻址能力可达1M=2^16=655366(64k)=16位地址总线
即:引入分段(获得20位地址),一个段是存储器的一个逻辑单位,长度可达64k,每个段是连续的存储空间。而地址空间是一个20位的地址。所以“段地址 x 16”...
几个段可以互相重叠,也可以指向同一个空间。
几条汇编指令:
mov————右边的放入左边。
add————两个相寄存器相加然后把结果放到左边的寄存器中。
sub————两个相寄存器相减然后把结果放到左边的寄存器中。
栈:PUSH入栈、POP出栈。(先进后出,就进先出。)
组合:
SS:SP 堆栈段
DS:[address] 数据段
CS:IP 代码段
B、内存寻址方式
[bx]
"[]"—代表了内存地址单元
loop
代表循环:happy代表循环点,cx代表循环次数(每次loop时,cx自动减一,当cx等于0时退出循环)
mov cx,9 mov ax,2 happy: add ax,ax loop happy
内存寻址方式
inc—自动加1
[]、bx、si、di、bp
EA:
SA:
错误的寻址方式:
si + di bx + bp
