1. 实模式下的寄存器为16位宽。
2. 代码段寄存器:CS,数据段寄存器:DS,栈段寄存器:SS
3. 通用寄存器:AX,BX,CX,DX,SI,DI,BP,SP
4. 通用寄存器惯用法:ax:累加器;bx:基址寄存器;cx:计数器,控制循环次数;dx:数据寄存器;si,源变址寄存器;di,目的变址寄存器;sp,栈指针寄存器;bp,基址指针。
5. cs:ip表示下一条指令的地址,cs表示代码段寄存器,ip为段位偏移地址;ds:bx表示访问内存时地址表示方式,默认情况下内存寻址的段基址为ds,即不指明段基址的情况下。
6. 实模式下CPU的内存寻址方式:直接寻址,寄存器寻址,内存寻址。内存寻址又分为直接寻址和基址寻址,变址寻址,基址变址寻址。基址寻址表示用bx或bp作为段内偏移地址的基址,之后地址的变化以它为基础,如mov ax, [bx+1],其中bp长用于栈中数据访问,bx默认段寄存器为ds,bp默认段寄存器为ss; 变址寻址则改bx和bp为用di和si,默认段寄存器为ds。
7.函数调用时,先push操作将被调用函数入参压入栈中,再push操作将返回地址cs:ip或ip(取决于call指令)压入栈中,再bp压入栈中保存,再令bp为sp,此时bp为调用者栈与被调用者栈的分界线,通过bp便可以以访问数组的方式访问栈内数据。
8.实模式下的ret,两种使用方式:ret近返回,retf远返回,前者只从栈中恢复两个字节到ip中,后者从栈中恢复四个字节到cs:ip中,即后者表示被调用者与调用者不在一个段内
9实模式下的call,有四种使用方式:16位相对近调用 call near 立即数地址,near省略,编译器自动判断
16位绝对间接近调用 call 寄存器寻址或call 内存寻址
16位直接绝对远调用 call far 段基址(立即数):段内偏移(立即数)
16位间接绝对远调用 call far 内存寻址
10 实模式下的jmp,无条件跳转,五种使用方式: 相对短转移 jmp short 立即数(一字节), short可省略,编译器判断是short还是near
相对近转移 jmp near 立即数(二字节)
间接绝对近转移 jmp near 寄存器寻址或者内存寻址
直接绝对远转移 jmp 段基址(立即数):段内偏移(立即数)
间接绝对远转移 jmp far 内存寻址
11 标志寄存器
12 有条件转移 jxx以标志寄存器中的状态为条件做判断是否跳转。