第9讲汇编程序概述与程序格式_第1页
第9讲汇编程序概述与程序格式_第2页
第9讲汇编程序概述与程序格式_第3页
第9讲汇编程序概述与程序格式_第4页
第9讲汇编程序概述与程序格式_第5页
已阅读5页,还剩73页未读 继续免费阅读

下载本文档

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

文档简介

1、1、回顾第三章的内容,2、项目:在画面上显示字符串,项目要求和目的(1)项目要求:编制程序追加了段的字符串helloworld! 表示在画面上。 (2)项目目的:学习汇编的升级机调试和汇编语言程序形式和程序设计方法。 3、第三章重点之一,8086命令系统的地址方式、1、即时地址方式2、寄存器地址方式3、直接地址方式4、寄存器间地址方式5、寄存器相对地址方式6、基地址索引方式7、相对基地址索引方式8及其8086指令系统数据传输指令算术运算指令逻辑运算和移位指令字符串处理指令控制传输指令处理器控制指令,第5,4章汇编语言程序设计,汇编语言程序结构汇编语言程序设计方法宏指令DOS系统功能调用汇编语言

2、的编译和调试,内容提要汇编语言指令中助记符号的地址符号是机器语言的符号表示,是低级语言。 源程序是用汇编语言编写的程序,被称为源程序. 机器认识不到。 将源程序的执行汇编程序转换为二进制的浮动目标程序连接程序,连接目标文件和库文件,形成可执行程序并直接在机器上执行高级语言:可读性好,编程简单的汇编语言:后程序效率高,节省内存,执行速度快,第4章宏汇编语言编程概要,例如在画面上显示字符串“Thisisasampleprogram”来打印。 用完整的汇编语言编写程序的形式:7,第4章宏汇编语言程序设计概要:数据段; 数据段da1dbthisisasamplamprogram.db0dh,0AH,$

3、 dataendosstacksegmentst1db100 dub (? ) STACKENDSCODESEGMENT; 代码段mainprocfarassumecs :代码、ds :数据、ss :堆栈org 1000 h start : push Hitachi; 成功地返回必要的段地址和偏移地址MOVAX,0PUSHAXMOVAX,DATA的段地址MOVDS、AXMOVAX、传送堆栈的换乘栈地址MOVSS、AX、8、第四章宏汇编语言程序设计DOS9号功能调用是字符串MOVDX,offset da1int 21 hretmainendpcodeendsendstart,9,第4章汇编器语言

4、编程概要,宏汇编器使用的语句是3种命令性语句伪命令性语句宏汇编语句, 语句格式:标签:指令助记符号操作数,操作数注释标签:指令语句的符号地址后必须加冒号“:”。 注意:标签可以包含字母、数字和特殊符号。第一个字符必须是字符或特殊符号,最长可以省略31个字符,但始终是表示转发的地址。 指令助记符:指令名称的代表符号。 指示命令的操作类型。 可以翻译成机器代码,不能省略。 是关键词。 操作数:参与指令运算的数据。 可能没有一个、多个操作数或操作数。多个操作数用逗号(,)分隔,操作数和命令助记符用“空格”分隔。 操作数可以是常数、变量、标签、寄存器名称和表达式。 注释:说明了指令和程序的功能,所以可

5、以省略。 在评论前加上加号“; 按钮,来查看主文件中将要发送的内容。 另一方面,指令语句、11、4-3汇编语言程序形式的伪指令语句、伪指令语句:没有对应的机器指令,汇编时可以处理伪指令,完成数据定义、存储区域分配、段定义、段分配、程序终止等功能。 语句的格式:名称伪指令指示符操作数,操作数注释名称:用符号地址表示,名称后不能加上冒号(:),但可以省略。 通常是变量名称、段名称、进程名称、符号名称等。 伪指令指示器:汇编器MASM规定的符号。 常用的变量定义语句(DB,DW )、符号定义语句(EQU,)、段定义语句(SEGMENTEND )、段分配语句(ASSUME )、过程定义语句(PROCE

6、NDP )等。 操作数:根据伪指令的不同,要求也不同。 操作数包括常数、变量、字符串和表达式。注释:功能和使用与命令文相同。二、伪指令语句、12、4-3汇编语言程序形式的数据项目、汇编语言的操作数为常数、寄存器、存储器、变量、标签或公式。 其中,常数、变量、标签是3种基本数据项。 1常数:固定值、无属性、确定数据。 二进制:字母“b”的末尾,例如00110100B; 八进制:字母“q”或“o”的末尾,示例1037O、2370Q; 十进制:字母“d”的末尾或省略,或科学表达,例如1234D、5678、2.735E-2; 十六进制:以“h”结束、以“AF”开始时,前面为0、例56H、0A7F2H;

7、 字符串:用单引号括起来,机器存储器中保存着各字符的ASCII代码。 例ABC。三、数据项、13、4-3汇编语言程序形式数据项、2变量:变量通常指定存储在存储部中的值,可在程序执行中进行修正。 所有变量都有三个属性。 段值(SEGMENT ) :变量所在段的段基本地址。 段内偏移地址(OFFSET ) :变量存在的地址和存在的段的开头地址之间的地址偏移字节数。 类型(TYPE ) :显示变量中包含的每个元素的字节数。 字节变量(BYTE )、字变量(WORD )、双字变量(DWORD )等。14、4-3汇编语言程序格式数据项、3 .标签:标签是可执行指令语句的地址的符号表示,可以是程序的重定向

8、目的地地址。 有三个属性。 (1)段值(SEGMENT ) :具有标签的段的段基础地址。 (2)段内偏移地址(OFFSET ) :有标签的地址和某段的段开头地址之间的偏移地址字节数。 (3)类型(TYPE ) :表示能迁移到迁移命令的距离,也称为距离属性。 类型NEAR指示此标签为邻近标签,且仅能够实现段中的转换或调用的类型FAR指示此标签为远程标签,且可进行段之间的转换或调用。 如果标签后面有冒号,则表示此标签距离属性为NEAR,还可以使用伪指令将此属性更改为FAR。15、4-3汇编语言程序格式MASM中的表达式、MASM中的表达式、概要、表达式:运算对象运算符。 汇编时进行运算,把运算结果

9、作为句子中的操作数。 运算对象:常数、变量、标签。 得到的运算结果可以是常数,也可以是存储器的地址。 MASM中的6种运算符:如表4-1所示。 “算术运算符”(ArithmeticOperators )“逻辑运算符”(LogicalOperators )“数值返回运算符”(Value-ReturningOperators )修改属性运算符“其他运算符”(otherOperators ),16, 4-3汇编语言程序格式MASM中的式,表41MASM中的式,17,4-3汇编语言程序格式MASM中的式,表41MASM中的式中的运算符(2),18,4-3汇编语言程序格式ma 表41MASM表达式中的运

10、算符(3)、19、4-3汇编器语言程序形式的运算符是、运算对象和运算结果都可以运算数据。 在运算地址时,通常减少标签上的数字量。 另一方面,对于MOVAX、30*5MOVCX、(TRYARRAY )汇编器,下一个ARRAYdb1、2、3、4、5、6、7、8trydb20指令是算术运算符、和示例阵列array 21 4-3汇编语言程序形式算术运算符,例子汇编命令形式如下:在DAEQU300MOVAX,DA80MOVBX,DAMOD100MOVCX,DA/100MOVDH,01100100BSHR2汇编的情况下,计算式形成指令为注意:包含220MOVBX,0MOVCX,3MOVDH 19H,22,

11、4-3汇编语言程序格式逻辑运算符:and(and ),or(or ),not(not ),xor(xor种:在位运算的情况下,仅运算常数,结果也是常数,2,逻辑运算符,23,4-3汇编语言程序格式逻辑运算符,例MOVAL,NOT0FFHMOVBL,8CHAND73HMOVAH,8CHOR73HMOVCH,8CHXOR73H汇编的情况下,计算式形成命令为MOVAL 作为0FFHMOVCH,0FFH例INAL,端口的端口是输入端口号ANDDX,端口0 fehoutdx,AX; DX包括输出端口号、24,4-3汇编语言的格式关系运算符、EQ (等于)、NE (不等于)、LT (小)、GT (大)、L

12、E (小或等于)、GE (大或等于)这6种。 注意:关系运算符的操作数必须是数据或同一段中两个存储器单元的地址。如果结果为真,则输出都是l,即0fh或0FFFFH,结果为假,则输出都是0。 三、关系运算符,25,4-3汇编语言程序格式关系运算符,例如MOVAX,10HGT16ADDBL,6EQ0110BMOVCX,(端口lt5) and 100 ) or (端口5 ) and200 )汇编的情况下,形成公式在端口5上,26,4-3汇编语言程序形式的数值返回运算符也称为分析运算符。 有OFFSET、SEG、TYPE、LENGTH、SIZE五种。 功能:在变量或标签之前相加,返回要运算的参数值。

13、例如,偏移地址值、段地址值、类型属性、变量中包含的单元数等。 1OFFSET :格式: OFFSET变量或标签功能:返回标签或变量的偏移地址值。 示例DA1是数据段中的变量名称MOVBX,OFFSETDA1时相当于LEABX,da1,4,数值反馈运算符,27,4-3汇编语言程序格式的数值反馈运算符,2SEG :格式: SEG变量或标签功能:变量例如MOVAX,SEGM1MOVDX,AX解: M1是段名DATA的数据段内的变量名称的DATA段从0500H开始时,上述命令以0500H为立即数,在连接时插入命令的汇编后命令为:MOVAX 4-3汇编语言程序格式的数字返回运算符,如果在3TYPE :格

14、式: TYPE变量或标签功能:添加到变量之前,在返回变量的类型属性的标签前面附加,则返回标签的距离属性。 如下表所示。TYPE运算符返回值,29,4-3汇编语言程序格式数值返回运算符,示例A1DB20H,30HA2DW0438HA3DD L1:MOVAH,TYPEA1MOVBH,TYPEA2ADDAL,TYPEA3MOVBL, 在类型l 1汇编器的情况下,算式形成命令为MOVAH、1MOVBH、2ADDAL、4MOVBL、0FFH、30、4-3汇编器语言程序的格式数值返回运算符,4LENGTH :格式: LENGTH变量功能:在变量中使用DUP的情况下例如M1DW100DUP (? )在m2d

15、w 1、2、3m3ba、b、c、DMOVCX、LENGTHM1MOVBL、LENGTHM2MOVAL、LENGTHM3组件的情况下,计算式形成指令为MOVCX,100; 变量中包含的100个字符单元MOVBL,1MOVAL,1,31,4-3返回汇编语言程序的格式值的运算符,5SIZE :格式: SIZE变量功能:在除变量之外之前,返回该变量中包含的总字节数。 SIZELENGTH*TYPE,例如M1DW100DUP (? ) m2dw 1、2、3 m3ba、b、c、DMOVCX、SIZEM1ADDBL、SIZEM2MOVAL、SIZEM3被装配时,计算式形成指令为MOVCX,200; 返回变量

16、中包含的以200字为单位的ADDBL、2MOVAL、1、32、4-3汇编语言程序形式并修正属性运算符,修正属性运算符也称为综合运算符。 有六种类型:分段运算符、PTR、THIS、高、低和短。 在程序运行中,变更变量和标签的属性。 包含段属性、偏移地址属性、类型属性等。 1段运算符:格式:段前缀:变量或地址表达式功能:表示变量或地址已更改为指定的段寄存器提供的段基本地址。 示例4-12MOVAX,ES:BX,5,属性运算符的修改,33,4-3汇编语言程序格式属性运算符的修改,2PTR :格式:类型/距离PTR变量或标签功能:将PTR左侧的类型属性指定给右侧的变量或标签。 注意: PTR本身不分配

17、存储单元,只向分配的存储单元分配新属性,常常与类BYTE、WORD、NEAR、FAR等连用。、34、4-3汇编语言程序形式属性运算符、示例N1DB15H、36HN2DW1122H、3344HLO:MOVAX、WORDPTRN1; 将n-1变换为AX类型MOVBL,BYTEPTRN2将n-2变换为BL类型的例子MOVBX,10H的分析:能立即向用BX地址指定的存储单元发送数字,用PTR指定是字节单元还是字单元。 MOVBYTEPTRBX、10H; BX10HMOVWORDPTRBX,10H; BX,BX 10010H也可以用PTR变更距离属性,JMPFARPTRLOOP用JMP语句将标签LOOP变更为FAR,也可以在其他代码段中使用JMP命令,实现了段间的迁移。 修改,35,4-3汇编语言程序形式属性运算符,3THIS :形式:变量/标签EQUTHIS类型/距离功能:将equalthis右边的类型/距离属性分配给左边的变量/标签,该变量或标签的段地址和偏移地址示例firstequestsbytetabledw200dup (? ) FIRST的偏移地址值与TABLE的偏移地址值相同,不同之处在于FIRST变量为字节类型,T

温馨提示

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

评论

0/150

提交评论