宏汇编语言的基本语法7.docx

上传人:b****8 文档编号:30665390 上传时间:2023-08-19 格式:DOCX 页数:13 大小:27.75KB
下载 相关 举报
宏汇编语言的基本语法7.docx_第1页
第1页 / 共13页
宏汇编语言的基本语法7.docx_第2页
第2页 / 共13页
宏汇编语言的基本语法7.docx_第3页
第3页 / 共13页
宏汇编语言的基本语法7.docx_第4页
第4页 / 共13页
宏汇编语言的基本语法7.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

宏汇编语言的基本语法7.docx

《宏汇编语言的基本语法7.docx》由会员分享,可在线阅读,更多相关《宏汇编语言的基本语法7.docx(13页珍藏版)》请在冰豆网上搜索。

宏汇编语言的基本语法7.docx

宏汇编语言的基本语法7

★宏汇编语言的基本语法

一个完整的宏汇编语言源程序

(两个字节12H、34H相加):

DAT

SEGMENT

PLUS1

DB

12H

PLUS2

DB

34H

SUM

DB

DAT

ENDS

PROG

SEGMENT

MAIN

PROC

FAR

ASSUME

CS:

PROG,DS:

DAT

START:

PUSH

DS

XOR

AX,AX

PUSH

AX

MOV

AX,DAT

MOV

DS,AX

MOV

AL,PLUS1

ADD

AL,PLUS2

MOV

SUM,AL

RET

MAIN

ENDP

PROG

ENDS

END

START

汇编语言中的两种语句:

1.指令语句(例如MOVAX,DAT)

2.伪指令语句(例如DATSEGMENT;PLUS1DB12H等)

伪指令功能:

数据定义,分配存储区,程序分段,指示程序结束等

伪指令语句与机器指令语句的最大区别:

机器指令语句标号后有冒号“:

伪指令语句标号后无冒号“:

一.伪指令语句格式

〈标号名〉伪指令〈操作数1,2,3┉〉〈;注释〉

带〈〉者可省略

例:

DATSEGMENT

PLUS1DB12H,23H

二.常数、变量、标号

1.常数

在程序运行中不发生改变

(例:

立即数,变量的初值)

有几种表示法:

(1)二进制10100011B

(2)八进制176547O

(3)十六进制7FH,7DF6H

(4)十进制245D,36,76

(5)实数(浮点)

(6)字符串(例‘A’即为41H;‘AB’即为41H、42H)

2.变量

存放在存储器数据段内单元的数据,运行时可修改,也可赋初值。

在程序中是以变量名的形式出现(以直接寻址方式引用)

MOVAL,PLUS2=MOVAL,[0002H]

(1)变量定义及存储器分配伪指令

DB定义字节1字节

DW定义字2字节

DD定义双节4字节

DQ定义四节8字节

12H

23H

56H

78H

DT定义10字节10字节

2000H

:

0000H

:

0001H

PLUS1

DATA1

例:

PLUS1DB12H

DATA1DB23H,56H

DB78H

PLUS1的地址,及DATA1的地址见图

X1

注意①DB、DW的不同

WW1

12H

23H

12H

00H

23H

00H

例X1DB12H,23H

WW1DW12H,23H

②可用?

表示仅保留存储空间而不指定初值

ABC

5

6

**

7

例ABCDB5,6,?

,7

 

③复制操作符DUP(duplication)

例ARRAYDB3,4,2DUP(0,1)

3

4

0

1

0

1

ARRAY

复制2次

 

④变量赋初值时可用字符串

例:

STRINGDB‘ABCDE’

DAT3DB‘AB’,7FH,‘C’

DB‘DEF’

41H

42H

43H

44H

45H

41H

42H

7FH

43H

44H

45H

46H

STRING

DAT3

 

在DB语句中字符串内个数任意;

但在其它如DW或DD中最多只能2个

例:

DAT1DW‘AB’,‘C’,‘DE’

DAT1

42H

41H

43H

00H

45H

44H

45H

23H

DAT2DW2345H,‘ABC’,‘ED’

 

DAT2

注意DB与DW中字符串

排列次序的不同

(2)

2000H

:

0000H

:

0001H

12H

34H

7FH

PLUS1

DATA1

变量的属性

1段属性(SEG)

例PLUS1DB12H

DATA1DW7F34H

SEG(PLUS1)=2000H

SEG(DATA1)=2000H

2偏移量属性(OFFSET)

例OFFSET(PLUS1)=0000H

OFFSET(DATA1)=0001H

3类型属性

TYPE(PLUS1)=1TYPE(DATA1)=2

 

3.标号

标号为指令的符号地址,常作为转移指令的操作数。

例:

START:

MOV

AX,DAT

MOV

DS,AX

……

JMP

START

标号也有段属性和偏移属性意义同变量属性

但另外还有距离属性①NEAR②FAR

三.表达式与运算符

在宏汇编源程序中,操作数不一定要写得很明确,可以由若干操作数与运算符构成的表达式表示:

例:

ADDAL,27H;明确表示

ADDAL,2+3;用表达式表示

但汇编后自动转为ADDAL,5

表达式中的运算符可以有6类:

(见P162)

(1)算术运算符

例:

MOVAL,32MOD5;=MOVAL,2

ADDAL,21HSHL2;=ADDAL,84H

(2)逻辑运算符

例:

MOV AL,24HAND0FH;=MOVAL,04H

ANDAL,10HOR0FH;=MOVAL,1FH

(3)另外还有关系运算符、分析运算符、组合运算符等。

组合运算符中,定义符号名为新类型。

PLUS1

〈类型〉PTR〈符号名〉

12H

34H

例PLUS1DB12H,34H

MOVAL,PLUS1;(AL)=12H

MOVAX,WORDPTRPLUS1;(AX)=3421H

 

★伪指令

不由CPU执行,但由MASM识别的一些命令,分为14类。

1.符号定义伪指令

实际上是常量符号化的命令(类似于C语言中的define)

例:

REDEQU10H

GREENEQU11H

BLUEEQU12H

WHITEEQURED+GREEN+BLUE

   MOVAL,RED;=MOVAL,10H

注意:

与变量定义不同的是,EQU语句定义的常量实际上是等值替换,且在程序中是不可更改的。

2.内存数据定义伪指令

前述的DB、DW、DD、DQ等

3.段定义伪指令

汇编程序(MASM)在把源程序转换成目的程序时,还必须的对内存进行正确划分,分配给不同的段。

须用段定义伪指令。

格式:

段名SEGMENT<选择项>;段头

段名ENDS;段尾

段中间可以是数据段、代码段、附加段、堆栈段

选择项:

(1)。

定位方式

PAGE、PARA、WORD、BYTE

决定了段的起始地址方式

(2)。

连接方式

PUBLIC、STACK、NONE、

COMMON、MEMORY、AT

(3)。

‘类别名’

自定义的一个符号,凡类别名相同的段以先后次序连接起来。

4.段寄存器说明伪指令

ASSUMECS:

PROG,DS:

DAT,SS:

STACKP

一旦定义好了段之后,ASSUME指令用来告诉汇编程序(MASM)哪个段寄存器该指向哪个段。

除了程序段,MASM它不能把段的地址真正给段寄存器,还需在程序中编写把段的地址真正给段寄存器的程序。

例:

MOVAX,DAT

MOVDS,AX

 

5,过程定义伪指令

在汇编语言中,子程序又称为过程

用<过程名>PROC;头

<过程名>ENDP;尾

6.模块开始和结束

开始:

NAME模块名

或TITLE模块名

汇编生成的OBJ文件需要名字,另外在LIST文件中可以打印出标题。

如无此命令,则以文件名为模块明。

7.定位伪指令

****:

1000H

08

03

格式:

ORG常数表达式

例:

ORG1000H

DB08H,03H

注意:

同一段中ORG必须从小到大,且不许重叠。

数据段、程序段均可用ORG定义起始地址

ORG100H

MOVAX,0308H

MOVBX,AX

ORG101H

MOVCX,AX

×

ORG100H

MOVAX,0308H

ORG50H

MOVBX,AX

×

 

8.$伪指令

(1)出现在指令中,表示当前指令地址。

例:

JNE$,JMP$+6

(2)出现在数据段中,$表示出现$的哪个单元地址。

例:

DATASEGMENT

****:

0000H

PLUS1DB12H,$,$+2,34H

12H

1

4

34H

 

DATASEGMENT

ARRAYDB10H,20H,30H,40H

COUNTEQU$—ARRAY值

$=4

COUNT=4-0=4

****:

0000H

10H

20H

30H

40H

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 理化生

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1