汇编语言—常见汇编指令汇总

这篇具有很好参考价值的文章主要介绍了汇编语言—常见汇编指令汇总。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

(1)mov指令

mov    寄存器 ,数据                如:mov ax ,8
mov   寄存器,寄存器              如:mov ax,bx
mov   寄存器,内存单元          如:mov ax,[0]
mov   内存单元,寄存器          如:mov [0],ax
mov   段寄存器,寄存器          如:mov ds,ax

(2)add指令

add   寄存器,数据                    如:add  ax,8
add   寄存器,寄存器                如:add ax,bx
add   寄存器,内存单元            如:add ax,[0]
add   内存单元,寄存器            如:add [0],ax

(3)sub指令

sub 寄存器,数据                  如:sub ax,9
sub 寄存器,寄存器              如 sub:ax,bx
sub 寄存器 ,内存单元         如:sub ax,[0]
sub 内存单元,寄存器          如:sub [0],ax

(4)and指令

逻辑与指令,按位进行与运算
例如:  mov al ,01100011B
              and al ,00111011B

(5)or指令

按位或指令,按位进行或运算
例如:  mov al ,01100011B
              or al ,00111011B


(6)数据长度:8086CPU指令中,可以处理两种尺寸的数据,byte和word
        (6.1)通过寄存器名指明要处理的数据的尺寸。
        (6.2)在没有寄存器名存在的情况下,用操作符X ptr指明内存单元的长度,X在汇编语言中可以为word或者byte。例如:mov  word ptr ds:[0] , 1
        (6.3)有些指令默认了访问的是字单元还是字节单元,比如push指令只进行字操作
(7)div指令
        (7.1)除数:有8位和16位两种,在一个reg或者内存单元中
        (7.2)被除数:默认放在AX或DX和AX中,如果除数为8位,被除数为16位,默认在AX中存放;如果除数为16位,被除数为32位,在DX和AX中存放,DX存放高16位,AX存放低16位
        (7.3)结果:如果除数为8位,则AL存储除法操作的商,AH存储除法操作的余数;如果除数为16位,则AX存储除法操作的商,DX存储除法操作的余数
        div的格式如下:
                div reg 
                div  内存单元

(8)伪指令dd
        db(define byte)定义字节型数据,dw(define word)定义字型数据,dd(double word双字)定义双字型数据
(9)dup指令
        dup是一个操作符,在汇编语言中通db、dw、dd一样,也是由编译器是被处理的符号。它是和db、dw、dd等数据定义伪指令配合使用的,用来进行数据的重复。
        db 3 dup (0)       定义了3个字节,它们的值都是0,相当于db 0   0   0
        db 3 dup(0,1,2)  定义了9个字节,它们是0、1、2、0、1、2、0、1、2,相当于db 0,1,2,0,1,2,0,1,2
dup的使用格式如下:
        db 重复的次数  dup  (重复的字节型数据)
        db  重复的次数  bup  (重复 的字型数据)
        bd  重复的次数  bup  (重复 的双字型数据)

(10)push和pop指令

push  寄存器;//将一个寄存器中的数据入栈
pop 寄存器;//出栈,用一个寄存器接收出栈的数据
push 段寄存器;//将一个段寄存器中的数据入栈
pop  段寄存器;//出栈,用一个段寄存器接收出栈的数据

push和pop也可以在内存单元和内存单元之间传送数据:
push 内存单元;//将一个内存字单元处的数据入栈(栈操作都是以字为单位)
pop  内存单元;//出栈,用一个内存字单元接收出栈的数据

        指令执行时,CPU要知道内存单元的地址,可以在push、pop指令中只给出内存单元的偏移地址,段地址在指令执行时,CPU从ds中获取。
        (1)在SS、SP中存放栈顶的地址和偏移地址。提供入栈和出栈指令,它们根据SS:SP指示的地址,按照栈的方式访问内存单元。
        (2)push指令的执行步骤:①SP=SP-2:②向SS:SP指向的字单元中送入数据。
        (3)pop指令的执行步骤:①从SS:SP指向的字单元中读取数据;②SP=SP+2

        (4)任意时刻,SS:SP指向栈顶元素。
        (5)8086CPU只记录栈顶,栈空间的大小我们要自己管理。
        (6)用栈来暂存以后需要恢复的寄存器的内容时,寄存器出栈的顺序要和入栈的顺序相反。        
        (7)push、pop实质上是一种内存传送指令,注意它们的灵活应用。


 文章来源地址https://www.toymoban.com/news/detail-497894.html

到了这里,关于汇编语言—常见汇编指令汇总的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ARM64 寄存器、常用汇编指令收集

    ARM64 有34个寄存器,包括31个通用寄存器、SP、PC、CPSR。 寄存器 位数 描述 x0-x30 64bit 通用寄存器,如果有需要可以当做32bit使用:WO-W30 FP(x29) 64bit 保存栈帧地址(栈底指针) LR(x30) 64bit 通常称X30为程序链接寄存器,保存子程序结束后需要执行的下一条指令 SP 64bit 保存栈指针,使用

    2023年04月20日
    浏览(44)
  • ARM汇编寄存器和常用指令详解

    对于32位及其以下的ARM处理器来说,函数调用规则如下: 父函数与子函数的入口参数以此通过 R0~R3 这4个寄存器传递。 父函数在调用子函数前先将子函数入口参数存入 R0~R3 寄存器中,若只有一个入口参数则使用 R0 寄存器传递,若有2个入口参数则使用 R0 和 R1 寄存器传递,以

    2024年02月03日
    浏览(53)
  • 一、1.汇编指令、寄存器和寻址方式

    立即数:可以立即在一条机器指令后找到具体数值的数,如内存中00位写着加指令,01位写着1100_1111,意思就是将1100_1111(十进制207)加到某处,反之可以表示数据的地址。 低端字节序:16位寄存器数据存入内存(内存单位为8位),寄存器低位存入内存低位(如00)高位存入内

    2024年02月14日
    浏览(56)
  • 51单片机汇编语言指令大全

    参考链接 https://blog.csdn.net/weixin_45702442/article/details/115874162 https://blog.csdn.net/acslsr/article/details/106881712 在这里稍作终结,方便复习 51系列单片机按照功能分科分为5大类 数据传送类指令28条; 算数操作类指令24条; 逻辑运算类指令25条; 控制转移类17条; 位操作类17条。 MOV A,R

    2024年02月07日
    浏览(44)
  • (十)汇编语言——CALL和RET指令

    相信大家肯定在C语言里面接触过函数这个概念,或者是一些高级语言里面的方法,那么汇编语言有没有这样类似的概念呢,答案是当然的,接下来就让我们来介绍一下汇编的模块化程序设计。 这个CALL指令呢,我们是第一次接触,它主要的作用就是调用子程序,实质上就是进

    2024年02月05日
    浏览(41)
  • 汇编语言——第10章 CALL和RET指令

    目录 引言 10.1 ret和retf 检测点10.1 10.2 call指令 10.3 依据位移进行转移的call指令 检测点10.2  10.4 转移的目的地址在指令中的call指令 检测点10.3  10.5 转移地址在寄存器中的call指令 检测点10.4  10.6 转移地址在内存中的call指令 检测点 10.5 10.7 call和ret的配合使用 10.8 mul指令 10.9 模块

    2023年04月16日
    浏览(37)
  • C语言代码的x86-64汇编指令分析过程记录

    先通过Xcode创建一个terminal APP,语言选择C。代码如下: 在return 0处打上断点,并且Xcode菜单里选择Debug|Debug Workflow|Always Show Disassembly,点击运行。这时候断点会跳到汇编代码里,得到汇编代码如下: 首先介绍下面会用到的几个寄存器: rip : 程序计数寄存器 rsp : 栈指针寄存器

    2024年02月14日
    浏览(38)
  • 用ARM进行汇编语言编程(4)带有分支的循环和条件指令执行

    ARM 编程模拟器网站地址: 在arm里也有和高级语言一样的for和while循环,可以根据条件来判断是否执行 首先我们创建一个data标签,然后在里面写一个分支,存放一些数值,然后使这些存放的数值依次相加 然后我们要将list加载到内存里 然后使用直接寻址,将r0寄存器里的值放

    2024年02月06日
    浏览(51)
  • 汇编语言实验8:BIOS/DOS功能调用与宏指令程序设计

    掌握汇编语言程序设计的基本方法和技能 掌握汇编语言源程序的编辑汇编连接和执行的完整过程 通过上机操作理解宏定义、宏调用、宏展开的概念,熟练运用宏功能编写程序 掌握BIOS/DOS基础功能的实现调用方法 理解常用的DOS功能调用的基本使用,能熟练运用1号,2号,9号,

    2024年02月03日
    浏览(67)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包