第4章汇编语言程序设计1_第1页
第4章汇编语言程序设计1_第2页
第4章汇编语言程序设计1_第3页
第4章汇编语言程序设计1_第4页
第4章汇编语言程序设计1_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

会计学1第4章汇编语言程序设计1第4章汇编语言程序设计4.1汇编语言和汇编程序的基本概念

4.2汇编语言源程序书写格式

4.3

8086汇编语言中标识符、表达式和运算符

4.5汇编语言程序上机过程

4.4伪指令语句

第1页/共39页4.1汇编语言和汇编程序的基本概念

4.1.1汇编语言面向CPU指令系统的程序设计语言采用助记符表示操作码和操作数用符号地址表示操作数地址用汇编语言编写程序占用内存空间少,执行速度快第2页/共39页

将汇编语言源程序翻译成目标程序的过程称为汇编,所用的软件称为汇编程序。

宏汇编程序MASM

汇编产生目标程序文件和源程序列表文件:目标程序文件经连接定位后由计算机执行源程序列表文件将列出源程序、目标程序的机器语言代码及符号表

4.1.2汇编程序第3页/共39页语句类型

8086宏汇编MASM使用的语句分成3种类型:指令语句:能够产生目标代码,CPU可执行伪指令语句:为汇编程序和连接程序提供的管理性语句,不产生目标代码宏指令语句:可包括多条指令或伪指令4.2汇编语言语句的格式第4页/共39页一般情况下,汇编语言的语句可以由1~4部分组成:[名字]操作码项[操作数][;注释]名字(标号)项是一个符号。操作码项是一个操作码的助记符,它可以是指令、伪操作或宏指令。操作数项由一个或多个表达式组成,它提供为执行所要求的操作而需要的信息。注释项用来说明程序或语句的功能,分号(;)为识别注释项的开始,也可以从一行的第一个字符开始,此时整行都是注释,常用来说明下面一段程序的功能。其中带方括号的部分表示任选项,即可以选用,也可以不用。下机分别说明每一项的作用及表示方法。4.2.1名字项第5页/共39页

4.2.1名字项名字项可以是语句标号或标量。标号是可执行指令语句的符号地址,在代码段中定义,用作转移指令或调用指令的操作数,表示转移地址;变量通常是指存放数据的存储器单元符号地址,它在除段码段以外的其它段中定义,可以用作指令的操作数。名字和变量统称为标识符。第6页/共39页1.组成名字的字符及规则它是由字母打头的字符串,可由下列字符组成:①字母A~Z,a~z。②数字0~9。③专用字符?、.、@、-、$。除数字0~9外,其他字符都可以放在名字的第一个位置。字符“.”只能出现在名字的第一个位置,其他位置不允许出现。名字最长由31个字符组成。汇编程序对31个以后的字符不予理会,所以,当两个名字的前31个字符完全相同而从第32个字符开始有不同字符时,汇编程序将它们视为同一名字。第7页/共39页2.标号和变量的区别

标号是某条指令所存放单元的符号地址,而变量是某操作数据所存放单元的符号地址。在汇编语言程序中,指令语句中的名字一般采用标号,这个标号可以是任选的,即可以不写。标号出现在代码段,后面跟着冒号“:”。第8页/共39页3变量和标号的属性标号和名字一经定义便具有两类三种属性:①段值标号和名字对应存储单元的段地址②偏移值标号和名字对应存储单元的偏移地址③类型标号、子程序名的类型可以是NEAR(近)和FAR(远),分别表示段内或段间变量名的类型可以是BYTE(字节)、WORD(字)和DWORD(双字)等地址属性类型属性第9页/共39页4.2.3操作数项操作数项是操作符的操作对象。操作符在完成相应的操作时要求有一系列的操作数。当有两个或两个以上的操作数时,各操作数之间用逗号隔开。对于指令语句,操作数项一般给出操作数地址,它们可能一个或多个,或一个也没有。对于伪指令和宏指令语句,操作数项则给出所要求的参数。操作数一般有常数、寄存器、标号、变量和表达式等几种形式。第10页/共39页1.常数常数是操作数位置出现的数值数据或字符型数据,它的值在汇编时已完全确定,程序运行过程中,不会发生变化。在8086宏汇编中,允许有以下几种常数:①二进制常数:是一串0和1数字的组合,以字母B结尾。②八进制常数:由数字0~7组成,必须以字母O结尾。③十进制常数:这是最常用的一种常数,后跟字母D或不跟任何字母。④十六进制常数:由数字0~9和字母A~F组成,这类数据必须以字母H结尾。⑤字符串常数:用单引号括起来的字符以及字符串,其各个字符的ASCII码值构成字符串常数。字符串常数可以和整数常数等价使用,但这些字符串常数的长度必须为一个字节或一个字,以便与目标操作数的长度相匹配。在指令中,常数通常被称为立即数,它只能用作源操作数,不能作为目标操作数。它的允许取值范围由指令中的目标操作数的形式自动确定为8位或16位。第11页/共39页2表达式和运算符指由运算符连接的各种常数构成的表达式汇编过程中计算表达式得数值程序运行之前,已算出结果增强程序可读性第12页/共39页2、表达式和运算符(1)算术运算符+

-

*

/MOD(2)逻辑运算符ANDORXORNOT(3)移位运算符

SHLSHR(4)关系运算符

EQNEGTLTGELE(5)分析运算符HIGHLOW第13页/共39页(1)算术运算符实现加、减、乘、除、取余的算术运算MOVAX,3*4+5 ;等价于MOVAX,17其中MOD也称为取模,它产生除法之后的余数,如19MOD7=5加+和减-运算符还可以用于地址表达式除加、减外,其他运算符的参数必须是整数第14页/共39页(2)逻辑运算符实现按位相与、相或、异或、求反的逻辑运算ORAL,03HAND45H;等价于ORAL,01H第15页/共39页(3)移位运算符实现对数值的左移、右移的逻辑操作;移入低位或高位的是0格式为:数值表达式SHL/SHR移位次数MOVAL,0101BSHL(2*2);等价于MOVAL,01010000B第16页/共39页(4)关系运算符用于比较和测试符号数值MASM用0FFFFH(补码-1)表示条件为真MASM用0000H表示条件为假

MOVBX,PORTGE5;PORT<5时,汇编结果为MOVBX,0FFFFH;否则,汇编结果为MOVBX,0第17页/共39页(5)分析运算符对存储器地址进行运算的5个:SEG(求段基值)、OFFSET(求偏移量)、TYPE(求变量类型)、LENGTH(求变量长度)和SIZE(求字节数)

例如:

MOVBX,SEGARR

MOVES,SEGDATA1第18页/共39页 ORG$+10ARRAYDB45,45H ……MOVBX,OFFSETARRAY ;等价于LEABX,ARRAY MOVCL,ARRAY+4 ;等效于MOVCL,ARRAY[4] MOVAX,ES:[2000H]分析运算符实例

加4个字节单元第19页/共39页属性修改运算符,用来建立和临时改变变量或标号的类型6个:PTR、段属性前缀、SHORT、THIS例如:

MOVBX,OFFSETARR;等同于LEABX,ARR

MOVAX,ES:[DATA1]

MOVCX,WORDPTR[BX]

MOVDX,HIGHDATA1(6)综合运算符第20页/共39页运算符的优先级()<>[]·LENGTHSIZEPTROFFSETSEGTPYETHIS:HIGHLOW*/MODSHLSHR+-EQNEGTLTGELENOTANDORXORSHORT

建议采用圆括号“()”显式表达,它可以极大地提高程序的可阅读性第21页/共39页5.3伪指令语句给汇编程序(软件)的命令,在汇编过程中处理5.3.1数据定义伪指令用来定义变量的类型分配存储单元,可赋值或不赋值一般格式:[变量名]

伪指令

操作数

[,操作数…][;注释]第22页/共39页

2.常用的数据定义伪指令定义字节变量伪指令DB

定义字变量伪指令DW

定义双字变量伪指令DD

定义四字变量伪指令DQ

定义十字节变量伪指令DT

变量定义伪指令最常使用第23页/共39页字节单元定义实例DATA SEGMENT ;数据段

XDB'A',-5DB2DUP(100),?YDB'ABC'DATA ENDS应用指定复制次数,用复制运算符DUP复制操作数第24页/共39页字单元定义实例DATASEGMENT;数据段

COUNTDW8000H,?,'AB'MAXINTEQU64HNUMBERDWMAXINTARRAYDWMAXINTDUP(0)DATA ENDS应用第25页/共39页4.3.2符号定义伪指令给符号重新命名或定义新的类型属性常用的有EQU、=、LABLE

5.4.3段定义伪指令定义逻辑段时指定段的名称和范围,并指明段的定位类型、组合类型及类别常用SEGMENT、ENDS和ASSUME等第26页/共39页符号定义

DCHAREQU2 ENTER=13 CALLDOSEQU<INT21H>符号应用(左边程序段等价右侧的符号形式)

MOVAH,DCHAR

;

MOVAH,2

MOVDL,ENTER;MOVDL,13 CALLDOS;INT21H

符号常数实例第27页/共39页4.3.4过程定义伪指令将一些重复出现的语句组定义为子程序,又称为过程,可以采用CALL指令来调用。定义格式:

过程名

PROC[NEAR]/FAR

(语句系列)

RET

(语句系列)

过程名

ENDP2.

调用过程的格式:CALL过程名

第28页/共39页

4.3.5结构定义伪指令结构是相互关联的一组数据的组合形式。用伪指令STRUC和ENDS把相关数据定义语句组合起来,便构成一个完整的结构。使用格式:

结构名

STRUC

…(数据定义语句序列)

结构名ENDS第29页/共39页4.3.6模块定义与连接伪指令编写规模较大的汇编语言源程序时,可将整个程序划分为几个独立的源程序,称之为模块。将各模块分别进行汇编,生成各自的目标程序,最后连接成为一个完整的可执行程序。各模块之间可以相互进行符号访问。为了进行模块间连接和相互访问,通常使用伪指令NAME、END、PUBLIC、EXTRN第30页/共39页4.3.7程序计数器$和ORG伪指令

1.程序计数器$用在表达式里,为下一个能分配的存储单元的偏移地址

2.ORG伪指令起始位置设定伪指令用来指出源程序或数据块的起点可改变位置计数器的值

第31页/共39页4.4汇编语言程序的段结构汇编语言源程序的分段结构若干个任意排序的逻辑段每个逻辑段以SEGMENT语句开始,以ENDS语句结束整个源程序以END语句结束第32页/共39页4.5汇编语言程序上机过程

4.5.1汇编语言的工作环境及上机步骤

1.硬件环境

一般IBMPC/XT及其兼容机基本配置

2.软件环境

1)DOS操作系统2)编辑程序

3)宏汇编程序MASM.EXE4)连接程序LINK.EXE5)调试程序DEBUG.COM第33页/共39页3.运行汇编语言程序的步骤

1)编辑汇编语言源程序,扩展名为.ASM;

2)用MASM.EXE汇编成.OBJ目标文件;

3)有语法错,用编辑软件重新调入修改。无错用LINK.EXE把.OBJ文件转化成.EXE可执行

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论