美文网首页汇编
汇编(六)

汇编(六)

作者: 小小鱼类 | 来源:发表于2017-07-22 16:46 被阅读11次

  • 栈:是一种具有特殊的访问方式的存储空间(后进先出, 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

**push ax 的执行由以下两个步骤完成 **

  • SP = SP - 2,SS:SP 指向当前栈顶前面的单元,以当前栈顶前面的单元为新的栈顶;
  • 将ax中的内容送入 SS:SP 指向的内存单元处,SS:SP此时指向新栈顶[图片上传中。。。(3)]

pop ax

pop ax

pop ax的执行过程和push ax刚好相反,由以下两步完成

  • 将SS:SP指向的内存单元处的数据送入ax中;
  • SP=SP+2,SS:SP 指向当前栈顶下面的单元,以当前栈顶下面的单元为新的栈顶
image.png

思考

如果将10000H 到 1000FH 这段空间当做栈,初始状态栈是空的,此时,SS=1000H,SP=?思考后看分析

  • 栈空,SS:SP执行栈控件最高地址单元的下一个单元


    结果

栈顶超界

push

**
pop**


image1 image2
image3

push&pop汇编

image3

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

练习

编程:
(1)将10000H到1000FH 这段空间当做栈,初始状态栈是空的;
(2)设置AX=001AH,BX=001BH;(3)利用栈,交换AX和BX中的数据.

mov ax,1000H
mov ss,axmov sp,0010H
mov ax,001AH
mov bx,001BH
push ax
push bxpop ax
pop bx

栈段

  • 对于8086来说,在编程时,可以根据需要,将一组内存单元定义为一个段
  • 我们可以将一组长度为N(N<=64KB)、地址连续、起始地址为16倍数的内存单元,当做栈空间来使用,称为栈段。比如用10010H1001FH这段内存空间当做栈来使用,我们就可以认为10010H1001FH是一个栈段,它的段地址为1001H,长度为16字节
  • 如何使用push、pop等栈操作指令访问我们定义的栈段?
    • 用SS存放栈段的段地址,用SP存放栈顶的偏移地址

段总结

练习

练习1 答案 练习2 答案

编写完整的汇编程序...

文章链接:http://www.jianshu.com/p/4dcf269f6634

只为收藏,不成敬意!

相关文章

  • <安全攻防之汇编基础>

    &关于汇编基础请点击 <汇编一> <汇编二> <汇编三> <汇编四> <汇编五> <汇编六> <汇编七> <汇编八...

  • 汇编六

    8086伪指令 db (define byte) 字节 dw (define word) 字 示例代码: 除了...

  • 汇编(六)

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

  • 汇编(六)

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

  • 汇编(六)

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

  • iOS逆向-汇编(六)

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

  • iOS逆向学习(arm64汇编入门)

    iOS汇编 iOS汇编语音有很多钟。常见的有8086汇编、arm汇编、x86汇编等等。 arm汇编 iOS的架构从...

  • ARM64汇编入门 - 汇编基础

    ARM64汇编入门 - 汇编基础ARM64汇编入门 - 汇编基础

  • 逆向笔记(三)-汇编指令

    汇编指令 针对汇编来说,汇编指令是必须了解的,而且汇编中汇编指令比较多,但是每一个汇编指令对应的机器码是固定不变的...

  • 汇编语言如何与高级语言混编

    汇编混编的两种方式(内联汇编 和 外链汇编) 内联汇编 asm();这是内联汇编,编译器可以直接运行asm ( 汇...

网友评论

    本文标题:汇编(六)

    本文链接:https://www.haomeiwen.com/subject/njuukxtx.html