汇编 - 栈

  • 栈:是一种具有特殊的访问方式的存储空间(后进先出, Last In Out Firt,LIFO)


  • 8086会将CS作为代码段的段地址,将CS:IP指向的指令作为下一条需要取出执行的指令
  • 8086会将DS作为数据段的段地址,mov ax,[address]就是取出DS:address的内存数据放到ax寄存器中
  • 8086会将SS作为栈段的段地址,任意时刻,SS:SP指向栈顶元素
  • 8086提供了PUSH(入栈)和POP (出栈)指令来操作栈段的数据
    比如push ax是将ax的数据入栈,pop ax是将栈顶的数据送入ax

push ax


思考

栈顶越界-push

栈顶越界-pop

栈顶越界

push - pop

  • 在8086中,push、pop操作的数据都是2个字节的

练习

栈段

  • 对于8086来说,在编程时,可以根据需要,将一组内存单元定义为一个段

  • 我们可以将一组长度为N(N<=64KB)、地址连续、起始地址为16倍数的内存单元,当做栈空间来使用,称为栈段。比如用10010H ~ 1001FH这段内存空间当做栈来使用,我们就可以认为10010H ~ 1001FH是一个栈段,它的段地址为1001H,长度为16字节

  • 如何使用push、pop等栈操作指令访问我们定义的栈- 段?
    用SS存放栈段的段地址,用SP存放栈顶的偏移地址

段的总结

练习


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 8086汇编 本笔记是笔者观看小甲鱼老师(鱼C论坛)《零基础入门学习汇编语言》系列视频的笔记,在此感谢他和像他一样...
    Gibbs基阅读 37,636评论 8 114
  • 一、栈 栈: 是一种具有特殊的访问方式的存储空间(后进先出,Last in Out First) 8086 会将C...
    Rui哥阅读 6,707评论 0 1
  • 越底层越单纯!真正的程序员都需要了解的一门非常重要的语言,汇编! 机器语言 我们所写的语言最终安装在机器上的是什么...
    瑞阳gg阅读 3,813评论 0 0
  • 编程语言的发展 机器语言由0和1组成 汇编语言(Assembly Language)用符号代替了0和1,比机器语言...
    阿凡提说AI阅读 9,756评论 0 15
  • 萨摩耶犬起源于17世纪俄罗斯北极地区,它颜值高、气质佳、身形健硕、行动矫捷、富有冒险精神,基于它的特性,探险家们都...
    好睐鼠阅读 4,400评论 0 4