理学汇编程序.pptx

  1. 1、本文档共105页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

;;下面举例来加以说明:;CSEGSEGMENT;定义代码段

ASSUMECS:CSEG,DS:DSEG,ES:ESEG

START:MOVAX,DSEG

MOVDS,AX;初始化DS

MOVAX,ESEG

MOVES,AX;初始化ES

LEASI,SUM;存放结果的偏移地址送SI

MOVAX,DATA1;取被加数

ADDAX,DATA2;两数相加

MOVES:[SI],AX;和送附加段的SUM单元中

HLT

CSEGENDS;代码段结束

ENDSTART;源程序结束;总结:;4.1.2汇编语言语句类型;4.1.3数据项及表达式; 2.标号Label

指令的标号由程序员确定:

不能与指令助记符或伪指令重名;

不允许由数字打头;

字符个数不超过31个;

标号代表存放一条指令的存储单元的地址;

标号可以作为程序转移、过程调用、循环控制等指令的操作数;

标号有三种属性:段、偏移量、类型

偏移量是一个16位的无符号数;

类型有两种:近标号NEAR(2字节)和远标号FAR(4字节);;3.变量Variable

变量是存储器中某个数据区的名字,在指令中可以作为存储器操作数使用;变量也具有三种属性:段、偏移量、类型

段值:一般在DS或ES寄存器;

变量的类型:有BYTE、WORD、DWORD、QWORD、TBYTE;

常用数据类型伪指令DB、DW、DD、DQ、DT来定义。

例如: NUMDB11H,22H,33H

DATA2 DW100H,200H ;变量名与标号名的区别:

变量名是变量的符号地址,标号是指令的符号地址。例如:

MOVAX,VAR1;(VAR1字变量)

MOVBL,VAR2;(VAR2字节变量)

JMPDONE

……

DONE: ADDAL,5

变量名对应数据区的首地址,若数据区有多个数据,则在对其他数据操作时需要修改地址:

NUMDB11H,23H,33H

.....

MOVAL,NUM+2;4、表达式;表达式中的运算符;3、关系运算符;SEG、OFFSET又称为数值返回运算符,用以获取变量或标号的属性。

例:MOVAX,SEGBUFFER

MOVAX,OFFSETBUFFER

PTR是类型运算符:

CALLDWORDPTR[BX]

MOVAL,BYTEPTR[SI]

;4.2 伪指令;4.2.1数据定义伪指令;DD:定义双字类型的变量

如: DATA3 DD 35F87123H

DQ:定义四字类型的变量

DT:定义十字节类型的变量,每个操作数

为10个字节的压缩BCD码;

SUMDQ0011223344556677H

如果一个变量的操作数有多个,而且都一样;

可以使用重复操作符DUP来定义:

DATA1DB20DUP(?)

DATA2DB20DUP(30)

;2、符号定义伪指令;例如: P8 EQUDS:[BP+5]

注意:不能重复定义同一个符号。

=可以对一个符号重复定义:

FACTOR=10H

FACTOR=25H

;3、段定义伪指令; stack segment parastack‘stack’

……

Stack ends

该段是堆栈段,段名为stack;segment指明堆栈段开始;para说明该段必须从能被16整除的地址边界开始;stack指明组合类型;‘stack’指明类别是堆栈类。

注意:同一个段的起始和结束必须是同一个标号名。;4.2.4

文档评论(0)

136****9669 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档