汇编第三章知识总结

一:提纲:

*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改变。

 

posted on 2018-12-17 21:22  scp507  阅读(236)  评论(0编辑  收藏  举报