汇编第三章知识总结
一:提纲:
*1.掌握字数据在内存中的存储
2.掌握数据在CPU和内存单元之间的传送
3.理解寄存器DS的用途
4.掌握指令mov, add, sub的更多操作数形式
*5.理解栈的本质,掌握栈操作的指令push, pop
*6.掌握与栈相关的两个寄存器SS和SP
7.了解栈顶越界问题
*8.理解栈段、代码段、数据段的意义
二:分章总结:
1.
(1) 内存以字节为单位,划分为若干个单元。
(2) 计算机内数据存-取单位:
字节 (8bit)
字 (16bit)
(3)小端法:
① 字数据的低位字节存放在低地址内存单元;
字数据的高位字节存放在高地址内存单元;
② 取低地址内存单元地址作为字数据地址
2.
内存单元段地址:ds
偏移地址:[x]
3.
注意:mov修改不了cs,ip,最简单的:jmp 段地址:偏移地址
4.栈:
栈地址:ss:sp
操作指令:push(入),pop(出)
出栈:sp+2,逼近栈底
注意:
以下两种情形会发生「栈顶超界」问题:
当栈满的时候,再使用push指令入栈;
当栈空的时候,再使用pop指令出栈;
8086CPU不会自动考虑栈顶超界,需要程序员在编程设计时自己考虑。栈区长度不同,栈顶超界的具体情形也不同。
5.段总结:
(1) 「段」是一个逻辑上的概念。
编程时,可根据需要指定一段内存区用作数据段、代码段或是栈段。
(2) 用作数据段时,要把段地址→DS
用作栈段时,要把段地址→SS,栈顶偏移地址 → SP
用作代码段时,段地址→CS,要取的指令偏移地址→IP。但CS和IP的值不能使用mov改变。