汇编语言语法和DOS功能调用.ppt
《汇编语言语法和DOS功能调用.ppt》由会员分享,可在线阅读,更多相关《汇编语言语法和DOS功能调用.ppt(71页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第4章章 汇编语言语法和汇编语言语法和DOS功能调用功能调用4.14.1汇编语言源程序汇编语言源程序 1.1.机器语言机器语言用二进制数来表示指令和数据用二进制数来表示指令和数据.例如:例如:B0 64B0 64 2.2.汇汇编编语语言言用用助助记记符符,符符号号地地址址以以及及标标号号等等符符号号书书写写的的程序。程序。例如:例如:MOV ALMOV AL,64H64H ;用汇编语言编写的程序叫用汇编语言编写的程序叫源程序源程序。3.3.高高级级语语言言接接近近自自然然语语言言、习习惯惯的的教教学学语语言言来来描描述述具具体的算法。体的算法。三种语言的比较三种语言的比较能否被机能否被机器直
2、接执器直接执行?行?优点优点缺点缺点应用应用备注备注机器语机器语言言能能占用内存占用内存空间少空间少难认、难难认、难记、难编、记、难编、易错易错汇编语汇编语言言否否编译后目编译后目标程序占标程序占用内存空用内存空间少,执间少,执行速度快,行速度快,效率高效率高非通用性非通用性语言,可语言,可读性差,读性差,编程效率编程效率低。低。系统程序系统程序在线实时在线实时控制、控制、图象处理图象处理等等ASM需需64KB内存内存MASM需需96KB内存内存高级语高级语言言否否通用性强,通用性强,功能强,功能强,易学易用易学易用执行效率执行效率低低科学计算、科学计算、离线仿真离线仿真为什么还要学习和使用汇
3、编语言呢?为什么还要学习和使用汇编语言呢?主要有三点原因:主要有三点原因:1)1)程程序序设设计计人人员员能能更更充充分分地地利利用用机机器器硬硬件件的的全全部部功功能能,发发挥机器长处。挥机器长处。2)2)底层的一些功能仍然靠汇编语言程序来实现。底层的一些功能仍然靠汇编语言程序来实现。3)汇汇编编语语言言程程序序比比高高级级语语言言程程序序的的目目标标代代码码短短且且运运行行速速度度快快。在在要要求求节节省省内内存存空空间间和和提提高高程程序序运运行行速速度度的的重重要要场场合(如实时控制等)常用汇编语言来编制。合(如实时控制等)常用汇编语言来编制。用汇编语言编写的程序不用汇编语言编写的程序
4、不能由机器直接执行,而必能由机器直接执行,而必须经汇编程序翻译成机器须经汇编程序翻译成机器语言程序。汇编语言指令语言程序。汇编语言指令与翻译成的机器语言指令与翻译成的机器语言指令之间基本是一一对应的关之间基本是一一对应的关系。系。汇编过程示意:汇编过程示意:汇编语言程序的建立及汇编过程汇编语言程序的建立及汇编过程编辑程序Prog.asm文件汇编程序Prog.obj文件连接程序Prog.exe文件Edit.exeMasm.exeLink.exe汇编示意图汇编示意图调用MASM.EXE.ASM汇编.OBJ.LST.CRF可选4.1 4.1 汇编语言程序格式汇编语言程序格式 示例程序示例程序DATA
5、 SEGMENT ;数据段 NUM DW 0011101000000111B NOTES DB The result is:,$DATA ENDSCODE SEGMENT ;代码段 ASSUME CS:CODE,DS:DATA BEGIN:MOV AX,DATA MOV DS,AX MOV DX,OFFSET NOTES;显示提示信息 MOV AH,9H INT 21H MOV BX,NUM ;将数装入BX MOV CH,4 ;CH作循环计数器示例程序(续)示例程序(续)ROTATE:DISPLAY:MOV CL,4 ;CL中放移位位数 MOV DL,AL;显示16进制数 ROL BX,CL
6、MOV AH,2 MOV AL,BL INT 21H AND AL,0FH ;AL中为一位16进制数 DEC CH ADD AL,30H ;转换为ASCII码值 JNZ ROTATE CMP AL,9 ;是09的数码?MOV AX,4C00H;返回DOS JLE DISPLAY INT 21H ADD AL,07H ;在AF之间 CODE ENDS ;代码段结束 END BEGIN ;模块结束堆栈段定义格式堆栈段定义格式STACK SEGMENT STACK STA DB 50 DUP(?)TOP EQU LENGTH STASTACK ENDSCODE SEGMENT ASSUME CS:C
7、ODE,DS:DATA,SS:STACKSTART:MOV AX,DATA MOV DS,AX MOV AX,STACK MOV SS,AX MOV SP,TOP :CODE ENDS END START 汇编语言程序的格式可以归结为以下几点:汇编语言程序的格式可以归结为以下几点:(1 1)段的结构段的结构 段名段名1 SEGMENT1 SEGMENT 语句语句1 1 语句语句i i 段名段名1 1ENDSENDS 段名段名2 SEGMENT2 SEGMENT 语句语句1 1 语句语句j j 段名段名2 2ENDSENDS 段名段名n SEGMENTn SEGMENT 语句语句1 1 语句语句
8、k k段名段名n n ENDS ENDS END END 标号标号(2 2)语句的结构)语句的结构 3 3种基本语句类型:种基本语句类型:指令语句指令语句 伪指令语句伪指令语句 宏指令语句宏指令语句指令语句格式指令语句格式 标号:标号:指令助记符指令助记符操作数操作数;注释;注释标号字段标号字段:是一个任选字段,性质为符号便移量,一般用于标记跳转指令的是一个任选字段,性质为符号便移量,一般用于标记跳转指令的目的地址在汇编过程中标号会被替换为一个位的数值偏移量标号必目的地址在汇编过程中标号会被替换为一个位的数值偏移量标号必须位于语句开头,结尾必须使用冒号。须位于语句开头,结尾必须使用冒号。指令助
9、记符和操作数:指令助记符和操作数:这两个字段组成汇编指令本身,指令助记符是必不可这两个字段组成汇编指令本身,指令助记符是必不可少的,操作数则根据指令助记符来确定在汇编过程中,也只有这两个字段少的,操作数则根据指令助记符来确定在汇编过程中,也只有这两个字段会被替换为确定的机器指令代码会被替换为确定的机器指令代码。注释字段:注释字段:是一个任选字段,用于说明程序片段或指令的功能,汇编过程中是一个任选字段,用于说明程序片段或指令的功能,汇编过程中不处理这样的字段,它只是用于提高源程序的可读性注释必须使用分号作不处理这样的字段,它只是用于提高源程序的可读性注释必须使用分号作为开始。为开始。例子:教材1
10、38 例1 伪指令语句格式伪指令语句格式伪伪指指令令语语句句:这这种种语语句句用用于于指指示示汇汇编编程程序序(翻翻译译程程序序)如如何何汇汇编编源源程程序序和和指指令令语语句句不不同同,汇汇编编程程序序处处理理它它时时不不会会产产生生机机器器指指令令代代码码,只只对对伪伪指指令令提提出出的的要要求求进进行行解解释释并并立立即即完完成成要求的操作要求的操作伪伪指指令令的的功功能能大大致致有有分分配配存存储储单单元元、计计算算表表达达式式、定定义义常常量量等等。等等。4.2 4.2 汇编语言中的基本数据汇编语言中的基本数据1 1、标识符、标识符标识符标识符-由程序员自由建立起来的,有特定意义的字
11、符序列。由程序员自由建立起来的,有特定意义的字符序列。标识符的组成规则如下:标识符的组成规则如下:必必须须由由字字母母、数数字字(0 0,9 9)及及特特殊殊符符号号(?,)组成,且必须以字母打头。,)组成,且必须以字母打头。字符总数限制在字符总数限制在3131个以内。个以内。不能使用属于系统专用保留字(保留的字)。不能使用属于系统专用保留字(保留的字)。2 2、常数、常数 常数常数-语句中出现的那些固定值,除了自身的值以外,语句中出现的那些固定值,除了自身的值以外,没有其它任何属性。没有其它任何属性。常数分为两类常数分为两类 (1 1)数值常数)数值常数 (2 2)字符串常数)字符串常数(1
12、 1)数值常数)数值常数(2 2)字符串常数)字符串常数 字字符符串串常常数数是是用用单单引引号号引引起起来来的的一一个个或或多多个个字字符符。字字符符串串常常数数是是以以各各字字符符的的ASCASC码码表表示示的的。如如A A用用41H 41H 表表示示,字符串字符串A1B2A1B2用用41H41H,41H41H,42H42H,42H42H表示。表示。3 3、变量、变量变变 量量-存存 放放 在在 存存 储储 器器 单单 元元 中中 的的 操操 作作 数数,它它 的的 值值 是是 可可 以以 改改 变变 的的,在在程程序序中中出出现现的的是是存存储储器器单单元元地地址址的的符符号号,即即 与
13、某一数据项第一字节相对应的标识符。与某一数据项第一字节相对应的标识符。变量的变量的3 3个属性:个属性:段地址:变量所在段的段地址;段地址:变量所在段的段地址;偏移地址:变量所在段内的偏移地址;偏移地址:变量所在段内的偏移地址;类型:所定义的每个变量所占据的字节数。类型:所定义的每个变量所占据的字节数。4 4、标号、标号标号标号-可执行指令语句可执行指令语句地址的符号表示地址的符号表示,即用标识符来表示地址。,即用标识符来表示地址。标号的标号的3 3个属性:个属性:段地址:与标号对应的指令首字节所在的段地址。段地址:与标号对应的指令首字节所在的段地址。偏移地址:与标号对应的指令首字节所在的偏移
14、地址。偏移地址:与标号对应的指令首字节所在的偏移地址。类型:标号的类型属性有两种:类型:标号的类型属性有两种:NEARNEAR和和FARFAR类型。类型。1 1、数据定义伪指令语句、数据定义伪指令语句共共有有五五条条:DBDB、DWDW、DDDD、DQDQ和和DTDT,分分别别用用来来定定义义字字节节、字字、双字、双字、8 8字节和字节和1010字节。字节。指令格式:指令格式:变量名变量名 助记符助记符 操作数操作数1 1,操作数操作数2 2,操作数操作数n n;注释;注释变变量量名名 助助记记符符 n n DUPDUP(操操作作数数1 1,操操作作数数2 2,操操作作数数n n);注释;注释
15、 注注:操作数可以是常数或表达式操作数可以是常数或表达式,变量名变量名,注释可有可无。注释可有可无。例例4.2 4.2 操操作作数数是是常常数数、表表达达式、字符串数据的定义式、字符串数据的定义 DATA1 DB 10H DATA1 DB 10H,52H52H DATA2 DW 1122H DATA2 DW 1122H,34H34H DATA3 DATA3 DD 5*20HDD 5*20H,0FFEEH0FFEEH DATA4 DB HELLO DATA4 DB HELLO例例4.3 4.3 操作数用操作数用“?”定义不确定值的定义不确定值的变量,用变量,用DUPDUP来定义重复变量,不确定来
16、定义重复变量,不确定值的变量一般用作保留存储空间,以值的变量一般用作保留存储空间,以便存放运算结果。便存放运算结果。DATA1 DB DATA1 DB?DATA2 DW 0D55H DATA2 DW 0D55H,?DATA3 DATA3 DB 5 DUPDB 5 DUP(0 0)DATA4 DW 10 DUPDATA4 DW 10 DUP(?)(?)DATA5 DATA5 DB DB 4 4 DUPDUP(1 1,2 2 DUPDUP(2020)例例4 4.4 .4 BUFFER DW 3,4,$+3BUFFER DW 3,4,$+3设设BUFFERBUFFER的偏移地址为的偏移地址为0088
17、H,0088H,则汇编后如下图所示:则汇编后如下图所示:2 2、标识符赋值与解除伪指令语句、标识符赋值与解除伪指令语句共有共有4 4条:等值伪指令语句条:等值伪指令语句EQUEQU 等号伪指令语句等号伪指令语句“=”“=”解除伪指令语句解除伪指令语句PURGEPURGE 别名定义伪指令语句别名定义伪指令语句LABELLABEL(1 1)等值伪指令)等值伪指令EQUEQU语句语句 指令格式:指令格式:标识符标识符 EQU EQU 操作数操作数 例例4.54.5 DATA EQU 100DATA EQU 100 DATA1 EQU DATADATA1 EQU DATA2 2 CI CI EQU A
18、DD EQU ADD(2 2)等号伪指令语句)等号伪指令语句“=”“=”指令格式:指令格式:标识符标识符=操作数操作数 例例4.64.6 DATA=100 DATA=100 DATA1=DATA+10 DATA1=DATA+10 SOURCE=BX SOURCE=BXSISI MOV AX MOV AX,SOURCESOURCE SOURCE=BX SOURCE=BX MOV CX MOV CX,SOURCESOURCE 注:注:“”允许重复定义,而允许重复定义,而 EQU EQU一经定义不再重新定义。一经定义不再重新定义。(3 3)解除伪指令语句)解除伪指令语句PURGEPURGE指令格式:
19、指令格式:PURGE PURGE 标识符标识符1 1,标识符,标识符2 2,标识符标识符n n(4 4)别名定义伪指令语句)别名定义伪指令语句 格式:别名格式:别名 LABEL LABEL 类型属性类型属性 LABELLABEL:伪指令助记符,不可缺省。:伪指令助记符,不可缺省。例例4.7 4.7 定义变量的别名定义变量的别名 DATAB LABEL BYTE DATAB LABEL BYTE DATAW DW 1234H DATAW DW 1234H,5678H5678H DISF LABEL FAR DISF LABEL FAR DISN:MOV AX DISN:MOV AX,SI SI
20、3 3、段定义伪指令语句段定义伪指令语句 因因8086/8088 CPU8086/8088 CPU的存储器是分段的的存储器是分段的,这就需要有段定语这就需要有段定语句。句。与段有关的伪指令有:与段有关的伪指令有:SEGMENTSEGMENT、ENDSENDS和和ASSUMEASSUME,含义分,含义分别是别是段开始段开始、段结束段结束、指定段寄存器指定段寄存器。(1 1)段结构定义伪指令段结构定义伪指令 格式:格式:段名段名 SEGMENTSEGMENT定位类型组合类型定位类型组合类型类别类别 段名段名 ENDS ENDS 从段名代表的段基值开始定义一个段。其中的定位类型、从段名代表的段基值开
21、始定义一个段。其中的定位类型、组合类型和组合类型和类别类别一般都可省略,若不省略时各项的顺一般都可省略,若不省略时各项的顺序不能变。序不能变。定位类型:定位类型:连接时用于指定该段应开始于什么样的物理地址。可选连接时用于指定该段应开始于什么样的物理地址。可选择下列择下列4 4种之一:种之一:BYTE BYTE:从当前可用的字节地址从当前可用的字节地址XXXX XXXX XXXX XXXX XXXX(XXXX XXXX XXXX XXXX XXXX(任一地任一地址址)开始;开始;WORDWORD:从当前可用的字地址从当前可用的字地址XXXX XXXX XXXX XXXX XXX0(XXXX XX
22、XX XXXX XXXX XXX0(偶数地址偶数地址)开始;开始;PARAPARA(缺省缺省):从当前可用的节地址从当前可用的节地址XXXX XXXX XXXX XXXX 0000(16XXXX XXXX XXXX XXXX 0000(16的倍数的倍数)开始;开始;PAGEPAGE:从当前可用的页地址从当前可用的页地址XXXX XXXX XXXX 0000 0000(256XXXX XXXX XXXX 0000 0000(256的倍数的倍数)开始。开始。其中,其中,1 1节(节(paragraph)paragraph)为为1616字节,字节,1 1页为页为1616节即节即256256字节字节。
23、组合类型:组合类型:连接时用于指定同名的各段之间的组合方式。可选连接时用于指定同名的各段之间的组合方式。可选择下列择下列6 6种之一:种之一:PUBLICPUBLIC STACKSTACK COMMONCOMMON MEMORYMEMORY ATAT表达式表达式 NONE(NONE(缺省缺省)若省略组合类型或说明为若省略组合类型或说明为NONENONE类型,则表示各个段不组合,各有类型,则表示各个段不组合,各有自己的段基值。自己的段基值。对堆栈段,必须用对堆栈段,必须用STACKSTACK类型说明,不能省略。类型说明,不能省略。类别类别:是要将组合后的各段按是要将组合后的各段按类别类别分类存放
24、,同类分类存放,同类别的段别的段将被相邻地放在一起。将被相邻地放在一起。类别类别是由用户定义的、用一对引号括起是由用户定义的、用一对引号括起来的来的长度不超过长度不超过4040个字符的名字个字符的名字(标识符标识符)。SEGMENTSEGMENT和和ENDSENDS这两个伪指令总是成对出现,二者前这两个伪指令总是成对出现,二者前面的段名一致。二者之间的删节部分,对数据段、附加段面的段名一致。二者之间的删节部分,对数据段、附加段及堆栈段,一般是符号、变量定义等伪指令。对于代码段及堆栈段,一般是符号、变量定义等伪指令。对于代码段则是指令及伪指令。则是指令及伪指令。此外,还必须明确段和段寄存器的关系
25、,这可由此外,还必须明确段和段寄存器的关系,这可由ASSUMEASSUME语句来实现。语句来实现。(2)(2)段分配伪指令段分配伪指令ASSUMEASSUME 该语句必须出现在有关的变量及标号使用之前,该语句必须出现在有关的变量及标号使用之前,定义当定义当前有效的前有效的4 4个逻辑段个逻辑段,用于指定程序中所定义的段与各段寄存,用于指定程序中所定义的段与各段寄存器之间的对应关系,指示汇编程序在汇编过程中如何确定指令器之间的对应关系,指示汇编程序在汇编过程中如何确定指令隐含使用的段寄存器。指定某段隐含使用的段寄存器。指定某段(用段名标识用段名标识)中的变量、标号中的变量、标号等数据项由哪个段寄
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 语法 DOS 功能 调用
限制150内