您的位置:首页 > 其它

第三章 寄存器(内存访问)

2012-03-11 17:00 218 查看
1、字型数据考虑两个字节,本高字单元+本字单元

2、DS和[address]:DS存放要访问数据的段地址。

3、mov指令可以完成两种传送功能:1.将数据直接送入寄存器;2.讲一个寄存器中的内容送入到另一个寄存器。除此之外,mov指令还可以将一个内存单元中的内容送入到一个寄存器。例mov al,[0]。执行指令时,8086CPU会自动取DS中的数据为内存单元的段地址。

4、如何把1000H送入DS?8086CPU不支持将数据直接送入段寄存器的操作,DS是一个段寄存器(硬件设计问题)。数据——通用寄存器——段寄存器。

5、如何将al中的数据送入内存单元10000H?

6、[0]何时是一个字,何时是一个字节?

7、mov 寄存器 段寄存器

8、如果是段寄存器DS指向的那就是数据段,存放数据;如果是段寄存器CS指向的那就是代码段,存放的是代码;如果是段寄存器SS指向的那就是栈段,存放的是栈。

9、栈:基本操作进栈(push)和出栈(pop)。例push ax:将寄存器ax中的数据送入栈中;POP ax:从栈顶取数据存入ax中。

10、如何知道栈顶位置?两个寄存器:段寄存器SS 存放栈顶的段地址,寄存器SP 存放栈顶的偏移地址,任意时刻,SS:SP指向栈顶元素,不断更新。

11、栈空的时候SP指向最高地址的下一位地址。

12、C语言函数调用,变量调用与栈有关,这个处理系统自动处理。调用函数的时候将自己的变量全部入栈,调用完成后出栈。

13、pop取数据只移动指针,然后复制数据,不会删除数据。

14、栈顶越界

15、PUSH和POP格式:后面可以加1.通用寄存器;2.段寄存器;3、内存单元。

16、xor ax ax,将ax置零(异或)

17、用栈存储数据出栈顺序和入栈顺序相反。

18、POP:先读取SS:SP的值,后SP加二;PUSH:先SP的值减二,然后传送数据。都是修改SP的内容,栈顶的变化范围最大为0——FFFFH。

19、栈段:起始地址为16的倍数,栈为空的时候sp=栈底+1。一个栈段最大容量是64KB。

20、如果栈满,再次压栈,栈顶将环绕,覆盖了原来栈中的内容。

21、栈早期是用来保存函数的返回值。现在栈是用来临时存放数据的。栈是为了函数的存在而存在的。。

检测点:

1.mov ax, 2000

mov ss, ax

mov sp, 10H

2.mov ax,1000H

Mov ss,ax

Mov sp 0H

仔细观察图3.19的实验过程,然后分析:为什么2000:0~2000:f中的内容会发生改变?

因为用T指令进行调试时,会产生中断。而为了保护现场,CPU则先将标志寄存器进栈、再把当前CS的值进栈,最后将IP的值进栈。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: