打印
[开发资料]

汇编的指令语句的格式

[复制链接]
73|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
szt1993|  楼主 | 2025-5-18 22:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
2.1 指令语句的格式
指令语句是指与一条机器指令相对应的代码语句,其一般格式如下:


[标号:]  操作码 [操作数] [;注释]

语法解释:

标号是指程序员为这一条指令语句所起的名字。大多数指令语句都不需要标号,只有一些特殊的指令语句需要用到;
操作码指定本条指令的操作类型,所有的操作码都是保留字;
操作数可以是0-3个,有多个操作数时彼此之间用逗号分隔。右边的操作数为源操作数,最左边的操作数为目的操作数。
2.2 操作数的分类
操作数可以分为寄存器操作数、立即数操作数和存储器操作数三类。关于寄存器操作数,需要注意的是寄存器IP和FLAGS不能作为操作数出现在指令中;关于立即数操作数,需要注意的是立即数操作数不能用作目的操作数。下面着重介绍存储器操作数,先介绍两点基础知识:

存储器操作数表示对一个存储器单元进行访问,需要给出这个存储单元的段基址和偏移地址两部分才能进行;
大多数情况下,指令将自动使用DS寄存器中的内容作为操作数的段基址,因此,编写汇编语言源程序时首先要做的事情就是把数据段的段基址放入DS寄存器。;
既然我们已经设置好了段基址,那么只需要有偏移地址即可找到内存中正确的存储单元。给出偏移地址的方法有直接和间接两种方法。直接法是指直接在指令中写出存储单元的偏移地址,间接法则是把存储单元的偏移地址事先装入一个寄存器中,需要时通过这个寄存器中的值来找到这个存储单元。

(1)直接法语法:


MOV  目的寄存器,  变量名[+字节偏移量]

此语句的作用是以DS寄存器中的内容作为段基址,以数据段中指定变量名的偏移量(与字节偏移量)的和作为偏移地址,将指定存储单元中的值放入目的寄存器中。

(2)间接法语法:


MOV  间接寻址寄存器,  OFFSET 变量名
(下面是需要使用偏移地址时的语句)
MOV  目的寄存器,     间接寻址寄存器

语法解释:

OFFSET是保留字,表示取出后面变量的偏移地址;
间接寻址寄存器只能是BX BP SI DI中的一个。如果没有另外说明,那么使用BX、SI和DI时自动以DS中的内容作为段基址,使用BP时自动使用SS的值作为段基址。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

324

主题

2530

帖子

6

粉丝