微机接口 第五章汇编语言功能精品文稿.ppt

上传人:石*** 文档编号:52227524 上传时间:2022-10-22 格式:PPT 页数:146 大小:4.83MB
返回 下载 相关 举报
微机接口 第五章汇编语言功能精品文稿.ppt_第1页
第1页 / 共146页
微机接口 第五章汇编语言功能精品文稿.ppt_第2页
第2页 / 共146页
点击查看更多>>
资源描述

《微机接口 第五章汇编语言功能精品文稿.ppt》由会员分享,可在线阅读,更多相关《微机接口 第五章汇编语言功能精品文稿.ppt(146页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、微机接口第五章汇编语言功能第1页,本讲稿共146页 汇编语言程序的格式汇编语言程序的格式 汇编语言程序的上机过程汇编语言程序的上机过程 伪指令语句伪指令语句 汇编语言程序设计的基本方法汇编语言程序设计的基本方法 本章内容本章内容本章内容本章内容第2页,本讲稿共146页 了了解解汇汇编编语语言言程程序序的的基基本本格格式式,及及其其上上机过程。机过程。熟熟练练掌掌握握数数据据定定义义伪伪指指令令、段段定定义义伪伪指指令、符号定义伪指令、过程定义伪指令。令、符号定义伪指令、过程定义伪指令。熟熟练练掌掌握握汇汇编编语语言言程程序序设设计计的的一一般般步步骤骤以以及及顺顺序序程程序序、分分支支程程序序

2、、循循环环程程序、子程序设计的方法。序、子程序设计的方法。学习目的学习目的学习目的学习目的第3页,本讲稿共146页4.1 4.1 汇编语言与汇编程序汇编语言与汇编程序4.1.14.1.1汇编语言的基本概念汇编语言的基本概念汇编语言的基本概念汇编语言的基本概念1机器语言与汇编语言机器语言与汇编语言(MachineLanguageandAssemblyLanguage)由二进制代码由二进制代码0 0,1 1表示的指令称为表示的指令称为机器指令机器指令,相应的程序称为机器语言程序相应的程序称为机器语言程序。用用指指令令助助记记符符表表示示的的指指令令称称为为汇汇编编语语言言指指令令,对应对应的程序称

3、的程序称为汇编语为汇编语言程序。言程序。第4页,本讲稿共146页 例例4-1将将4位二进制数转换为位二进制数转换为ASCII码字符。码字符。当数在当数在0000B-1001B时,对应的时,对应的ASCII码为码为09;当数在;当数在1010B1111B时,对应的时,对应的ASCII码为码为AF。设待转换的数据已在累加器设待转换的数据已在累加器AL中(低中(低4位)。位)。编制的机器语言程序与汇编语言编制的机器语言程序与汇编语言程序如下表所示。程序如下表所示。第5页,本讲稿共146页地地 址址机器代机器代码码对应对应的的汇编汇编指令指令E380:000024 0FAND AL,0FHE380:0

4、0023C 0ACMP AL,0AHE380:000472 02JB NUME380:000604 07ADD AL,07HE380:000804 30NUM:ADD AL,30HE380:000AC3RET第6页,本讲稿共146页2 2汇编语言与高级语言汇编语言与高级语言(Assembly Language and(Assembly Language and Computer-independent Language)Computer-independent Language)汇编语言汇编语言是一种依赖于计算机微处理器的语言是一种依赖于计算机微处理器的语言 汇编语言汇编语言一般不具有通用性和

5、可移植性一般不具有通用性和可移植性 进行进行汇编语言汇编语言程序设计必须熟悉机器的硬件资程序设计必须熟悉机器的硬件资 源和软件资源源和软件资源 高级语言高级语言是面向过程的语言是面向过程的语言 高级语言高级语言具有很好的通用性和可移植性具有很好的通用性和可移植性 第7页,本讲稿共146页学习汇编语言的必要性学习汇编语言的必要性1.利用汇编语言可以设计出效率极高的核心底层程序。2.用汇编语言编写的程序一般比用高级语言编写的程序执行得快,且所占内存较少。3.汇编语言程序能够直接有效地利用机器硬件资源。4.学习汇编语言对于理解和掌握计算机硬件组成及工作原理是十分重要的。第8页,本讲稿共146页4.1

6、.24.1.2汇编语言源程序的组成汇编语言源程序的组成汇编语言源程序的组成汇编语言源程序的组成 1 1汇编语言源程序的结构汇编语言源程序的结构(Program Structure)(Program Structure)例例6-2 6-2 完整的汇编语言源程序示例。完整的汇编语言源程序示例。NAMEHEXTOASC;*DATASEGMENT;数据段定数据段定义义开始开始HEXDB5AHASCDB2DUP(?)DATAENDS;数据段定数据段定义结义结束束;*第9页,本讲稿共146页;*STACK SEGMENT ;堆堆栈栈段定段定义义开始开始DB 256 DUP(S)TOP EQU$-STACK

7、STACK ENDS ;堆堆栈栈段定段定义结义结束束;*;*CODE SEGMENT ;代代码码段定段定义义开始开始ASSUME CS:CODE,DS:DATA,SS:STACKSTART:MOV AX,DATA ;主程序开始主程序开始第10页,本讲稿共146页 MOVDS,AXMOVAX,STACKMOVSS,AXMOVSP,TOPMOVBX,OFFSETASCMOVAL,HEXMOVAH,ALMOVCL,4SHRAL,CLCALLNEARPTRCONVERTHLT;主程序主程序结结束束第11页,本讲稿共146页CONVERT PROC ;过过程程(子程序子程序)定定义义开始开始AND AL

8、,0FH CMP AL,10 JB NUM ADD AL,7NUM:ADD AL,0 RETCONVERT ENDP ;过过程程(子程序子程序)定定义结义结束束CODE ENDS ;代代码码段定段定义结义结束束;*END START ;程序程序结结束束第12页,本讲稿共146页要点总结:汇编语言源程序由汇编语言源程序由段结构段结构组成。组成。一个段一个段由由 “SEGMENTSEGMENT”(段定段定义义开始开始)和和“ENDSENDS”(段定段定义结义结束束)语语句来定句来定义义。每个段都有每个段都有唯一的唯一的段名段名,前后一致。,前后一致。不同不同段段的段名不能相同。的段名不能相同。数据

9、段、堆数据段、堆栈栈段和代段和代码码段的作用各不相同段的作用各不相同。各个段都由一系列各个段都由一系列语语句句组组成成。语语句包括句包括指令指令语语句和句和伪伪指令指令语语句句。第13页,本讲稿共146页2 2汇编语言的语句格式汇编语言的语句格式(Statement Formats)(Statement Formats)汇编语言程序的每行语句由汇编语言程序的每行语句由14个部分组成。指令个部分组成。指令语句和伪指令语句在格式上稍有区别,语句和伪指令语句在格式上稍有区别,指令指令语句的语句的标号后有冒号标号后有冒号“:”,而,而伪指令伪指令语句的标号后则没有冒语句的标号后则没有冒号。号。指令语句

10、的格式为指令语句的格式为LABEL:OPERATIONOPERAND;COMMENT标号域标号域指令助记符域指令助记符域操作数域操作数域注释域注释域第14页,本讲稿共146页伪指令语句的格式为伪指令语句的格式为LABELOPERATIONOPERAND;COMMENT标号域标号域伪指令助记符域伪指令助记符域操作数域操作数域注释域注释域一行最多可有一行最多可有132132个字符个字符注注:指令助记符前面还可以有指令助记符前面还可以有前缀前缀。汇编语言程序语句中的四项,均可以用汇编语言程序语句中的四项,均可以用大写大写、小写小写或或混合编写混合编写。语句的各部分之间至少用一个语句的各部分之间至少用

11、一个空格空格分开分开第15页,本讲稿共146页3.3.3.3.标号标号标号标号(Label)Label)Label)Label)(含数据变量标号和程序位置标含数据变量标号和程序位置标含数据变量标号和程序位置标含数据变量标号和程序位置标号号号号)标标号号是一个自行设计的标识符或名称,最多可由31个字母、数字和特别字符(?、-、$)等组成。但不能用数字开头。不能用数字开头。不能为汇编语言的保留字不能为汇编语言的保留字。注:保留字指有专门用途的字符或字符串,如CPU的寄存器名、指令助记符、伪指令助记符等。第16页,本讲稿共146页(1)数据变量标号的三种属性数据变量标号的三种属性段值:段值:即所在段

12、的段地址。偏移量:偏移量:即数据变量所在位置的地址与其段地址之差值。类型:类型:指该数据变量是字节、字还是双字。(2)程序位置标号的两种属性程序位置标号的两种属性NEAR段内调用或转移标号。FAR段间调用或转移标号。第17页,本讲稿共146页4.4.4.4.操作数操作数操作数操作数域域域域(Operand Fields)(Operand Fields)(Operand Fields)(Operand Fields)操操作作数数可可以以是是常常数数、变变量量、标标号号、寄寄存存器名器名或或表达式表达式(1)常常数数:二进制、八进制、十进制、十六进制或ASCII码字符串。(2)寄存器名寄存器名、标

13、号标号、变量变量指令:指令:MOVAL,HEX中,中,AL为寄存器名,为寄存器名,HEX为变量名。为变量名。第18页,本讲稿共146页(3)表表达达式式:由运运算算符符连接起来的式子叫表达式,按一定的规则对表达式进行运算后得到一个数值或一个地址。表达式可分为算算术术表表达达式式、逻逻辑辑表表达达式式、关关系系运运算表达式算表达式、分析运算表达式分析运算表达式和合成运算表达式。合成运算表达式。第19页,本讲稿共146页用算术运算符+、-、*、/和MOD连接的表达式。算术表达式算术表达式用逻辑运算符AND、OR、XOR和NOT连接的表达式。逻辑表达式逻辑表达式例如:例如:5*8+305*8+30,

14、128/100128/100,206 MOD 128 206 MOD 128 等算术表达等算术表达式。式。第20页,本讲稿共146页 逻辑表达式的结果可能为逻辑表达式的结果可能为8 8位或位或1616位二进制数,位二进制数,视参加运算的数的字长而定。视参加运算的数的字长而定。逻辑运算指令中可以包含有逻辑表达式,如指令逻辑运算指令中可以包含有逻辑表达式,如指令ANDAL,10101010BAND0FH 左边第一个左边第一个AND为逻辑运算指令,第二个为逻辑运算指令,第二个AND为逻辑运算符,为逻辑运算符,10101010BAND0FH为逻辑表达式,为逻辑表达式,其结果在汇编时即已确定,为其结果在

15、汇编时即已确定,为00001010B,故上述指故上述指令等价于令等价于ANDAL,00001010B第21页,本讲稿共146页用EQ、NE、LT、GT、GE和LE连接的表达式。若条件成立,其值为1,否则为0。关系运算表达式关系运算表达式分析运算表达式把存储器操作数分解为几个组成部分;而合成运算式是把这些组成部分综合为存储器操作数。分析运算表达式和合成运算表达式例如:指令例如:指令 MOVBX,5GT3等价于等价于MOVBX,0FFFFH第22页,本讲稿共146页 分析运算表达式和合成运算表达式的操作对象分析运算表达式和合成运算表达式的操作对象都为都为存储器操作数存储器操作数。存储器操作数表示变

16、量、符号地址、存储单元等与存储器操作数表示变量、符号地址、存储单元等与存储器存储器地址地址有关的量。有关的量。分析运算表达式把存储器操作数分析运算表达式把存储器操作数分解分解为几个部分,为几个部分,如分解出段值、偏移量、类型等;如分解出段值、偏移量、类型等;合成运算表达式则把这些组成部分合成运算表达式则把这些组成部分综合综合为存储为存储器操作数。器操作数。幻灯片幻灯片 7777第23页,本讲稿共146页4.2 4.2 伪指令伪指令指指令令语语句句:汇编程序把它们翻译成机器代码,命令8086执行对应操作。伪伪指指令令语语句句:汇编程序并不把它们翻译成机器代码,只是用来指示、引导汇编程序在汇编时做

17、一些操作,它本身不占用存储单元。第24页,本讲稿共146页*变量定义及存储器申请幻灯片变量定义及存储器申请幻灯片43*程序分段及存储器分配程序分段及存储器分配*过程定义过程定义*符号定义符号定义*程序模块定义与通信程序模块定义与通信*宏定义及宏调用宏定义及宏调用*条件汇编条件汇编*格式控制,列表及其他功能格式控制,列表及其他功能伪指令主要分为下列几类:伪指令主要分为下列几类:第25页,本讲稿共146页 段定义伪指令段定义伪指令段定义伪指令段定义伪指令SEGMENT/ENDSSEGMENT/ENDS1.SEGMENT和ENDS定义方式:定义方式:段名SEGMENT定位方式组合方式类别名语句1语句

18、2段名ENDS第26页,本讲稿共146页段段名名是赋予该段的一个名称,SEGMENT与ENDS成对出现,且前面的段名要相同,段名的取法与文件名、标号及变量名等相同。段名段名第27页,本讲稿共146页基本源程序结构段的定义 一般方法一般方法一般方法一般方法 使用特点使用特点使用特点使用特点先定义数据段先定义数据段先定义数据段先定义数据段 DSDS、附加段、附加段、附加段、附加段 ESES、堆栈段、堆栈段、堆栈段、堆栈段 SSSS后编写代码段后编写代码段后编写代码段后编写代码段 CSCS代码段代码段代码段代码段 CSCS必要必要必要必要数据段数据段数据段数据段 DSDS充分充分充分充分附加段附加段

19、附加段附加段 ESES重叠(与数据段重叠(与数据段重叠(与数据段重叠(与数据段 DSDS同段)同段)同段)同段)堆栈段堆栈段堆栈段堆栈段 SSSS省缺省缺省缺省缺第28页,本讲稿共146页基本源程序结构数据段(DS)的定义DATASEGMENTDATASEGMENT TABLETABLEDB01HDB01H,0ABH0ABH,AB2AB2 CNTEQU$-TABLECNTEQU$-TABLEX1DBDUPX1DBDUP(?,1 1,2DUP2DUP(0FFH0FFH)X2DW12ABHX2DW12ABHX3DDX1X3DDX1X4DWSEGX1X4DWSEGX1X5DD12345678HX5D

20、D12345678HDATAENDSDATAENDS段名段名段名段名段定义伪指令段定义伪指令段定义伪指令段定义伪指令变量名变量名变量名变量名常量名常量名常量名常量名第29页,本讲稿共146页基本源程序结构过程定义法(过程定义法(CS段段)CODESEGMENT;CODE为代码段名ASSUMECS:CODE,DS:DATASTARTPROCFAR;START为过程名PUSHDSMOVAX,0PUSHAXMOVAX,DATAMOVDS,AX;上述为固定写法第30页,本讲稿共146页基本源程序结构程序正文(指令集合)RET ;过程返回START ENDP ;结束过程定义CODE ENDS ;结束代码

21、段END START ;结束汇编幻灯片41固定写法固定写法固定写法固定写法第31页,本讲稿共146页基本源程序结构主程序定义法(CS段)CODE SEGMENT ;CODE为代码段名ASSUME CS:CODE,DS:DATA MAIN:MOV AX,DATA;从MAIN开始汇编MOV DS,AX 程序正文(指令集合)MOV AH,4CH INT 21H ;21H号中断退出CODE ENDS ;结束代码段END MAIN ;结束汇编第32页,本讲稿共146页基本源程序结构段说明与段赋值段说明与段赋值 仅说明了仅说明了仅说明了仅说明了 DSDS段(段(段(段(CSCS段必须说明)段必须说明)段必

22、须说明)段必须说明)ASSUMECSASSUMECS:CODECODE,DSDS:DATADATA幻灯片幻灯片幻灯片幻灯片 3636 DSDS段赋值段赋值段赋值段赋值MOVAXMOVAX,DATADATAMOVDSMOVDS,AXAX 说明了说明了说明了说明了DSDS段、段、段、段、ESES段段段段ASSUMECSASSUMECS:CODECODE,DSDS:DATADATA,ESES:EATAEATA DSDS段、段、段、段、ESES段赋值段赋值段赋值段赋值MOVAXMOVAX,DATADATAMOVDSMOVDS,AXAXMOVAXMOVAX,EATAEATAMOVESMOVES,AXAX

23、第33页,本讲稿共146页 位置计数器位置计数器位置计数器位置计数器$和定位伪指令和定位伪指令和定位伪指令和定位伪指令ORGORG1.位置计数器$汇编程序专门设置了一个表示当前位置当前位置的计数器,称位置计数器$。正常情况下,汇编程序每扫描一个字节,位置计数器的值便加1。语句:TOPEQU$-STACK含义:当前位置计数器的值$减去STACK代表的起始位置的值,然后把两者的差值赋予符号常量TOP。语句:JMP$含义:程序跳转到本条指令执行。第34页,本讲稿共146页格式:格式:ORG数据表达式数据表达式功功能能:把位置计数器的值设置为表达式的值。ORG后面的一条指令性语句或数据区定义命令即从指

24、定的位置处进行汇编。2.ORG伪指令第35页,本讲稿共146页格式:格式:ASSUME段寄存器段寄存器:段名段名,段寄存器段寄存器:段名段名,功功能能:用于告知汇编程序,段寄存器CS、DS、ES和SS的内容将被设定为那些段或组的段址段址。段寻址伪指令段寻址伪指令段寻址伪指令段寻址伪指令ASSUMEASSUME第36页,本讲稿共146页注注:(1)段段名名可以是已定义过的任何段段名名或组组名名,也可以是表达式SEG 变变量量或SEG 标号标号,还可以是NOTHING。(2)除除CS外,DS、ES、SS的设置必须通过指令性语句来完成。第37页,本讲稿共146页例例CODESEGMENTASSUME

25、CS:CODE,DS:DATA,SS:STACK,ES:NOTHINGMOVAX,DATAMOVDS,AX;设置;设置DSMOVAX,STACKMOVSS,AX;设置;设置SS CODEENDS幻灯片幻灯片33第38页,本讲稿共146页过程定义伪指令过程定义伪指令过程定义伪指令过程定义伪指令PROC/ENDPPROC/ENDP 过程过程即是子程序子程序。汇编语言规定必须对过程进行定义,以确定过程的三种属性。过程的属性确定之后,就可对调用指令CALL进行正确汇编,决定是产生近调用指令还是远调用指令。1.过程的三种属性 段段属性:过程所在段的段地址。偏移量偏移量属性:过程所处位置的段内偏移地址。类

26、型类型属性(NEAR或FAR)。过程为NEAR或FAR类型。第39页,本讲稿共146页使用格式:过程名使用格式:过程名PROC NEAR/FAR RET 过程名过程名ENDPNEAR-近过程。该过程与调用指令CALL处在同 一个代码段中(段名相同)。FAR-远过程。该过程与调用指令CALL处在不同的代码段中(段名不同)。2.过程的定义第40页,本讲稿共146页功功能能:把把具具有有一一定定功功能能的的程程序序段段设设计计成成为为一一个个过过程程(子程序子程序),便于实现模块化的程序设计。,便于实现模块化的程序设计。注注:(1)CALL指令中过程名起着标号的作用。有段属性、偏移量属性和类型属性(

27、NEAR和FAR)。(2)子程序中至少有一个RET。过过过过程程程程名名名名是是是是为为为为该该该该过过过过程程程程指指指指定定定定的的的的一一一一个个个个名名名名称称称称,与与与与变变变变量量量量、标标标标号的定义法相同。号的定义法相同。号的定义法相同。号的定义法相同。第41页,本讲稿共146页任何变量均有下列三种属性。(1)段属性即变量所使用的段;(2)段内偏移属性;(3)变量的类型:字节、字、双字等。数据定义伪指令与存储器分配数据定义伪指令与存储器分配数据定义伪指令与存储器分配数据定义伪指令与存储器分配 1.1.变量的三种属性变量的三种属性变量的三种属性变量的三种属性DB定义字节型变量,

28、每个变量分配1 1个存储单元DW-定义字型变量,每个变量分配2 2个存储单元DD-定义双字型变量,每个变量分配4 4个存储单元第42页,本讲稿共146页2 2 2 2变量定义及存储器申请伪指令变量定义及存储器申请伪指令变量定义及存储器申请伪指令变量定义及存储器申请伪指令DB/DW/DDDB/DW/DD (1)格式格式1:变量名变量名 DB/DW/DD表达式表达式功功能能:定义一变量,并为其分配一定数量的存储单元,变量的初值由表达式的值指定。若初值可任意,则用问号(?)表示。变量名可省。HEXDB5AH;定义定义字节字节变量变量VWORDDW1234H;定义;定义字字变量变量第43页,本讲稿共1

29、46页注:注:在存放字变量时,低字节在前,高字节在后。BUFFERDW1,0,-1;定义了三个定义了三个字字单元单元STRDBProgram;定义了一个定义了一个字符串字符串注:注:在存放字符串时,存储的是字符的ASCII码。HEX_OFFDWHEX;定义了一个定义了一个字字单元,其单元,其初值为已定义变量初值为已定义变量HEX的偏移量。的偏移量。DVARDD12345678H;定定义义了一个了一个双字双字单单元元第44页,本讲稿共146页ASCDB2DUP(?)功能:分配功能:分配2个字节单元,初值任意个字节单元,初值任意BUFDW100DUP(0)功能:分配功能:分配100个字单元,初值为

30、个字单元,初值为0ZIPDB3DUP(0,2DUP(1)功能:存储单元依次初始化为:功能:存储单元依次初始化为:0,1,1,0,1,1,0,1,1。(2)格式格式2:变量名变量名 DB/DW/DDDUP 表达式表达式第45页,本讲稿共146页 变量经过定义及存储器申请之后,在程序中即变量经过定义及存储器申请之后,在程序中即可像高级语言一样使用。可像高级语言一样使用。MOVAL,HEX;取变量取变量HEX的内容送的内容送 AL寄存器。寄存器。MOVASCBX,AL;取变量取变量ASC的偏移的偏移地址,再与地址,再与BX寄存器的内容相加,得到寄存器的内容相加,得到存存储器操作数的有效地址储器操作数

31、的有效地址EA,再将再将AL寄寄 存器的内存器的内容送入容送入该单该单元。元。幻灯片幻灯片253 3 3 3变量的使用变量的使用变量的使用变量的使用第46页,本讲稿共146页1.EQU1.EQU伪指令伪指令伪指令伪指令格式:符号名格式:符号名EQU 数值表达式数值表达式功功能能:为常量、变量、表达式或其他符号定义一个名字,但不申请分配内存。如:THREE EQU 3 TOP EQU$-STACK 符号定义伪指令(符号定义伪指令(符号定义伪指令(符号定义伪指令(EQUEQU、LABELLABEL)第47页,本讲稿共146页“=”伪操作与EQU相似,其区别是前者可重复定义而后者不能。使用EQU可使

32、程序简单明了和便于修改。注:注:EQU可用PURGE解除。第48页,本讲稿共146页2.LABEL2.LABEL伪指令伪指令伪指令伪指令格式:变量名格式:变量名/标号标号LABEL 类型类型功功能能:为当前存储单元定义一个指定类型的变量名或标号,其类类型型为BYTE、WORD、DWORD、结构名、记录名、NEAR和FAR。第49页,本讲稿共146页BYTE_ARRAYLABELBYTE;定义;定义字节型字节型数数组标号组标号WORD_ARRAYDW50DUP(?);定义;定义字型字型数组数组如定义不同类型的数组:如定义不同类型的数组:程序中的用法:程序中的用法:MOVAL,BYTE_ARRAY

33、2;将;将2号号字节字节单元内容送单元内容送ALMOVAX,WORD_ARRAY0;将;将0号号字字单元内容送单元内容送AX第50页,本讲稿共146页又如:又如:TRANS_NLABELNEARTRANSPROCFAR这样TRANS不仅适合远程调用和转移远程调用和转移,也可用新名TRANS_N适合近程调用和转移近程调用和转移。幻灯片幻灯片 2525 第51页,本讲稿共146页汇编语言程序可划分为许多模块,对每个模块独立地进行汇编及调试(见下图),一般从低层低层到高层高层逐步进行。程序模块定义伪指令(程序模块定义伪指令(程序模块定义伪指令(程序模块定义伪指令(NAME/ENDNAME/END、P

34、UBLIC/EXTRNPUBLIC/EXTRN)第52页,本讲稿共146页PUBLIC二级子模块1PUBLIC二级子模块2PUBLICPUBLIC二级子模块n1二级子模块nPUBLICPUBLICPUBLIC一级子模块1EXTRN一级子模块2EXTRN一级子模块mEXTRN主模块EXTRN主模块EXTRNPUBLIC二级子模块1PUBLIC二级子模块2PUBLICPUBLIC二级子模块n1二级子模块nPUBLICPUBLICPUBLIC一级子模块1EXTRN一级子模块2EXTRN一级子模块mEXTRN汇编语言程序的模块结构第53页,本讲稿共146页1.NAME1.NAME和和和和ENDEND伪

35、指令伪指令伪指令伪指令功功能能:定义一个模块,作为一个独立的汇编单位,NAME缺省时模块若使用了TITLE语句,则TITLE语句中前6个字符为模块名,否则源文件名将作为模块名。格式:格式:NAME 模块名模块名END 标号标号注注:一一个个模模块块是是一一个个独独立立的的汇汇编编单单位位,汇汇编编处处理只进行到模块结束语句理只进行到模块结束语句ENDEND为止。为止。第54页,本讲稿共146页注:符符号号必必须须用用“,”分分开开,且且均均在在本本模块中定义过。模块中定义过。注:注:2.PUBLIC2.PUBLIC伪指令伪指令伪指令伪指令格式:格式:PUBLIC 符号表符号表功功能能:用来说明

36、该模块中被定义的那些常常量量、变变量量和标标号号(含过程名)可以被其他模块所引用。如:PUBLICABC,BCD,CDE第55页,本讲稿共146页3.EXTRN3.EXTRN伪指令伪指令伪指令伪指令格式:格式:EXTRN符号:类型,符号:类型,功功能能:指出本模块中需要引用但却在其他模块中定义并说明为PUBLIC属性的符号(含常量,变量,标号和过程)。被引用符号的类型类型说明:BYTE、WORD、DWORD、NEAR、FAR、ABS(符号常量)。如:EXTRNABC:WORD,BCD:ABS,CDE:NEAR第56页,本讲稿共146页4.3 4.3 汇编语言属性操作符汇编语言属性操作符1.1.

37、分析操作符(数值返回操作符)分析操作符(数值返回操作符)分析操作符(数值返回操作符)分析操作符(数值返回操作符)4.3.14.3.1分析操作符(分析操作符(分析操作符(分析操作符(SEGSEG、OFFSETOFFSET、TYPETYPE、LENGTHLENGTH、SIZESIZE)返回的是变量或标号的段段地地址址,偏偏移移地址地址及类型类型的属性值。格式格式:分析运算符变量或标号其运算的结果为一常数第57页,本讲稿共146页(1)SEG(1)SEG取段址算符取段址算符取段址算符取段址算符(2)OFFSET(2)OFFSET取偏移地址算符取偏移地址算符取偏移地址算符取偏移地址算符功能功能:分离出

38、该变量或标号的段址如:MOV AX,SEG BUF功能功能:分离出该变量或标号的偏移地址如:MOV SI,OFFSET BUF第58页,本讲稿共146页(3)TYPE(3)TYPE取类型算符取类型算符取类型算符取类型算符(4)LENGTH(4)LENGTH取变量所含存储单元的个数取变量所含存储单元的个数取变量所含存储单元的个数取变量所含存储单元的个数功能功能:分离出该变量所含存储单元的个数。功能功能:分离出该变量或标号的类型的字节数。变量类型为BYTE、WORD和DWORD时,返回的值分别为1、2和4;标号类型为NEAR或FAR时,则返回-1或-2。第59页,本讲稿共146页注注意意:在在定定

39、义义该该变变量量时时,数数据据定定义义伪伪指指令令后后面面的的第第一一个个表表达达式式的的形形式式为为“n n DUP(DUP(表表达达式式)”时时,取值为取值为n n,否则为,否则为1 1。如:如:BUF1DB100DUP(0)BUF2DW10,5DUP(2)BUF3DD5DUP(1,2DUP(0)则则LENGTHBUF1=100,LENGTHBUF2=1LENGTHBUF3=5。第60页,本讲稿共146页(5)SIZE(5)SIZE取变量所含存储区的总字节数。取变量所含存储区的总字节数。取变量所含存储区的总字节数。取变量所含存储区的总字节数。功能功能:SIZE=LNGTH*TYPESIZE

40、 BUF1=100(因为(因为TYPE BUF1=1)SIZE BUF2=2(因为(因为TYPE BUF2=2)SIZE BUF3=20(因为(因为TYPE BUF3=4)第61页,本讲稿共146页格式格式:类型类型PTR 表达式表达式类型类型:表达式表达式:是变量、标号或数值:是变量、标号或数值 变量的类型有:变量的类型有:BYTE、WORD和和DWORD;标号的类型有:标号的类型有:NEAR和和FAR;结构名称结构名称4.3.24.3.2属性修改操作符(属性修改操作符(属性修改操作符(属性修改操作符(PTRPTR、THISTHIS、SHORTSHORT)1.PTR1.PTR操作符操作符操作

41、符操作符 PTR操作符用于暂时暂时修改变量或标号的原有属性。第62页,本讲稿共146页功功能能:PTR把它左边的属性指派给它右边的变量、标号或数值,使之产生一个新的存储器地址操作数。如:(1)INC BYTE PTR BX (2)ADD DX,WORD PTR FOOB20新存储器操作数的段地址和段内偏移量与PTR运算符右边的操作数的对应量相同。PTR给已分配的存储器一个另外的定义但并不重新分配存储器。第63页,本讲稿共146页2.SHORT2.SHORT操作符操作符操作符操作符SHORT用于条件转移、转移和调用指令中,指出其转移的相对位移量不超过一个字节所能表达的范围。第64页,本讲稿共14

42、6页3.THIS3.THIS操作符操作符操作符操作符THIS操作符与PTR操作符有类似的功能,但新的属性放在THIS的右边右边。格式:格式:THIS类型类型/距离距离其中类型是BYTE、WORD和DWORD,距离是NEAR和FAR属性。功功能能:与PTR类似建立一个新的存储器地址操作数,但不分配存储器,其类型由THIS指定。(1)FOOB EQU THIS BYTE(2)FAR-OUT EQU THIS 幻灯片25 FAR如:第65页,本讲稿共146页 4.4 4.4 汇编语言程序的上机过程汇编语言程序的上机过程 4.4.1 4.4.1 4.4.1 4.4.1 汇编语言程序上机运行的软件环境汇

43、编语言程序上机运行的软件环境汇编语言程序上机运行的软件环境汇编语言程序上机运行的软件环境DOS操作系统下,编辑、修改和运行汇编语言程序,需要用文本编辑软件、宏汇编程序、连接程序和调试程序。文本编辑软件:EDIT.EXE等宏汇编程序:MASM.EXE,TASM.EXE等连接程序:LINK.EXE,TLINK.EXE等调试程序:CV.EXE,TD.EXE等第66页,本讲稿共146页编程者编辑源程序XXX.ASM 指令 伪指令写字板,记事簿等软件汇编连接MASM.EXELINK.EXEXXX.EXE可执行文件加载程序运行DOS磁盘文件DOS将磁盘文件读入内存从指定起始指令开始执行程序任务XXX.OB

44、J动态调试程序DEBUG.COMPC上汇编语言程序生成过程机器语言(模块代码)第67页,本讲稿共146页4.4.24.4.2源程序的编辑与汇编源程序的编辑与汇编源程序的编辑与汇编源程序的编辑与汇编1.1.编辑源程序编辑源程序编辑源程序编辑源程序 C:ASMEDITHEXTOASC.ASM(回车)(回车)2.2.汇编源程序汇编源程序汇编源程序汇编源程序 C:ASMTASMHEXTOASC(回车)(回车)在汇编中,如果有语法错误,会给出提示信息,指出错误的类型、行号。当汇编无错之后,会自动生成目标文件(文件扩展名为OBJ)。注:待编辑的文件扩展名必须为ASM。第68页,本讲稿共146页汇编程序通过

45、ASSUME语句了解到运行时各段寄存器的设定值后,就可以对被汇编的指令语句中的变量和标号作如下处理。3.3.汇编程序对变量和标号的处理汇编程序对变量和标号的处理汇编程序对变量和标号的处理汇编程序对变量和标号的处理 第69页,本讲稿共146页1.检查指令中所引用的变量和标号是否合理,即它们的段属性是否和某个段寄存器的段假设值相符。2.检查是否需要为所引用的变量和标号产生跨段前缀字节,即检查变量和标号的段属性是否与硬件为该指令所规定的段寄存器的假设值相符。第70页,本讲稿共146页4.4.34.4.3目标程序的连接目标程序的连接目标程序的连接目标程序的连接 C:ASMTLINKHEXTOASC(回

46、车)(回车)连接成功后,将生成可执行程序HEXTOASC.EXE。6.4.46.4.4程序的调试与运行程序的调试与运行程序的调试与运行程序的调试与运行 1 1调试可执行程序调试可执行程序调试可执行程序调试可执行程序 利用TurboDebuger(TD)对可执行程序进行调试,以检查程序可能存在的各种错误:C:ASMTDHEXTOASC.EXE(回车)(回车)第71页,本讲稿共146页程序在存储区中程序在存储区中存放的逻辑地址存放的逻辑地址源程序部分源程序部分程序执行后各寄存器、程序执行后各寄存器、标志位的结果标志位的结果数据段中存放的数据段中存放的40个个“A”及对应的及对应的ASCII码码DE

47、BUG调试环境如下:调试环境如下:第72页,本讲稿共146页2 2运行可执行程序运行可执行程序运行可执行程序运行可执行程序 C:ASMHEXTOASC(回车)(回车)第73页,本讲稿共146页 4.5 4.5 汇编语言程序与汇编语言程序与DOSDOS的接口的接口 4.5.1DOS4.5.1DOS和和和和BIOSBIOS的功能调用的功能调用的功能调用的功能调用 1 1DOSDOS系统系统系统系统功能调用的一般步骤功能调用的一般步骤功能调用的一般步骤功能调用的一般步骤DOS为磁盘操作系统(DiskOperatingSystem)的简称。DOS提供了极为丰富的子程序,能够实现控制控制键盘、显示器、读

48、写文件、串行通信等一系列功能键盘、显示器、读写文件、串行通信等一系列功能。(课程设计中的数据显示,输入,响铃设计等)(课程设计中的数据显示,输入,响铃设计等)第74页,本讲稿共146页使用使用使用使用DOSDOS系统功能调用的一般过程:见系统功能调用的一般过程:见系统功能调用的一般过程:见系统功能调用的一般过程:见下下下下图所示。图所示。图所示。图所示。功能调用号AH置入口参数执行“INT21H”分析出口参数系统功能调用的方法第75页,本讲稿共146页键盘功能调用键盘功能调用AH功功能能入口参数入口参数出口参数出口参数1从从键键盘盘输输入入一一个个字字符符,并并在在 屏屏 幕幕 上上 回回 显

49、显,检检 查查Ctrl+Bteak键键AL=字符字符6直直接接控控制制台台输输入入输输出出字字符符,回回 显显,不不 检检 查查Ctrl+Break键键DL=0FFHAL=字符字符7直直接接键键盘盘输输入入字字符符,无无回回显,不检查显,不检查Ctrl+Break键键AL=字符字符8键键盘盘输输入入一一个个字字符符,无无回回显,检查显,检查Ctrl+Break键键AL=字符字符0AH输入字符串到内存缓冲区输入字符串到内存缓冲区DS:DX=缓缓冲冲区区首首址址0BH检查键盘输入状态检查键盘输入状态AL=FFH有有 键键入入AL=0无键入无键入0CH清清键键盘盘缓缓冲冲区区,调调用用键键盘盘输输入

50、功能入功能AL=键键 盘盘 功功 能能 号号(1,6,7,8,A)第76页,本讲稿共146页(1 1)键盘输入)键盘输入)键盘输入)键盘输入(1(1号调用号调用号调用号调用)格式:格式:MOV AH,1 INT 21H功功能能:等待从键盘输入一个字符并将输入字符的ASCII码码送入寄存器AL中,同时在显示器上显示该字符,碰到CTRL+Break则退出。2 2DOSDOSDOSDOS系统功能调用的一般步骤系统功能调用的一般步骤系统功能调用的一般步骤系统功能调用的一般步骤第77页,本讲稿共146页(2 2)显示单个字符)显示单个字符)显示单个字符)显示单个字符(2(2号调用号调用号调用号调用)格式

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁