码迷,mamicode.com
首页 > 其他好文 > 详细

第三章总结

时间:2018-11-06 20:52:05      阅读:155      评论:0      收藏:0      [点我收藏+]

标签:代码   pop   编程   解决   情况   bsp   组成   地址   inf   

一、字数据在内存中的存放

内存以字节为单位,划分为若干个单元

用16位寄存器来存储一个字的时候,由于内存单元是字节单元,所以一个字要用两个内存单元来存放。因此,产生了怎样存放字节的问题

可以用小端法解决,即:字数据的低位字节存放在低地址内存单元;字数据的高位字节存放在高地址内存单元

并且取低地址内存单元地址作为字数据地址

 

二、数据的传送

在8086CPU中,内存地址由段地址和偏移地址组成

DS寄存器,通常用来存放要访问数据的段地址

 

与数据传送有关的mov、add、sub指令

技术分享图片 技术分享图片技术分享图片

注意:8086CPU不支持将数据直接送入段寄存器的操作

 

[...]表示一个内存单元,[...]中的数字表示内存单元的偏移地址(默认地址在DS中)

 例:mov  ax,[1]      

表示ax ← ( (ds) × 16  + 1)

 

三、栈

「栈」是一个逻辑上的概念。可以将一段内存空间当作「栈」来使用

 

栈的特点是后进先出

 

栈中有栈顶和栈尾

栈顶: 最后入栈的字数据所对应的地址单元

栈底: 固定的一端,栈区最高地址单元的前一个单元

 

与栈有关的寄存器:SS和SP

SS: 栈段段寄存器,用于存放栈段的「段地址」

SP: 栈指针寄存器,用于存放栈顶的偏移地址

 

栈中的操作指令:

push(入栈)和pop(出栈)

 

push指令的执行步骤:

SP=SP-2  ,SS:SP指向当前栈顶单元

将ax中的内容送入SS:SP指向的内存单元处,SS:SP指向新的栈顶

 pop指令的执行步骤:

将SS:SP指向的内存单元处的数据送入ax中

SP=SP+2

 

栈顶超界问题的可能情况:

当栈满的时候,再使用push指令入栈

当栈空的时候,再使用pop指令出栈

 

四、段的概念

「段」是一个逻辑上的概念。 编程时,可根据需要指定一段内存区用作数据段、代码段或是栈段

用作数据段时,要把段地址→DS

用作栈段时,要把段地址→SS,栈顶偏移地址 → SP

用作代码段时,段地址→CS,要取的指令偏移地址→IP

第三章总结

标签:代码   pop   编程   解决   情况   bsp   组成   地址   inf   

原文地址:https://www.cnblogs.com/baixingyeblog/p/9917822.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!