0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

汇编语言中常见的两个指令

麦辣鸡腿堡 来源:盼盼编程 作者:盼盼编程 2023-10-09 10:10 次阅读

push和pop

push和pop是用来操作栈的2个指令。

push寄存器:将一个寄存器中的数据入栈。

pop寄存器:出栈用一个寄存器接收数据。

assume cs:codesg     ;cs寄存器指向该程序的首地址


codesg segment
    mov ax,1000H     ;将1000H送入寄存器ax,相当于ax=1000H
    mov ss,ax
    mov sp,0010H


    mov ax,001AH    ;将ax,bx赋值
    mov bx,001BH


    push ax
    push bx         ;将ax,bx入栈


    sub ax,ax   ;sub为减法指令,相当于ax=ax-ax
    sub bx,bx


    pop ax          //将栈顶的数据送入ax,pop也有mov指令类似的功能
    pop bx


codesg ends
end

该段代码将10000H~10000FH这段空间当栈,初始状态栈是空的。设置寄存器ax,bx的值,将ax,bx中的数据入栈,然后将ax,bx清零,从栈中恢复ax,bx原来的内容。

ax,bx,sp,cs为寄存器,ss为段寄存器。任意时刻CPU从CS*16+IP(这里cs和ip表示该寄存器的值)单元开始执行指令,所以设置cs:codesg。

任意时刻,ss*16+sp(这里ss和sp表示对应寄存器的值)对应的地址单元指向栈顶元素,所以程序里面设置ss=1000H,而不是ss=10000H。

下面看一下单步调试的结果:

图片

图片

r命令时查看当前寄存器的内容,t是单步执行命令。每一步的执行结果中,上面是对应寄存器的值,下面对应的机器指令是下一条将要执行的机器指令。

每执行一条指令你都看到对应寄存器的变化。最后一条pop bx指令由于图片大小原因,我没有截出来,所以最后一行的结果只是执行pop ax,而没有执行pop bx的结果。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 寄存器
    +关注

    关注

    31

    文章

    5310

    浏览量

    119983
  • 数据
    +关注

    关注

    8

    文章

    6882

    浏览量

    88811
  • 指令
    +关注

    关注

    1

    文章

    606

    浏览量

    35647
  • 汇编语言
    +关注

    关注

    14

    文章

    409

    浏览量

    35732
收藏 人收藏

    评论

    相关推荐

    请问arm的汇编语言中有没有什么指令可以达到上述效果的?

    问题:单片机中的汇编语言可以用ORG指定外部中断的标号地址比如:ORG0003HJMPINT_0那arm的汇编语言中有没有什么指令可以达到上述的效果
    发表于 06-27 05:02

    请问.C语言中可以嵌套汇编语言吗?

    .C语言中可以嵌套汇编语言
    发表于 09-20 05:55

    请问C语言中可以嵌套汇编语言吗?

    C语言中可以嵌套汇编语言
    发表于 09-25 05:55

    什么是汇编语言

    文章目录前言一、 汇编语言简介1.1 什么是汇编语言1.2机器语言简介1.3 汇编语言的演变史1.4 汇编语言的广义组成二、硬件与软件2.1
    发表于 02-24 07:01

    C语言中常见的数据溢出情况有哪些

    C语言中有几种基本数据类型呢?C语言中常见的数据溢出情况有哪些?
    发表于 02-25 07:55

    MCS-51单片机汇编语言中的伪指令

    摘要:讨论了MCS一51单片机汇编语言中的伪指令,并介绍若干主要的经常用到的伪指令使用方法。关键词:单片机;伪指令;ORG;EQU;DB;DW;BIT
    发表于 09-19 22:27 120次下载

    汇编语言详解

    汇编语言(Assembly Language)是面向机器的程序设计语言。   汇编语言中,用助记符(Memoni)代替操作码,用地址符号(Symbol)或标号(Label)代替地址码。这样用符号代替机器
    发表于 06-30 10:28 4118次阅读

    Assemble汇编语言设计技术

    汇编语言 设计程序,是所有程序语言的基本资源。我们不管你使用除汇编语言指令代码以外的程序语言编程,仅仅是编程表达、编程规则和变成环境的变化
    发表于 07-07 15:47 0次下载

    汇编语言学习课件_汇编语言程序组织

    第四章 汇编语言程序组织 4.1 汇编语言语句格式 4.2 汇编语言源程序结构 4.3 常用伪指令 4.4 汇编语言操作符
    发表于 12-31 10:41 0次下载

    C语言汇编语言混合编程方法和C语言中断处理方法

    C语言汇编语言混合编程方法和C语言中断处理方法,new
    发表于 01-06 14:36 36次下载

    51单片机汇编语言指令教程汇集1

    51单片机汇编语言指令教程通俗易懂 适合初学者。
    发表于 05-20 11:05 8次下载

    汇编语言指令

    汇编语言指令
    发表于 10-24 08:45 24次下载
    <b class='flag-5'>汇编语言</b>的<b class='flag-5'>指令</b>集

    汇编语言中常用的伪指令

    汇编语言中除常用指令外,还有一些用来对“汇编”过程进行控制、或者对符号、标号赋值的指令。在汇编过程中,这些
    发表于 11-11 10:03 7779次阅读
    <b class='flag-5'>汇编语言中常</b>用的伪<b class='flag-5'>指令</b>

    汇编语言:AVR架构】:常用指令集合

    汇编语言:AVR架构】:常用指令集合
    发表于 11-15 10:36 22次下载
    【<b class='flag-5'>汇编语言</b>:AVR架构】:常用<b class='flag-5'>指令</b>集合

    单片机汇编语言的结构/数据类型/汇编指令

    开发汇编语言是为了为机器级代码指令提供助记符或符号,汇编语言程序由助记符组成,因此应将它们翻译成机器代码。负责这种转换的程序称为汇编程序。汇编语言
    的头像 发表于 07-07 12:28 2898次阅读