汇编语言学习:基本语言元素

整数常量

由一个可选前置符号、一个或多个数字以及一个指明基数的可选基数字符组成:
[{+ | -}] digits [radix]

h十六进制r编码实数
q/o八进制t十进制(备用)
d十进制y二进制(备用)
b二进制

26     ;十进制
26d     ;十进制
11010011b   ;二进制
42o    ;八进制

整形常量表达式

包含整数常量和算术运算符,计算结果必须是一个整数,并可用32位来存放。

运算符名称优先级
()圆括号1
+,-一元加、减2
*,/乘、除3
MOD取模3
+,-加、减4

实数常量

用于表示一个十进制实数和编码(十六进制)实数。十进制实数包含一个可选符号,其后跟随一个整数,一个十进制小数点,一个可选的表示小数部分的整数和一个可选的指数。
[sign] integer. [integer] [exponent]
符号和指数格式如下:
sign: {+,-}
exponent: E [{+,-}] integer
2.
+3.0
-44.2E+05
26.E5

字符常量

用单引号或双引号包含的一个字符。
‘a’
“B”

字符串常量

用单引号或双引号包含的一个字符(含空格)序列。
‘ABC’
“Hello world”

保留字

默认情况下不区分大小写。

  • 指令助记符,如MOV、ADD、MUL
  • 寄存器名称
  • 伪指令,告诉汇编器如何汇编程序
  • 属性,提供变量和操作数的大小与使用信息,如BYTE和WORD
  • 运算符
  • 预定义符号,如@data

标识符

  • 可以包含1-247个字符
  • 不区分大小写
  • 第一个字母必须为字母、下划线、@、?或$
  • 不能与保留字相同

伪指令

  • 伪指令是嵌入源代码中的命令,由汇编器识别和执行。
  • 可以定义变量、宏和子程序。
  • 为内存段分配名称,执行其他许多与汇编器相关的工作
  • 默认不区分大小写

DWORD伪指令告诉汇编器在程序中为一个双字变量保留空间。
MOV指令在运行时执行。
myVar DWORD 26
mov eax, myVar
定义段
 程序中的段具有不同的作用。

  • .data:定义数据区
  • .code:定义代码区
  • .stack 100h:定义堆栈区并设置大小

指令

是一种语句,在程序汇编时变得可执行,汇编器将其翻译为机器语言,并在运行时由CPU加载和执行。一条指令有四个组成部分:

  • 标号(可选)
  • 指令助记符(必需)
  • 操作数(看情况)
  • 注释(可选)

 1、标号:一种标识符,可以标记数据和指令的位置,分为数据标号和指令标号。
数据标号标识变量的位置,相当于变量的引用。下面的语句定义了名为count的变量。
 count DWORD 100
指令标号用于标识一块程序代码区,必须用冒号结束,用于跳转和循环指令。下面的JMP指令创建了一个循环,跳转到target标识的位置。
 target:
  mov  ax, bx
  …
  jmp  target

 2、指令助记符:标记一条指令的短单词。如MOV,ADD和SUB。
 3、操作数:指令输入输出的值。操作数可以是寄存器、内存操作数、整数表达式和输入输出端口。当指令有多个操作数时,通常第一个是目的操作数,第二个是源操作数。
 4、注释:通常包含下列信息:

  • 程序目标的说明
  • 程序创建者或修改者的名单
  • 程序创建或修改的日期
  • 程序实现技术的说明

注释有两种指定方法:

  • 单行注释:用分号开始
  • 块注释:用COMMENT伪指令和一个用户定义的符号开始,以用户定义的符号结束。
    COMMENT !
      This line is a comment.
      This line is a comment.
    !

 5、NOP(空操作)指令:在程序空间中占一字节,有时被编译器和汇编器用于将代码对齐到有效的地址边界。在下面的例子中,第一条指令MOV生成了3字节的机器代码,NOP指令就把第三条指令的地址对齐到双字节边界:
00000000  66 8B C3  mov ax, bx
00000003  90      nop
00000004  8B D1    mov edx, ecx

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值