Intel 8086 —— CPU硬件类

版权声明: https://blog.csdn.net/JRK_CSDN/article/details/84727475

陶土跟粪土没有什么两样

文章目录


- 第三章

8086内部结构

BIU(总线接口单元):完成CPU与存储器或I/O设备之间数据传送
EU(执行单元):与BIU并行工作,执行BIU发送的指令

8086寄存器

通用寄存器:AX 1 (累加器):存放运算结果,存低16位
      BX(基址寄存器):存放操作数在数据段的基址
      CX(计数器):多用于记录程序循环次数
      DX(数据寄存器):计算32位数据时,DX存高16位;存放I/O端口地址
      
      SP(堆栈指针寄存器):对PUSH和POP的堆栈指令加减2,SP始终指向栈顶
      BP(基址寄存器):存放操作数在堆栈段的基址
      SI(源变址寄存器):源串在数据段的偏移地址
      DI(目的变址寄存器):目的串在数据段的偏移地址

段寄存器: CS(代码段寄存器):存储 程序段 段地址,多不被ASM程序访问
      DS(数据段寄存器):存储 数据段 段地址,多用于数据寻址
      SS(堆栈段寄存器):存储 堆栈段 段地址,多用于保护现场
      ES(附加段寄存器):存储 程序段 段地址,存放 字符串操作时的目的操作串

控制寄存器:IP(指令指针寄存器):存储下一条指令在代码段的偏移地址,不能被ASM程序访问
      FLAGS(状态标志寄存器):16位用了9位,包括控制标志位状态标志位

FLAGS

状态标志位:CF(进位):运算时 最高位发生进位或借位时,CF = 12
      PF(奇偶):运算结果 低8位中含有偶数个1时,PF = 1
      AF(辅助进位):运算结果 低8位中低4位向高4位发生进位或借位时,AF = 1
      ZF(零):运算结果 为0时,ZF = 1
      SF(符号):运算结果 最高位为1时,SF = 1
      OF(溢出):运算结果 溢出时,OF = 1

控制标志位:TF(陷阱):用于设置断点,调试程序
      IF(中断):用于触发中断
      DF(方向):用于控制增减方向。STD可将DF置1,从高地址向下减;CLD可将DF置0,从低地址向上增

8086总线周期
  一个总线周期 = 4个时钟周期;T3和T4之间可插入1个或更多的TW等待周期


- 第四章

寻址方式

数据寻址 立即数寻址:MOV AX , 1090H
       寄存器寻址:MOV AX , BX
       存储器寻址:①直接:MOV AL , [4148H](不可段超越)
             ②寄存器间接:MOV AX , [SI] (或DI、BX)
             ③寄存器相对:MOV AL , [BP + TABLE]
                    MOV AL , [BP] + TABLE
                    MOV AL , TABLE[BP] (或BX、SI、DI)
             ④基址变址: MOV AX , [BP + SI]
                    MOV AX , [BX] [DI] (前基址(BX,BP) , 后变址(SI,DI) )
             ⑤基址变址相对:MOV AX , [BX + SI + COUNT]
                     MOV AX , [BX] [SI + COUNT]
                     MOV AX , [BX] [SI] + COUNT
                     MOV AX , [BX + SI] COUNT
                     MOV AX , [BX] [SI] COUNT
                     MOV AX , COUNT [BX] [SI]
       I/O端口寻址:①直接:IN AL , 21H (适用于8位端口寻址,小于0FFH)
              ②间接:MOV DX , 120H
                  OUT DX , AX (适用全部端口寻址,先送地址进DX)

基址
变址
位移量
BX、BP
SI、DI
COUNT(disp_8/disp_16)
BX 对应 DS段
BP 对应 SS段

地址寻址(程序跳转)

  1. 段内直接寻址:代码段 直接位移(IP + 指令位移量)。16位用 NEAR PTR 、8位用 SHORT (近调用)
  2. 段内间接寻址:数据段 取偏移地址位移(寄存器或存储器值 + IP)。 取字用 WORD PTR
  3. 段间直接寻址:代码段 取IP、CS。用 FAR PTR (远调用)
  4. 段间间接寻址:数据段 取IP、CS。取双字用 DWORD PTR

  1. AX可分为AH和AL,BX、CX、DX也相同,不再赘述 ↩︎

  2. 否则为0,不再赘述 ↩︎

猜你喜欢

转载自blog.csdn.net/JRK_CSDN/article/details/84727475
今日推荐