陶土跟粪土没有什么两样
- 第三章
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)
|
|
|
|
|
|
BP 对应 SS段 |
地址寻址(程序跳转)
- 段内直接寻址:代码段 直接位移(IP + 指令位移量)。16位用 NEAR PTR 、8位用 SHORT (近调用)
- 段内间接寻址:数据段 取偏移地址位移(寄存器或存储器值 + IP)。 取字用 WORD PTR
- 段间直接寻址:代码段 取IP、CS。用 FAR PTR (远调用)
- 段间间接寻址:数据段 取IP、CS。取双字用 DWORD PTR