1、8088CPU数据总线宽度为8,8086CPU的数据总线宽度为16位;
2、8086PC的地址总线为20位,内存地址空间为1MB;而80386CPU的地址总线宽度为32位,内存地址最大空间为4G。
3、8086PC机内存地址空间分布:
00000h | 中断向量表 |
主存储器地址空间 (RAM) |
00400h | BIOS*数据区 | |
00500h | DOS数据区 | |
| 系统程序 (DOS的驻留部分、驱动程序等) | |
| 可用空间 | |
A0000h | 图形模式视频缓冲区 |
显存地址空间 |
B0000h | 单色字符模式视频缓冲区 | |
B8000h | 彩色字符模式视频缓冲区 | |
C0000h | VGA BIOS地址 |
各类ROM地址空间 (写入无效) |
C8000h | ROM扩展、系统BIOS地址 | |
FFFFFh | 64K高端内存 | |
|
|
|
* 向C0000~FFFFF的内存中的写入数据操作是无效的;
4、8086CPU有14个寄存器:AX、BX、CX、DX、SI、DI、SP、BP、IP、CS、SS、DS、ES、PSW。
5、错误的MOV指令:
mov ax,bl | 在8位寄存器和16位寄存器之间传送数据 |
mov bh,ax | 在16位寄存器和8位寄存器之间传递数据 |
mov al,2000 | 8位寄存器最大可存放值为255的数据 |
add al,100H | 将一个高于8位的数据加到一个8位寄存器中 |
7、8086CPU加电或复位后,CS=FFFFH,IP=0000H;
8、CS和IP的值不能用MOV修改,需要使用jmp:jmp 段地址:偏移地址 或者 jmp 寄存器
9、debug常用操作:
命令名 | 功能 | 实现功能 | |
R | 查看、改变CPU寄存器内容 | R | R ax |
D | 查看内存中的内容 | D | D XXXX:YY [length] |
E | 改写内存中的内容 |
| E XXXX:YY 内容 |
U | 将内存翻译成汇编指令 |
| U XXXX:YY |
T | 执行一条机器指令 | T |
|
A | 以汇编格式写入机器指令 |
| A XXXX:YY |
Q | 退出debug | Q |
|
G | 执行到指定位置 |
| G 偏移地址 |
P | 执行int 21h/自动重复loop循环 | P |
|
10、MOV命令格式
MOV 寄存器,数据 |
MOV 寄存器,寄存器 |
MOV 寄存器,内存单元 |
MOV 内存单元,寄存器 |
MOV 段寄存器,寄存器 |
MOV 寄存器,段寄存器 |
MOV 内存单元,段寄存器 |
MOV 段寄存器,内存单元 ??? |
ADD 寄存器,数据 | SUB寄存器,数据 |
ADD 寄存器,寄存器 | SUB寄存器,寄存器 |
ADD 寄存器,内存单元 | SUB寄存器,内存单元 |
ADD 内存单元,寄存器 | SUB内存单元,寄存器 |
13、如果将10000H~1FFFFH作为栈段,初始栈是空的,则:SS=1000H,SP=0000H(FFFFH+1);