计算机系统基础

4.1汇编语言语句种类及格式 汇编语言的语句可以分为指令语句和伪指令语句

1.指令语句 每一条指令语句在汇编时都要产生一个可供CPU执行的机器目标代码,它又叫可执行语句。 指令语句的一般格式为: 标号---->:----->指令助记符------>操作数(操作的对象可以有多个用“,”隔开)----->;------->注释 a.标号字段 标号是可选字段,它后面必须有“:”。标号是一条指令的符号地址,代表了该指令的第一个字节存放地址。 标号一般放在一个程序段或子程序的入口处,控制程序的执行转到该程序的位置。 在转移指令或子程序调用指令中,可直接引用这个标号。 b.指令助记符字段 该字符是一条指令的必选项,它表示这条语句要求CPU完成什么具体操作,如MOV、ADD、SHL等。 有些指令还可以在指令助记符的前面加上前缀,实现一定的附加操作。 c.操作数字段 一条指令可以有一个操作数、两个操作数或者无操作数。 如ADD、MOV指令需要两个操作数,INC、NOT指令只需一个操作数,而CLC指令不需要操作数。 d.注释字段 注释字段为可选项,该字符以分号“;”开始。 它的作用是为阅读程序的人加上一些说明性内容。 注释字段不会产生及其目标代码,它不会影响程序和指令的功能。 注释字段可以是一条指令的后面部分,也可以是整个语句行。

2.伪指令语句 伪指令语句又叫命令语句 伪指令本身并不产生对应的及其目标代码。它仅仅是告诉汇编程序对其后面的指令语句和伪指令语句的操作数应该如何处理。 一条伪指令语句可以包含四个字段。 符号名----->伪指令符------>操作数(操作的对象可以有多个用“,”隔开)----->;------->注释 a.符号名字段 该字段为可选项,根据伪指令的不同,符号名可以是常量名、变量名、过程名、结构名和记录名等等。 一条伪指令语句的符号名可以作为其他伪指令语句或指令语句的操作数,这时它表示一个常量或存储器地址。 *符号名后没有“:” b.伪指令符字段 该字段是伪指令语句的必选项,它规定了汇编程序所要完成的具体操作。 c.操作数字段 该字段是否需要,以及需要几个是由伪指令符字段来决定。 操作数可以是一个常量(二进制、十进制、十六进制等)、字符串、常量名、变量名、标号和一些专用符号(如BYTE、FAR、PARA)

3.标识符 指令语句中的标号和伪指令语句中符号名统称为标识符。标识符是由若干个字符组成的。 标识符构成规则: 1.字符的个数为1~31个; 2.第一个字符必须是字母、问号“?”、@或下划线“—”这四种字符之一; 3.从第二个字符开始,可以是字母、数字、@、下划线“—”或问号“?”; 4.不能使用属于系统专用的保留字。

4.2汇编语言数据 数据是指令和伪指令语句中操作数的基础组成部分。一个数据由数值和属性两部分构成。 在说明数据时不仅要指定其数值,还需说明它的属性,比如是字节数据还是字数据。 在汇编语言中常用的数据形式有:常数、变量和标号。

1.常数 常数在汇编期间其值已完全确定,并且在程序运行过程中,其值不会发生变化。 a.二进制数:以字母B结尾。 b.八进制数:以字母O或Q结尾。 c.十进制数:以字母D结尾。 d.十六进制数:以字母H结尾。若常数的第一个数字为字母,为了与标识符加以区别,必须在前面冠以数字“0”。 e.实数:一般格式(±整数部分.小数部分E±指数部分) f.字符串常数:用引号(单引号或双引号)括起来的一个或多个字符,这些字符以它的ASCII码值存储在内存。

2.变量 变量用来表示存放数据的存储单元,这些数据在程序运行期间可以被改变。 程序中以变量名的形式来访问变量,因此,可以认为变量名就是存放数据的存储单元地址。 a.变量的定义与预置 定义变量就是给变量在内存中分配一定的存储单元。也就是给这个存储单元赋与一个符号名,即变量名,同时还要将这些存储单元预置处初值。 定义变量使用数据定义伪指令DB、DW、DD、DQ和DT等。 定义格式: 变量名{数据定义伪指令}表达式(给存储单元赋的初值,可以有多个表达式,之间用”,“隔开);定义?字(节)变量。

在变量的定义语句中,给变量赋初值的表达式可以使 用下面4种形式:

(1)数值表达式。例如:DATA1 DB 32,30H DATA1的内容为32(20H),DATA1+1单元内容为30H. (2)?表达式。不带引号的问号“?”表示可以预置任意内容例如:DA-BYTE DB ?,?,? 表示让汇编程序分配三个字节存储单元。这些存储单 元的内容的值为任意值。 (3)字符串表达式对于DB伪指令,字符串为用引号括起来的不超过255 个字符。给每一个字符分配一个字节单元。字符串按从左 到右,将字符的ASCII编码值以地址递增的排列顺序依次 存放。 (4)DUP表达式 变量名 DW(DB、DD) 表达式1 DUP (表达式2) 2.变量的使用 (1)在指令语句中引用 (2)在伪指令语句中引用

4.4 表达式与运算符 表达式是指令或伪指令语句操作数的常见形式。它由 常数、变量、标号等通过操作运算符连接而 一、算术运算符 +、—、*、 / 、MOD、SHL、SHR、[ ] 二、逻辑运算符 逻辑运算符有NOT、AND、OR和XOR等四个,它们执 行的都是按位逻辑运算。 三、关系运算符 关系运算符包括:EQ(等于)、NE(不等于)、LT(小 于)、 LE(小于等于)、GT(大于)、 GE(大于等于) 四、数值返回运算符 该类运算符有5个,它们将变量或标号的某些特征值或存 储单元地址的一部分提取出来。 五、属性修改运算符 这一类运算符用来对变量、标号或存储器操作数的类 型属性进行修改或指定。

5.1 顺序程序设计 顺序程序是指程序的结构从开始到结尾一直是顺序执行,中 途没有分支。

5.2分支程序设计 分支程序结构是指程序的执行顺序将根据某些指令的执 行结果,选择某些指令执行或不执行。 分支程序的实现主要是由转移指令完成。

6.1 调用与返回指令 在汇编语言中,子程序是以“过程”的形式表示。 根据被调用过程与调用程序是否在同一个段内,可以 分为两种情况

段内调用与返回主程序与子程序同在一个段内。这时,子程序的调用与返 回只需修改指令指针IP。 段间调用与返回 调用指令与子程序分别在不同的段,这时,需要同 时修改CS和IP。

编制子程序的基本要求 1、具有一定的通用性2、选择适当的参数传递方法3、注意信息保护4、正确使用堆栈5、编制子程序文件

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值