汇编基础语法

本文详细介绍了汇编语言的基础语法,包括指令语句和伪指令语句的格式与用途。指令语句涉及标号、指令助记符、操作数和注释字段,而伪指令语句则用于指导汇编程序处理后续指令。此外,文章还涵盖了汇编语言中的数据形式,如常数、变量和字符串,并讨论了程序的段结构、过程定义以及定位伪指令的使用。

语句种类以及格式

语句分类

指令语句

  • 概念:每一条指令语句在汇编时都要产生一个可以供CPU执行的机器目标代码 。也叫可执行语句
  • 一般格式:
    graph LR
    a( )-->b(标号)
    b-->c((:))
    c-->d(指令助记符)
    a-->d
    d-->e(操作数,n个之间用,隔开)
    e-->f((分号+注释语句))
    
    • 一条指令语句最多可以包含四个字段
    • 标号字段
      • 标号为可选字段,后面必须有“:”,标号是指令的符号地址,代表了该指令的第一个字节存放地址
      • 标号一般放在一个程序段或者子程序的入口处,控制程序的执行转发到该程序位置
      • 在转移指令或子程序调用指令中 可直接引用这个标号
      • `ADDR1: MOV AL,100 ;ADDR1为标号,MOV为指令助记符 AL为操作数1,可理解为目标操作数,100为操作数2,可以理解为原操作数. 整个即把100存储到AL寄存器’
    • 指令助记符字段
      • 该字段是必选字段 表示这条语句要求CPU完成什么操作 比如MOV ADD SHL
      • 有些指令可以在指令助记符前面加上前缀 实现附加操作 如操作指令前加的重复前缀REP
    • 操作数字段
      • 一条指令可以有0 1 2个操作数,由指令决定
      • 如ADD MOV指令需要两个操作数,INC NOT指令要一个操作数 CLC指令不需要操作数
    • 注释字段
      • 注释字段为可选字段 以分号;开始
      • 作用是方便阅读 它不会产生机器目标代码 不影响程序和指令的功能
      • 注释字段可以是一条指令的后面部分 也可以是整个语句行
      • LABL1: ADD AX ,BX; 功能为AX<=(AX)+(BX)

伪指令语句

  • 概念: 也叫命令语句 本身不产生对应的机器目标代码 仅仅是告诉汇编程序对其后面的指令语句和伪指令语句的操作数应该如何处理
  • 一般格式
    graph LR
    a( )-->b(符号名)
    b-->d(伪指令符)
    a-->d
    d-->e(操作数,n个之间用,隔开)
    e-->f((分号+注释语句))
    
    • 符号名字段
      • 为可选字段 根据伪指令的不同,符号名可以是常量名 变量名 过程名 结构名 记录名等等
      • 一条伪指令语句的符号名可以作为其他伪指令语句或指令语句的操作数 此时它表示一个常量或者存储器地址
      • 与指令语句的区别 符号名后面没有冒号:
    • 伪指令符字段
      • 为必选字段 它规定了汇编程序所要完成的具体操作
    • 操作数字段
      • 是否需要 由伪指令符字段决定
      • 可以是一个常数(二八十十六进制等),字符串 常量变量名等
    • 标识符字段
      • 指令语句中的标号和为指令语句中符号名统一成为标识符 标识符由若干个字符构成
      • 构成规则:
        • 个数为1~31个
        • 第一个字符必须是字母,问号 @ _ 四种字符之一
        • 第二个字符开始可以是四种+数字
        • 不能使用系统保留字
          • 系统保留字:CPU中各寄存器名(如AX CS等),指令助记符(如MOV ADD) 伪指令符(如SEGMENT DB) 表达式中的运算符(如GE SEGMENT DB)
          • 以及属性操作符(如PTR OFFSET)

汇编语言数据

  • 概念:数据是指指令和伪指令语句中操作数的基本组成部分 一个数据由数值和属性两部分组成
    • 在说明数据时 不仅要指定其数值 还要说明它的属性 比如是字节数据还是字数据

数据形式分类

常数

  • 在汇编期间其值已经完全确定 并且在程序运行过程中 值不会发生改变
  • 形式有:
    • 以B结尾的二进制数
    • 以O或者Q结尾的八进制数
    • 以D结尾的十进制数
    • 以H结尾的十六进制数
    • 实数:
      • 格式: ±整数部分.小数部分±指数部分
      • 汇编程序在汇编源程序时 实数会转换为4 8 10字节的二进制数形式存放
    • 字符串常数:用引号(单双)括起来的n个字符 这些字符以它的ASCII码值存储在内存
      • 如’ABC’ 存为 ‘41H42H43H’
  • 如果常数的第一个数字是字母 为了与标识符区分 要加0 比如FFH 变为0FFH
  • 常数的使用情况
    • 做指令语句的源操作数 `MOV AX,0B3H’
    • 在指令语句的寻址方式中做位移量 ‘MOV BX,32H[SI’
    • 在数据定义伪指令中使用 ‘DB 10H’

变量

标号

符号定义语句

表达式与运算符

程序的段结构

过程定义伪指令

当前位置计数器$与定位伪指令

从程序返回操作系统的方法

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值