汇编相关基础知识及应用

        C文件到可执行文件的四个步骤

1.预编译

        先与编译器对源代码进行处理,对其中的伪指令(#开头的指令)和特殊符号进行处理

2.编译

        确认所有的指令都符合语法规则,将其翻译成汇编代码
        优化处理是编译系统中一项比较艰深的技术

3.汇编

        把汇编语言翻译成目标机器指令,每一个C语言源程序,都会经过这一处理得到相应的目标文件
        目标文件组成:代码段、数据段

4.链接

        上一步生成的目标文件并不能立即被执行,不同的目标文件还存在函数调用的问题
        链接就是将有关的目标文件彼此相连接,又分静态链接、动态链接

5.一些常见的汇编指令

       a. MOV: 数据传送指令,用于将一个值从一个位置移动到另一个位置。

                MOV DEST, SRC

        b.ADD: 加法指令,用于将两个操作数相加并将结果存储在目标位置。

                ADD DEST, SRC

        c.SUB:减法指令,用于从目标操作数中减去源操作数并将结果存储在目标位置。

                SUB DEST, SRC

        d.MUL:乘法指令,用于将目标操作数与源操作数相乘并将结果存储在目标位置。

                MUL SRC

        e.DIV:除法指令,用于将目标操作数除以源操作数并将结果存储在目标位置。

                DIV SRC

        f.JMP:无条件跳转指令,用于将程序的执行流程跳转到指定的地址。

                JMP LABEL

6.指令格式

        操作码 [操作数A],[操作数B]

        操作码:执行何种操作;

        操作数A:目标操作数;

        操作数B:源操作数;

7.寻址方式

        a.立即寻址

        操作数直接包含在指令中,作为指令的一部分。这种操作数称为立即数,可以是16位或8位。例如,MOV AX, 1234H 中,1234H 就是立即数。

        b.寄存器寻址

        操作数存储在CPU内部的寄存器中。指令中直接指定寄存器号。例如,MOV AX, BX 中,操作数在BX寄存器中。寄存器寻址速度通常很快,因为不需要访问内存。

        c.直接寻址

        操作数存储在内存中,指令直接包含操作数的有效地址。地址通常由段寄存器(如DS)和指令中给出的偏移量组合而成。例如,MOV AL, [1234H] 中,操作数的地址是 DS:1234H

        d.寄存器间接寻址

        操作数的有效地址存储在寄存器中,而不是直接在指令中。例如,MOV AX, [BX] 中,操作数的地址在BX寄存器中。

        e.寄存器相对寻址

        操作数的地址由一个指定的寄存器内容加上指令中给出的位移量计算得出。这种寻址方式常用于数组或循环操作。

        f.基址寻址/变址寻址

        操作数的地址由一个基址寄存器或变址寄存器的内容加上一个偏移量计算得出。例如,MOV AX, [BX+10H] 中,操作数的地址是 BX + 10H

        g.基址变址寻址

        操作数的地址由基址寄存器和变址寄存器的内容以及可能的位移量共同计算得出。例如,MOV AX, [BX][SI] 中,操作数的地址是 BX + SI

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bigger_One

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值