《第四章宏汇编语言程序设计优秀PPT.ppt》由会员分享,可在线阅读,更多相关《第四章宏汇编语言程序设计优秀PPT.ppt(54页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第四章宏汇编语言程序设计第一页,本课件共有54页本章内容本章内容n汇编语言程序格式汇编语言程序格式nMASM中的表达式中的表达式n伪指令语句伪指令语句nDOS系统功能调用系统功能调用nBIOS中断调用中断调用第二页,本课件共有54页概述概述n汇编语言汇编语言n利用指令的助记符、符号地址、标号来编写利用指令的助记符、符号地址、标号来编写的语句的语句n汇编语言源原程序汇编语言源原程序n用汇编语言编写的程序用汇编语言编写的程序汇编程序连接程序汇编语言源程序目标程序可执行程序第三页,本课件共有54页一个例子程序一个例子程序nPage 124,例,例4-1n程序由程序由段的描述段的描述组成组成n指令语句
2、指令语句/伪指令语句构成伪指令语句构成第四页,本课件共有54页4-1 汇编语言程序格式汇编语言程序格式n指令性语句指令性语句n伪指令语句伪指令语句n数据项数据项第五页,本课件共有54页汇编语言程序格式汇编语言程序格式指令语句指令语句n对象对象nCPUn与机器码相对应,要求与机器码相对应,要求CPU执行的操作执行的操作n格式格式标号:标号:指令助记符指令助记符 操作数操作数,操作数,操作数;注释;注释第六页,本课件共有54页汇编语言程序格式汇编语言程序格式伪指令语句伪指令语句n对象对象n汇编程序汇编程序n通知编译器,如何生成目标码。本身不产生通知编译器,如何生成目标码。本身不产生机器目标吗机器目
3、标吗n格式格式名字名字 伪指令助记符伪指令助记符 操作数操作数,操作数,操作数.;注释;注释第七页,本课件共有54页汇编语言程序格式汇编语言程序格式数据项数据项n常数常数n确定的数据,有固定值,没有属性确定的数据,有固定值,没有属性n变量变量n存放在存储单元中的值存放在存储单元中的值n在程序中以变量名的形式出现,代表存放数在程序中以变量名的形式出现,代表存放数据的存储单元的据的存储单元的符号地址符号地址n三属性三属性n段属性段属性/段内偏移量属性段内偏移量属性/类型属性类型属性第八页,本课件共有54页汇编语言程序格式汇编语言程序格式数据项数据项n标号标号n可执行指令语句的首字节地址的符号表示可
4、执行指令语句的首字节地址的符号表示n被被JMP/CALL/LOOP等所使用等所使用n三属性三属性n段属性段属性/段内偏移量属性段内偏移量属性/类型(距离)属性类型(距离)属性第九页,本课件共有54页4-2 MASM中的表达式中的表达式n指令操作数形式指令操作数形式n常数、变量、标号、常数、变量、标号、表达式表达式、关键字、关键字n表达式的构成表达式的构成n运算符运算符n运算对象:常数、变量、标号运算对象:常数、变量、标号n结果为结果为常数常数、地址地址n在汇编时求值在汇编时求值n六大类运算六大类运算第十页,本课件共有54页表达式表达式算术运算算术运算n加、减、乘、除、模、左移、右移加、减、乘、
5、除、模、左移、右移n运算对象、结果运算对象、结果n整数整数n禁忌禁忌n地址相加地址相加n无法求值无法求值第十一页,本课件共有54页表达式表达式算术运算算术运算n例:例:abcequ35hvar1db10hvar2db0ahmovax,abc shr 4movax,abc shl 4movcx,var2-var1movbx,abc-5第十二页,本课件共有54页表达式表达式逻辑运算逻辑运算n与、或、非、异或与、或、非、异或按位运算按位运算n运算对象、结果运算对象、结果n常数常数n禁忌禁忌n变量名变量名第十三页,本课件共有54页表达式表达式逻辑运算逻辑运算n例:例:abc=10habc1equ2ah
6、v1db3ahmovax,abc and 0fhmovax,abc or abc1movax,v1 and abc第十四页,本课件共有54页表达式表达式关系运算关系运算nEQ、NE、LT、GT、LE、GEn对象对象n数据数据n同段内的偏移地址同段内的偏移地址n结果结果n真:全真:全1n假:全假:全0第十五页,本课件共有54页表达式表达式关系运算关系运算n例:例:abcequ10hmovax,abc eq 10movax,abc lt 10movax,abc gt 10第十六页,本课件共有54页表达式表达式数值返回运算数值返回运算nOffset、seg、type、length、sizen对象对象
7、n变量、标号变量、标号n结果结果n值值第十七页,本课件共有54页表达式表达式数值返回运算数值返回运算nOffsetn变量、标号的段内偏移地址变量、标号的段内偏移地址n与与 LEA 的差异?的差异?nSegn变量、标号的段地址变量、标号的段地址第十八页,本课件共有54页表达式表达式数值返回运算数值返回运算nTypen变量、标号的类型属性变量、标号的类型属性nLengthn外层外层DUP的单元个数的单元个数n无无DUP则返回则返回1第十九页,本课件共有54页表达式表达式数值返回运算数值返回运算nSizensize=length*type第二十页,本课件共有54页表达式表达式属性修改运算属性修改运算
8、nPtrn临时改变变量、标号的类型属性临时改变变量、标号的类型属性movword ptr bx,0jmpfar ptr sub1nThisn给变量、标号赋予类型给变量、标号赋予类型firstequ this bytetabledw 2000h第二十一页,本课件共有54页表达式表达式属性修改运算属性修改运算nHigh/Lown字节分离字节分离n常数、常数表达式常数、常数表达式moval,low(offset da1)第二十二页,本课件共有54页4-3 伪指令语句伪指令语句n不生成机器码,帮助解释、生成指令的不生成机器码,帮助解释、生成指令的机器码机器码n变量定义、存储器分配、段定义变量定义、存储
9、器分配、段定义第二十三页,本课件共有54页伪指令语句伪指令语句数据定义数据定义n定义定义/分配变量的存储器单元,并初始化分配变量的存储器单元,并初始化存储器单元存储器单元n格式格式变量名变量名 助记符助记符 操作数,操作数操作数,操作数 ;注释;注释符号地址符号地址DBDWDD第二十四页,本课件共有54页伪指令语句伪指令语句数据定义数据定义nDUP的使用的使用n定义重复数据定义重复数据n例例abcdb10 dup(0)abdb100 dup(1,2,34 dup(0)第二十五页,本课件共有54页伪指令语句伪指令语句数据定义数据定义n字符串的定义字符串的定义nDB/DW/DD?nDB按正常的顺序
10、排列按正常的顺序排列nDW/DD只能以两个一组作定义,顺序不同只能以两个一组作定义,顺序不同第二十六页,本课件共有54页伪指令语句伪指令语句数据定义数据定义n符号地址的使用符号地址的使用nDW?nDD?nDB?第二十七页,本课件共有54页伪指令语句伪指令语句赋值赋值n不分配存储器空间不分配存储器空间n常数常数nEQUn不可重复赋值不可重复赋值n=n可重复赋值可重复赋值第二十八页,本课件共有54页伪指令语句伪指令语句段定义段定义段名段名 segment 定位类型定位类型 组合类型组合类型 分类名分类名段名段名 ends第二十九页,本课件共有54页伪指令语句伪指令语句段定义段定义段名段名 segm
11、ent 定位类型定位类型 组合类型组合类型 分类名分类名段名段名 ends定义该段起始地址定位定义该段起始地址定位ParaByteWordPage第三十页,本课件共有54页伪指令语句伪指令语句段定义段定义段名段名 segment 定位类型定位类型 组合类型组合类型 分类名分类名段名段名 ends定义组合类型定义组合类型NONEPUBLICCOMMONATSTACK第三十一页,本课件共有54页伪指令语句伪指令语句段定义段定义段名段名 segment 定位类型定位类型 组合类型组合类型 分类名分类名段名段名 ends定义该段的分类名定义该段的分类名,分类分类名相同名相同,被组合成同一个被组合成同一
12、个段段第三十二页,本课件共有54页伪指令语句伪指令语句数据定义数据定义dseg segment at 0055honedb0twodwtwothreeddtwofourequ 10hfivedwfoursixdb5-fourdseg ends第三十三页,本课件共有54页伪指令语句伪指令语句段分配语句段分配语句nASSUMEn说明当前段是哪些段说明当前段是哪些段,帮助汇编程序产生段前缀帮助汇编程序产生段前缀n必须放在第一句指令之前必须放在第一句指令之前n不得短缺不得短缺Assume cs:cseg,ds:dseg,ss:sseg,es:esegAssume nothing第三十四页,本课件共有5
13、4页伪指令语句伪指令语句过程定义过程定义n子程序子程序n格式格式过程名过程名 PROC属性属性Ret过程名过程名 ENDP第三十五页,本课件共有54页伪指令语句伪指令语句ENDn结束语句结束语句n标识程序的首指令标识程序的首指令n格式格式END标号标号第三十六页,本课件共有54页伪指令语句伪指令语句段寄存器的初始化段寄存器的初始化nDS/ESn指令装入指令装入mov ax,dsegmov ds,axmov ax,esegmov es,ax第三十七页,本课件共有54页伪指令语句伪指令语句段寄存器的初始化段寄存器的初始化nSS/SPn自动装入自动装入sseg segment STACKdw100
14、dup(0)sseg ends第三十八页,本课件共有54页伪指令语句伪指令语句段寄存器的初始化段寄存器的初始化nSS/SP(指令装入指令装入)n定义定义sseg segmentdw 100 dup(0)toplabelwordsseg endsn装入装入Mov ax,ssegMov ss,axMov sp,offset top top equ this word第三十九页,本课件共有54页伪指令语句伪指令语句段寄存器的初始化段寄存器的初始化nCSn自动装入自动装入nend后的标号便是第一条指令后的标号便是第一条指令(语句语句)CS:IP第四十页,本课件共有54页汇编语言源程序的框架汇编语言源程
15、序的框架n段的描述段的描述ntitlen注释注释n数据段数据段n(附加段附加段)n堆栈段堆栈段n代码段代码段(Assume)nend 标号标号第四十一页,本课件共有54页汇编语言源程序的框架汇编语言源程序的框架Title dsegsegmentdsegendsesegsegmentesegendsssegsegment stack100H dup(0)ssegendscsegsegmentassume cs:cseg,ds:dseg,es:eseg,ss:ssegmainproc farstart:pushdsxorax,axpushaxmovax,dsegmovds,axmovax,eseg
16、moves,esegretmainendpcsegendsendstart第四十二页,本课件共有54页其他伪指令其他伪指令nORG n定位伪指令定位伪指令n设置汇编程序位置指针,指定下一语句的起设置汇编程序位置指针,指定下一语句的起始偏移地址始偏移地址n$n汇编时用于指示下一数据汇编时用于指示下一数据/指令的段内偏移量指令的段内偏移量,当前位置计数器当前位置计数器n常常用来计算前一变量的长度,字节数常常用来计算前一变量的长度,字节数第四十三页,本课件共有54页其他伪指令其他伪指令dsegsegmentorg 1000hv1db10h,20h,30H,40Hcountequ$-v1dsegend
17、s第四十四页,本课件共有54页其他伪指令其他伪指令n Label n给存储单元给存储单元(变量或标号变量或标号)取一名字,并指定其取一名字,并指定其类型类型n同样具有三个属性同样具有三个属性DataByteLabelByteDataWordDW20H Dup(0)第四十五页,本课件共有54页结构定义语句结构定义语句n复杂数据的定义,将不同类型的数据放在复杂数据的定义,将不同类型的数据放在同一个数据结构中同一个数据结构中n结构定义结构定义结构名结构名STRUC结构名结构名ENDSn结构变量预置结构变量预置结构变量名结构变量名结构名结构名 定义结构成员定义结构成员,但不分配内存但不分配内存预置时预
18、置时,才被分配存储单元才被分配存储单元第四十六页,本课件共有54页结构定义预置结构定义预置tabstruct1dbabcdt2 dw?t3 dwseg L1t4dw2 dup(0)t5dw1122Hdw3344Htabendsonetabtwotabthree tabfourtab5 dup 第四十七页,本课件共有54页结构中的变量结构中的变量n简单变量简单变量n由由DB、DW、DD定义的单个结构元素定义的单个结构元素n内容可被修改内容可被修改n如:如:T1DW1234Hn多重变量多重变量n包含多个元素包含多个元素n值不可改,只能使用初值值不可改,只能使用初值n如:如:T4DW2 DUP(0)
19、n T5DW1122H,3344H第四十八页,本课件共有54页结构中的变量结构中的变量n字符串字符串n内容可改,长度不得超过内容可改,长度不得超过n如:如:T6DBASBDn多重结构多重结构n引用另一结构引用另一结构第四十九页,本课件共有54页结构的使用结构的使用MOVTWO.T2,AXMOVBX,FOUR.T50MOVSI,OFFSET FOURMOVBX,SI.T50第五十页,本课件共有54页结构的使用结构的使用n例:例:Page 149/例例4-41n利用结构存储学生的信息利用结构存储学生的信息n结构变量的预置结构变量的预置n第五十一页,本课件共有54页4-4 DOS系统功能调用和系统功
20、能调用和BIOS中断调用中断调用n中断服务子程序中断服务子程序nINT nnAPI,用户不必了解,用户不必了解I/O设备及接口的要求,设备及接口的要求,方便使用方便使用第五十二页,本课件共有54页常用的软件中断常用的软件中断n退出程序退出程序nInt 20h,程序段前缀程序段前缀,DS段首地址段首地址:INT 20H的代码的代码nInt 21h,返回返回DOSnInt 27h,驻留退出驻留退出n根据情况选择退出的方式根据情况选择退出的方式第五十三页,本课件共有54页DOS系统功能调用系统功能调用n一个中断服务子程序,根据不同的调用参一个中断服务子程序,根据不同的调用参数,区分不同的操作数,区分不同的操作第五十四页,本课件共有54页