目录
概述
EU:负责执行指令完成两种操作:算数逻辑运算,计算存储器操作数的偏移地址
BIU:完成所有的总线操作
寄存器
AX
BX
CX
DX
SP,BP,SI,DI
IP
CS,DS,SS,ES
概述
8086和8088CPU内部基本相同,但它们的外部性能是有区别的。8086是16位数据总线,而8088是8位数据总线(对外操作),在处理一个16位数据字时,8088需要两步操作而8086只需要一步。
8086和8088CPU的内部采用16位字进行操作以及存储器寻址,两者的软件完全兼容,程序的执行也完全相同,然而由于8088要比8086有较多的外部存取操作,所以,对于相同的程序,它将执行的较慢。这两种微处理器都封装在相同的40脚双列直插组件(DIP)中。
考点:8086CPU从功能上可以分为两部分,即总线接口部件BIU(bus interface unit)和执行部件EU(execution unit)
EU不与外部总线(或称外部世界)相联,他只负责执行指令。而BIU负责从存储器或外部设备中读取指令和读/写数据,即完成所有的总线操作。这两个单元处于并行工作(流水线技术)状态,可以同时进行读/写操作。这样就可以充分利用各部分电路和总线,提高微处理器执行执行的速度。
8086/8088CPU结构
EU:负责执行指令完成两种操作:算数逻辑运算,计算存储器操作数的偏移地址
BIU:完成所有的总线操作
寄存器
AX
经常会作为默认寄存器来使用
例如MUL乘法指令,8位默认操作数就在AL寄存器中,16位默认操作数就在AX中
MUL BX; BX*AX MUL BL; BL*AL
AH 主要用在DOS系统功能调用 (输入输出)
INT 21 中断21 功能号就放在AH中
BX
AX,BX,CX,DX中只有BX可以存地址, 也就是只有它可以加中括号 [BX]
CX
汇编没法像c语言那样定义循环遍历, 通常会把循环次数放在CX中
DX
1:8086是16位,如果想组成32位,就需要DX寄存器
高16位数据放在DX中,低16位数据放在AX中
还是拿乘法举例
;结果为32位时候 MUL BX; BX*AX->DX(高16)AX(低16)
2:对端口进行操作
如果直接给出立即数只能为 00-FF 很小,大的就要放在DX中
OUT DX,AL
SP,BP,SI,DI
SP :进栈 减,出栈加
BP:始终指向栈底(好让SP可以找到其实位置,防止内存浪费)
其中 BP,SI,DI 都可以加中括号,作为地址
BX和SI,DI是一伙的,他们在DS
BP自己玩,它对应的是SS
在串操作中,才会区分SI和DI
IP
指令从哪里开始执行
联用的段寄存器是CS
CS,DS,SS,ES
CS 存指令的段地址,和它联用的偏移地址的寄存器只有IP
DS
DS 联用 BX,SI,DI
SS 联用 SP,BP
ES 串操作的时候使用
对应关系 段地址相当于楼号