(三)我学汇编的那几年-栈篇

此篇文章是对应8086系统,有出入请自查。

栈-stack 通过字义就可以感觉出来,这玩意就像客栈一样。是临时储存和交换数据
用的。

介绍内存

谈轮栈之前。咱们还得先熟悉一个东东。
它就是内存。
毋容置疑。这货就是咱们常说的内存(Ram)。

每一块内存的位置都是对应一个内存地址。
一般这个地址都是用16进制来表达的。
0x400H 这就是一个内存地址
每一个内存储存两个bit(01)
1字 = 8字节 = 16bit

内存就好比是一段路。这个路上用很多电线杆。
每个电线杆就是一个内存地址。我们要取出这个电线杆附近的数据。
就需要把地址指向这里。

现在说说地址。

一般地址都是采用方式:段地址 * 16 + 偏移地址
虽然现在的cpu已经不是16位。但是偏移地址这个还是寻址使用的手段。

咱们说说短地址为什么乘以16。

比如咱们小区。用一栋楼号牌 是200.。
这时候有个人来找这栋楼。但是他每次是能发出两个字。
要不是20 ,要不是00。咱们要告诉保安找那栋楼怎么办呢。
接下来就是见证奇迹的时刻
乘法:咱们先说20 然后 说x,然后说10。
20 x 10 = 200.

虽然这样说不够确切。但是可以更好的解释。

8086的cpu只有16根信号线。所以每次只能发送16位。超过这个就会被过滤掉多余的信号。

如果咱们取17位的数据。这个17就会丢失掉。

聪明的大神就领悟到了这个神圣的乘法。
虽然咱们的cpu已经64位了。
但是这个老传统并没有取缔。这个方式也可以更好的保护数据。不被直接查看的。

咱们再来聊一聊偏移地址:

还是那个小区。
还是那位只能发两个字的先生。他这次来要找202。
这次怎么办呢:
他需要这么做:
先说20 然后 x ,然后 10 ,然后 + ,然后02。
20 x 10 + 2 = 202
这个200就是咱们的物理地址。

咱们cpu寻找数据并不是直接修改物理地址。
他每次修改的事偏移地址。也就是大家常说的ip(这个不是互联网的那个撒)

他要找205偏移地址就是5。
这个是cpu来自动计算的。咱们了解就好。不用太刻意。

通过以上解释。得到的结论就是储存4个bit就需要两个内存地址。
接下来咱们来看栈的指令。

push 入栈 : 添加数据
pop 出栈 : 取出数据

栈的储存方式是先入后出,先存进去的最后出来。

说到取数据。咱们肯定要想到一个就是寄存器。
ss寄存器就是表达咱们的栈的
sp就是咱们的栈顶。指到哪里就在哪里开始储存数据。

既然起了个栈这么吊炸天的名字。肯定不能和其他寄存器一样。

他的储存方式就是不同。他是从高地址往低地址储存的。

寄存器介绍

普通的寄存器都是从低到高的。
咱们举个例子吧:
还是那个小区,它的名字叫做栈。
它有十栋楼房。
1,2,3 ····,9,10
有人买房子。这个销售只能从第十栋开始出售。
然后出售第九栋。
这个就是push操作。
反之。如果有人想出售房子。
就得从第一栋开始。你不能插队。先买的最后才能卖。
这个就是pop操作。

接下来来一段代码:
      mov ax,1000H; 赋值给ax寄存器
      
      mov ss,ax ;指定ss栈寄存器地址
      
      mov ax,1006H ; 赋值给ax寄存器
      
      mov sp,ax ;开辟一个栈。空间地址为1000 - 1006
      
      mov ax,8888H; 赋值是ax寄存器
      push ax  ;赋值给栈
      pop bx ;取出第一个值赋值给bx
最后说明

mov是赋值指令。
在汇编里面不可以直接给寄存器指定地址。
必须通过给段内存赋值然后执行此地址即可。
ss地址可以理解为结束地址。因为栈是从高往低储存。如果你这个地址
高于sp地址(栈顶)内存就会出现泄漏。这个比较危险。

通俗来讲:

起始地址(ss) - 结束地址(sp)
但是sp是移动的。每增加数据就会移动一次。
超过sp或低于ss都会内存泄漏。
再强调一下:栈是从高往低储存。
有哪里不足的地方希望补充下。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,392评论 5 470
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,258评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,417评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,992评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,930评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,199评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,652评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,327评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,463评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,382评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,432评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,118评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,704评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,787评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,999评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,476评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,057评论 2 341

推荐阅读更多精彩内容

  • 汇编语言的一些注意点 汇编语言是直接在硬件之上工作的编程语言。 CPU(Central Processing Un...
    BackSpace8阅读 1,757评论 0 1
  • 王爽汇编全书知识点大纲 第一章 基础知识 机器语言 汇编语言的产生 汇编语言的组成 存储器 cpu对存储器的读写 ...
    2c3ba901516f阅读 2,402评论 0 1
  • 如何将句子写具体-魔鬼训练 1、国旗飘扬。 鲜艳的国旗随风飘扬。 2、小朋友去上学。 许多小朋友背着书包...
    哆说阅读 746评论 0 1
  • [原创]南苏猫宁 —1— 单人房 双人床 麦子在迟疑了30秒之后就跟着江小水进了酒店。 然后,什么都没有发生。 后...
    南苏猫宁阅读 535评论 0 5
  • 准备 刚从千岛湖回来,就要去青海了,真是没有停歇啊,当然,旅游是我的爱好,我还是非常兴奋滴...
    余科熹阅读 551评论 0 2