1.cpu有N条地址总线,就可以寻找2的N次方的内存单元,体现寻址能力。
例:8086有20条地址总线,其有1Mb的内存。内存从低到高放,如数据信息1023H, 23H放在第一个,10H放在第二个,依次向下。
2.数据总线的宽度决定cpu与外界传输的速度,一次数据传送量。(地址中储存的数据)8088为8位,8086为16位。
3.控制总线是cpu向外传输读写操作。
4.二进制信息可以是指令也可是数据, 放在cs寄存器中的一定是指令。
5.汇编语言必须从cpu角度考虑问题,VC系统会自动优化,进行自增与双目运算+时出现错误,可以通过汇编语言来判断。
6.cpu由运算器,寄存器,控部器组成,ni内部依靠内部总线传输。
7.8086cpu所有寄存器都是16位,可以存放两个字节(8位),为一个字,如89A5H。8.8086的四个16位寄存器都可以分为两个独立的8位寄存器用(出于兼容性),如AX可以分位AH,AL。
9.汇编指令:
mov AX, 18 //AX=18(18是十进制数)
add AX ,8 //AX=AX+8
(十六进制满16进1)超过存放的值如进位值会先将舍去的值暂时放其它地方。注:标志寄存器。
10.地址加法器求得物理地址:16×段地址+偏移地址。8086和8088的cpu有20根地址总线,存储单元有1MB(有更大的内存),但由于数据总线为16位,一次性只能输送16位数据,因此用逻辑地址表示(段地址与偏移地址)。如2000H:1234H→21234H。
注:不同逻辑地址可能是同一物理地址,所以只有物理地址是唯一的,必须用其确定,见检测点3.1
11.cpu将内存分段,每段不低于64kb,即偏移地址的个数。
12.8086cpu有段寄存器有CS.DS.SS.ES。CS是代码段寄存器(存放段地址),IP是指令指针寄存器(存放偏移地址)。IP=IP+所取指令长度。内存移至IP指向的地方。
13.mov指令可以直接修改通用寄存器的值,jmp可以修CS:IP的值
JMP 3:1024H //物理地址变为1054H
JMP AX //逻辑地址中段地址不变,偏移地址变成AX所存放的内容。
14.电脑死机可能是进入死循环,即物理地址一直在循环。
15.下面的3条指令执行后,CPU几次修改IP?
都是在什么时候?最后IP中的值是什么?
mov ax, bx
sub ax, ax
jmp ax
执行了4次,三次为指令,第四次是jmp跳转ip值改变成0000H。
16.Debug是cpu调试工具,也可以编写代码。进入方法:按win+R进入dos页面键入cmd输入debug。
17.内存中字的存储:字型数据1234H与字节型数据是34H。内存中字存储可在连续的N,N+1的存储单元,可以称为N存储单元的字型数据。
18.mov指令的五种用法
mov AX, 18 //AX是通用寄存器,可以直接数据传送,但ip不可以,要通过JMP修改
mov AX.BX //寄存器与寄存器
mov DS,AX //段寄存与寄存器
mov [0],AX //寄存器到内存单元
mov Al,[0] //从内存单元到寄存器
(al存放一个字节,ax存放一个字)
19.mov,add,sub是有两个操作对象,jmp是只有一个操作对象。
20.栈的方式是先进先出
push es入栈:将一个新的元素放到栈顶
pop ds出栈:把栈顶元素拿出来
21.cpu中的寄存器[cs:ip]是指向当前执行指令的地址,[ss:sp]是指向栈顶元素的地址。
ss栈顶元素的段地址
sp栈顶元素的偏移地址
//进入一个字,sp=sp-2
22.当栈为空的时候,不存在栈顶元素,ss:sp指向栈最低部单元下面的单元,即该单元的偏移地址为栈的最底部的字(2个)单元的偏移地址+2。
23.获取数据的段地址,cpu从ds寄存器中获;获取代码的段地址,cpu从cs寄存器获得;获取栈的段地址,cpu从ss中获得。
24.ax清零的方式:
sub ax,ax
xor ax,ax
mov ax,0