汇编语言(微机)第三章.ppt
《汇编语言(微机)第三章.ppt》由会员分享,可在线阅读,更多相关《汇编语言(微机)第三章.ppt(123页珍藏版)》请在三一办公上搜索。
1、1,主讲教师:范新民,第三章:8086汇编语言程序设计,2,8086汇编语言程序设计,3,8086汇编语言程序设计,3.2.1 汇编语言源程序的格式,一、基本概念,1、机器语言、汇编语言和高级语言,机器语言:用0、1代码表示的机器指令形式,是机器硬件 唯一能识别和执行的语言。例:机器指令0100 0000;表示(AX)1AX,汇编语言:用符号表示指令的操作码、操作数。又称符号 语言。例:INC AX;增1指令,4,汇编语言和机器语言都是面向机器的语言,即不同的机器有不同的指令系统。机器指令与机器代码是一一对应的。汇编语言机器语言均属于低级语言。,高级语言:接近人的自然语言和数学表达式。用高级语
2、言编写的程序是脱离机器的、面向过程或面向对象的语言。如:C语言,Java语言等。,汇编语言源程序的格式,5,2、汇编语言的特点代码长度短,执行速度最快可直接有效的控制机器的运行准确掌握机器运行时间可最有效的利用CPU、内存、I/O资源 直接控制机器运行的场合 汇编语言常用于:需要准确控制运行时间的场合 运行速度要求很高的场合,汇编语言源程序的格式,6,汇编语言源程序的格式,3、语句的类别与结构分段结构:最多可由4种段组成:代码段、数据段、堆栈段、附加段。语句类别:,(1)指令语句:由汇编程序汇编成相应的能被CPU直接识别并执行的目的码,或称机器代码。,(2)宏指令语句:允许用户为多次重复使用的
3、程序段命名的一个名字。即将一个程序段定义为一宏指令。,7,第三章:汇编语言程序设计,(3)伪指令语句:伪指令语句是一种指示性语句,这类语句向汇编程序提供汇编过程要求的一些辅助信息,如给变量分配内存单元地址、定义各种符号、实现分段等。,伪指令与指令性语句的区别:伪指令语句经汇编后不产生任何机器代码,而指令性语句经汇编后会产生相应的机器代码;伪指令语句所指示的操作是在程序汇编时就完成了的,而指令性语句的操作必须在程序运行时才能完成。,8,例3-1:对10个字节数据a1a10求和。DATASEGMENT AT 2000HARRAYDB a,a,a,aCOUNT EQU ARRAYSUMDW?DATA
4、ENDSSTACKSEGMENT PARA STACK STACKSTAKDB 10 DUP(?)TOPEQU LENGTH STAKSTACK ENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACK,汇编语言源程序的格式,9,START:MOV AX,DATA MOV DS,AX MOV AX,MOV DI,OFFSET SUM MOV BX,OFFSET ARRAY MOV CX,COUNTLOP:ADD AL,BX ADC AH,INC BX LOOP LOP MOV DI,AX MOV AH,4CH INT 21HCODE ENDS END STAR
5、T,汇编语言源程序的格式,10,二、指令性语句,标号:操作码 操作数;注释项,操作码:指明操作的性质,说明计算机要执行的具体操 作。用助记符表示。操作数:指明指令执行过程中所需的数据。可有0个、1个 或者多个表达式组成,并由它提供执行指定操作 所需要的操作数或地址。注释项:必须以分号开头,主要用来说明程序或重要语句 的功能。,汇编语言源程序的格式,11,标号:对应的标识符后面必须跟有冒号,标号在汇编以 后分配有地址。标号又称为符号地址,可作为转 移指令或子程序调用的目标地址。,汇编语言源程序的格式,12,汇编语言源程序的格式,三、指示性语句 指示性语句是主要由命令构成的语句,用来指示汇编程序进
6、行汇编操作。格式:,名字/变量 命令 参数;注释项,命令:指示汇编程序进行某种汇编操作参数:汇编操作有关的数据,13,汇编语言源程序的格式,3.2.2 常量、标识符和表达式,1、常量:数字常量可以是二进制数、八进制数、十进制数或十六进制数表示。字符常量是用单引号 括起来的ASCII字符其值是该字符的ASCII代码值。例:MOV AX,A;AX=41H 符号常量是用符号定义的常量。例:采用符号定义语句 PORTA EQU 80H MOV AL,PORTA 与指令 MOV AL,80H 等价,14,标识符可用作符号常量、名字、变量和标号等。组成标识符有如下规定:组成标识符的字符有:大写字母:AZ;
7、文小写字母:az;数字09;字符?、_、$;字符长度不超过3l个;首字符不能是数字;?不能单独作为一个标识符;不能把保留字用作标识符,保留字包括助记符、寄存 器名等。,2、标识符,汇编语言源程序的格式,15,3、表达式 由常数、变量、标号通过运算符或操作符连接而成的,可分为数值表达式和地址表达式。,汇编语言源程序的格式,数值表达式:由算术运算符、关系运算符和逻辑运算符连接常数组成的有意义的式子,它的运算结果是数值常数,只有大小,没有属性。地址表达式:由变量、标号、常数、寄存器(BP、BX、SI、DI)的内容和操作符组成的有意义的式子,它的运算结果不是一个普通的数值,总是和存储器地址相联系。如各
8、种存储器寻址方式的汇编表示都属于简单的地址表达式,16,表达式中的运算符:,17,汇编语言源程序的格式,3.2.3 指示性语句(5条),程序开始和结束语句段定义语句过程定义语句数据定义语句符号定义语句,18,(1)给程序模块命名 NAME 命令 格式:NAME 名字 名字是程序员按标识符规定所取的程序模块名。(2)标题命名语句 TITLE 命令 格式:TITLE 名字 名字作为每页标题打印出来,标题名字符不大于60个(3)程序结束 END命令 格式:END 标号 标号指示程序开始执行的起始地址的标号。,1、程序开始和结束语句,汇编语言源程序的格式,19,说明:如果程序中没有NAME 伪指令,可
9、使用TITLE伪指令。程序中既无NAME也无TITLE伪指令,汇编程序将用源程序名作为模块名。一般情况下使用TITLE伪指令,可在列表文件中能打印出来END伪指令中,如果程序中第一句指令性语句有标号,则END语句的标号应与其相同否则可无标号。,汇编语言源程序的格式,20,2、段定义伪指令 存储器的物理地址是由段地址和偏移地址组合而成的,而存储器又可以为多个段,汇编程序是按段来组织程序和使用存储器,在把源程序转换为目标程序时,必须确定标号和变量的偏移地址,并且需要把有关信息通过目标模块传送给连接程序,以便连接程序把不同的段和模块连接在一起形成一个可执行程序。为此,需要用到段定义伪指令。,汇编语言
10、源程序的格式,21,(1)段定义伪指令 SEGMENT 格式:段名 SEGMENT 定位类型 组合类型类别 段名 ENDS,段名由程序员定义,汇编时由系统为该段分配一个段基值。参数用来设定该段在内存中的位置和在汇编、连接时,当该段与其它段组合在一起时该段同其它段的连接关系。,汇编语言源程序的格式,22,一般情况下,定位类型、组合类型和类别说明可以不用。,注意:SEGMENT和ENDS语句必须成对使用。,例:定义一数据段DATA DATA SEGMENT A DB 1234 B DW 12H DATA ENDS,汇编语言源程序的格式,23,(2)偏移地址定位语句 ORG,格式:ORG 数值表达式
11、功能:指定在它之后的程序段或数据块所存放的起始地 址的偏移量。,无ORG语句时,段偏移地址从0000H开始。,例.DATA SEGMENT ORG 100HX DB 12HY DW?Z DD 1122HDATA ENDS,$,$表示汇编地址计数器的当前值,汇编语言源程序的格式,24,(3)指定段址伪指令,格式:ASSUME 段寄存器:段名,段寄存器:段名,.功能:指明段和段寄存储器的对应关系,且段名必须是 由SEGMENT定义的段名。,说明:ASSUME伪指令只是指明段和段寄存器的对应关系,并没有把段地址装入段寄存器中。但是,代码段段寄存器CS的值是由系统负责设置的。ASSUME指令必须跟在S
12、EGMENT语句之后。,汇编语言源程序的格式,25,例:DATA SEGMENT X DB12H DATA ENDS STACK SEGMENT DW 100 DUP(?)STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START:MOV AX,DATA MOV DS,AX MOV AX,STACK MOV SS,AX CODE ENDS,汇编语言源程序的格式,26,3.过程定义伪指令,格式为:过程名 PROC NEAR/FAR RET 过程名 ENDP功能:过程定义伪指令用于定义子程序。段内调用使用 NEAR属性,段间调用使用F
13、AR属性。省略为NEAR,汇编语言源程序的格式,27,CODE SEGMENTCOUNT PROC NEAR ADD CX,1 RETCOUNT ENDPSTART:MOV AX,100 CALL COUNT CALL COUNT HLTCODE ENDS END START,COUNT PROCE RET,子程序:,汇编语言源程序的格式,28,4.数据定义伪指令格式:变量名 数据定义伪指令 操作数项表功能:定义数据存储区,其类型由伪指令指定。,数据定义伪指令常用的有以下五种:变量名 DB 操作数项表;定义字节变量名 DW 操作数项表;定义字变量名 DD 操作数项表;定义双字变量名 DQ 操作
14、数项表;定义8个字节变量名 DT 操作数项表;定义10个字节,操作数项表可以是常数或表达式、字符串、?和带DUP的表达式。,汇编语言源程序的格式,29,给变量赋初值或指定变量类型 例:COUNT DB100 ARRAY DW-1,1024,汇编语言源程序的格式,30,定义一个ASC码的字符串,为字符串的每个字符分配一个存储单元,并从左到右将字符的ASC码按地址递增顺序存放在内存中。,例1:STR DB ABCD 例2:STR1 DW AB,汇编语言源程序的格式,31,用?号预留内存单元例:SUB1DB?;预留一个字节单元 RESUDW?;预留二个字节单元,汇编语言源程序的格式,32,用DUP重
15、复因子初始化一个数据区格式:N DUP(表达式),例1:DA1 DB 2 DUP(0)DA2 DB 2 DUP(AB)DA3 DW 2 DUP(1),例2:DUP的嵌套使用 DATA DB 10 DUP(10 DUP(0)定义了100个字节全部初始化为0。,重复次数 重复装入的内容,?、数值、数值表达式 字符等,汇编语言源程序的格式,33,汇编语言源程序的格式,5、符号定义语句,(1)EQU赋值伪指令格式:变量名 EQU 表达式功能:将右边表达式的值赋给左边的变量。表达式可以是 常数、变量、标号、指令助记符、数值表达式、地 址表达式。,例:PORT1 EQU 100;符号PORT1代表常数10
16、0 CONT EQU CX;为CX重新命名 ABDR EQU PORT1+1 ABC EQU DAA注:同一程序中,不能重复定义,34,(2)=等号伪指令格式:符号名=表达式功能:与EQU基本相同,两者的区别在于“=”伪指令可对 同一标识符作重新定义。,例:EMP=12;定义EMP等于12 EMP=EMP+1 可以对同一个符号名重复定义。,汇编语言源程序的格式,35,(3)PURGE命令 格式:PUREG 名字 功能:用来撤消已定义的符号常量。可同时撤消几个己 定义的名字 例3-10:COUNT EQU 20 MOV AL,COUNT PURGE COUNTCOUNT EQU 10MOV BL
17、,COUNT,汇编语言源程序的格式,36,(1)名字 名字包括文件名、标题名、段名、过程名和符号常量名等,是程序员在编程中按标识符规定命名的,目的是方便编程和读程。段命 在段定义语句中命名取定,定义后的段名可以作为段基值来使用,用来对段寄存器赋值。例:MOV AX,DATA MOV DS,AX,6、名字与变量,汇编语言源程序的格式,37,过程名在过程定义语句中定义,指向过程中第一条指令所在的内存单元的地址(入口地址),有NEAR和FAR之分。符号常量由符号定义语句EQU、=来定义,对符号常量给以赋值。例3-13,汇编语言源程序的格式,38,(2)变量 变量的定义和属性 变量由数据定义语句DB/
18、DW/DD/DQ/DT来定义变量有三属性:段属性、偏移属性和类型属性:段属性表示变量所在段的起始地址。偏移属性表示变量在段内的偏移地址。用16位无符号表示偏移地址。类型属性表示该变量能存放的数据长度。长度为1B的变量,类型为BYTE,长度为2B的变量,类型为WORD等。,汇编语言源程序的格式,39,分析运算符(5个)用于把变量的三个属性分别取出来作为操作数。,OFFSET取偏移地址操作符格式:OFFSET 变量或标号功能:返回该变量或标号在其段内的偏移地址。,例:MOV SI,OFFSET BUF 将BUF在数据段内的偏移地址作为立即数送到SI中。,汇编语言源程序的格式,40,SEG取段址操作
19、符。格式:SEG 变量或标号功能:返回变量或标号所在段的段基址。例:MOV AX,SEG BUF,汇编语言源程序的格式,41,TYPE取类型操作符格式:TYPE 变量或标号功能:当TYPE置于变量前面时,返回变量的类型数字。即DB为1,DW为2,DD为4,DT为10。当TYPE置于标号前面时,返回标号的类型属性值;当该标号为NEAR属性时,返回值为1,标号为FAR 属性时,返回值为2。,例:数据段中有如下定义:DATA DW 75H,134H。执行:ADD SI,TYPE DATA。该语句在汇编后相当于指令ADD SI,2。,汇编语言源程序的格式,42,取变量所含的数据存储单元个数操作符 LE
20、NGTH格式:LENGTH 变量功能:只对变量起作用,取值根据定义该变量时数据定义 伪指令后面第一个表达式的形式而定。如为重复子 句“n DUP(表达式)”,返回外层重复因子n,其他形式 的表达式,则返回1。,汇编语言源程序的格式,43,MOV AL,LENGTH A1 MOV CX,LENGTH A2 MOV BX,LENGTH A3 MOV DX,LENGTH A4,汇编后相当于指令:MOV AL,1MOV CX,10MOV BX,1MOV DX,5,例:DATA SEGMENTA1 DB ABCD,5 DUP(0)A2 DW 10 DUP(1),1234HA3 DW 10,20 DUP(
21、?)A4 DW 5 DUP(3 DUP(2),5)DATA ENDS,汇编语言源程序的格式,44,取变量所含的数据存储区大小操作符 SIZE格式:SIZE 变量功能:汇编程序用该操作符返回的值表示该变量所分配的 总字节数。例:A2 DW 10 DUP(1),1234H MOV CX,SIZE A2 汇编后相当于有指令:MOV CX,14H,汇编语言源程序的格式,SIZE=LENGTHTYPE,45,合成运算符,属性定义操作符 PTR格式:类型 PTR 地址表达式功能:PTR操作符的作用是将地址表达式的原类型属性临 时修改成PTR操作符前面所指定的类型。指定的类 型可以是BYTE、WORD或DW
22、ORD。,可用来指定内存操作数的类型 例:MOV BYTE PTR SI,20H;占一个字节 或 MOV WORD PTR SI,20H;占两个字节,汇编语言源程序的格式,46,用于临时改变变量或标号的类型属性 例如:BUFW DW 1234H,5678H MOV AX,BUFW MOV AL,BYTE PTR BUFW 可用EQU 和PTR定义一个新的变量 例如:BUFW DW 1234H,5678H BUFB EQU BYTE PTR BUFW 则 MOV AX,BUFW 和 MOV AL,BUFB 都是合法的。,汇编语言源程序的格式,47,格式:标号:操作码 操作数,操作数;注释 一、标
23、号 标号是一条指令在内存中的符号地址。标号一定要用:结束。标号具有三种属性:段属性:表示标号所在段的段基值 格式:SEG 标号,3.2.4 指令型语句,汇编语言源程序的格式,48,汇编语言源程序的格式,偏移量属性:表示标号所在位置的偏移地址 格式:OFFSET 标号 类型属性:表示标号所在指令是允许段内跳转还是 段间跳转 格式:TYPE 标号当标号的属性为NEAR属性时,TYPE=-1。当标号的属性为FAR属性时,TYPE=-2。,49,操作数可以用段名、符号常量、变量、属性表达式、过程名和标号等。例如:MOV AX,DATA;DATA是段名MOV CX,COUNT;COUNT 是符号常量MO
24、V BL,BUFFER;BUFFER 是变量MOV SI,OFFSET ARRAY;OFFSET ARRAY是属;性表达式CALL SBRT1;SBRT1 是过程名JMP DONE;DONE 是标号,2、操作数,汇编语言源程序的格式,50,宏定义:格式:宏指令名 MACRO 形式参数表 ENDM宏调用:格式:宏指令名 实际参数,,宏指令体,宏指令源程序中一个能多次可重复使用的具有独立功能 的代码段。,1、宏指令的定义和使用 宏指令的使用过程有宏定义、宏调用、宏展开。,3.2.5 宏指令,汇编语言源程序的格式,51,例:完成AX的内容乘以2X的宏定义及宏调用定义宏:MULX MACRO PX 形
25、式参数 宏指令名 MOV CL,PX SAL AX,CL ENDM,宏调用:MULX 2;MULX 4;MULX 5;,实际参数,AX(AX)*22,AX(AX)*24,AX(AX)*25,汇编语言源程序的格式,52,宏调用:MULT 120,BL,SAVE,宏展开:在汇编宏指令时,宏汇编程序将宏指令体插入到宏指令所在的位置,并用实际参数代替形式参数。,例:两数相乘,返回积。宏定义:MULT MACRO OPR1,OPR2,RESULT MOV AL,OPR1 IMUL OPR2 MOV RESULT,AX ENDM,MOV AL,120 IMUL BL MOV SAVE,AX,汇编语言源程序
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 微机 第三

链接地址:https://www.31ppt.com/p-6586369.html