整数常量以及整数表达式
实数常量 字符常量、字符串常量 保留字 标识符 伪指令 指令
1(1)整数常量: -26 十进制 26d 十进制 11011110b 二进制 42q 八进制 42o 八进制 1Ah 十六进制 0A3h 十六进制 l整数表达式: 4+5*2 12-1mod 5 -5+2 (4+2)*6
(2)实数常量
2.
+3.0
-44.2E+05
26.E5
l(3)字符、字符串常量
字符常量是以单引号或双引号括起来的单个字符。
例如: ‘A’ “d”
字符串常量是以单引号或双引号括起来的一串字符。
例如:
‘ABC’
‘4096’
“Goodnight, Gracie”
引号可以嵌套:
“This isn’t a test”
‘Say “Goodnight,” Gracie’
汇编语言中一些有特殊意义的单词,只能用于正确的上下文环境中:
指令助记符:例如 MOV,ADD和MUL等。
伪指令:用于告诉MASM如何编译程序。
属性:为变量和操作数提供有关尺寸以及使用方式的信息,例如BYTE和WORD。
运算符:用在常量表达式中。
预定义符号:例如@data,在编译时返回整数常量值
(5) 标识符
是程序员选择的名字,用来识别变量、常量、过程或代码标号。
(6)伪指令
与真正的指令不同,伪指令不在程序运行时执行
用于定义逻辑段、选择内存模式、定义变量和创建过程等。
伪指令不区别大小写。
.data:用于标识程序中包含变量的区域。或.DATA .Data
.code:标识程序中包含指令的区域。或.CODE .Code
PROC:标识过程的开始。例如 name proc
ENDP:标识过程的结束。例如 name endp
2. 注释
单行注释:以分号(;)开始。块注释:以COMMENT伪指令
l
程序是以段组织的,常见的段有代码段、数据段和堆栈段等。
–
代码段包含程序的全部可执行指令,通常代码段都有一个或一个以上的过程,其中一个是启动过程。例如:在Addsub程序中,main就是启动过程。
–
数据段存放变量。
–
程序模板
TITLE Program Template (Template.asm)
;程序描述:
;作者:
;创建日期:
;版本:
;修改日期: 修改者:
INCLUDE Irvine32.inc
.data
;(在此插入变量)
.code
main PROC
;(在此插入可执行代码)
exit
main ENDP
;(在此插入其他子程序)
END main
TITLE Program Template (Template.asm)
;程序描述:
;作者:
;创建日期:
;版本:
;修改日期: 修改者:
.386
.model flat,stdcall
.stack 4096
ExitProcess PROTO,dwExitCode:DWORD
DumpRegs PROTO
.code
main PROC
;(在此插入可执行代码)
call DumpRegs
INVOKE ExitProcess,0
main ENDP
;(在此插入其他子程序)
END main
.386
.386
指出了该程序要求的最低CPU(intel 386)
.model flat,stdcall
.MODEL 伪指令指示汇编器为保护模式程序生成代码,
STDCALL 允许调用MS-Windows函数
ExitProcess PROTO,dwExitCode:DWORD
DumpRegs PROTO
两条PROTO 伪指令声明了该程序使用的过程原型:ExitProcess 是一个MS-Windows函数,起作用是 终止当前程序(称为进程);DumpRegs是Irvine32连接库中一个显示寄存器的过程。
INVOKE ExitProcess,0
程序通过调用ExitProcess来结束执行,传递给该函数的参数是返回码,取值是0。INVOKE是一个用于调用过程或函数的汇编伪指令。
MASM615
定义数据
堆栈段存放着子程序的参数和局部变量。
TITLE Program Template (Template.asm)
;程序描述:
;作者:
;创建日期:
;版本:
;修改日期: 修改者:
INCLUDE Irvine32.inc
.data
;(在此插入变量)
var1 BYTE 10h
var2 SBYTE -14h
var3 WORD 2000h
var4 SWORD +2345
var5 DWORD 12345678h
var6 SDWORD -2342423
var7 FWORD 0
var8 QWORD 1234567812345678h
var9 TBYTE 10000000000123456789h
var10 REAL4 -1.25
var11 REAL8 3.2E+100
var12 REAL10 -6.223424E-2343
.code
main PROC
;(在此插入可执行代码)
exit
main ENDP
;(在此插入其他子程序)
END main
TITLE Chapter 3 Exercise 3 (ch03_03.asm)
Comment !
Description: Write a program that defines symbolic constants
for all of the days of the week. Create an array variable
that uses the symbols as initializers.
Last update: 05/02/2002
!
INCLUDE Irvine32.inc
Sunday = 0
Monday = 1
Tuesday = 2
Wednesday = 3
Thursday = 4
Friday = 5
Saturday = 6
.data
myDays DB Sunday, Monday, Tuesday, Wednesday,
Thursday, Friday, Saturday
.code
main PROC
exit
main ENDP
END main
TITLE Chapter 4 Exercise 4 (ch04_04.asm)
Comment !
Description: Write a program that defines symbolic names
for several string literals (characters between quotes).
Use each symbolic name in a variable definition.
Last update: 05/02/2002
!
INCLUDE Irvine32.inc
sym1 TEXTEQU <"System failure">
sym2 TEXTEQU <"Press any key to continue...">
sym3 TEXTEQU <"Insufficient user training">
sym4 TEXTEQU <"Please re-start the system">
.data
msg1 DB sym1
msg2 DB sym2
msg3 DB sym3
msg4 DB sym4
.code
main PROC
exit
main ENDP
END main