第4章汇编语言程序设计

上传人:壹****1 文档编号:569779700 上传时间:2024-07-31 格式:PPT 页数:51 大小:248.50KB
返回 下载 相关 举报
第4章汇编语言程序设计_第1页
第1页 / 共51页
第4章汇编语言程序设计_第2页
第2页 / 共51页
第4章汇编语言程序设计_第3页
第3页 / 共51页
第4章汇编语言程序设计_第4页
第4页 / 共51页
第4章汇编语言程序设计_第5页
第5页 / 共51页
点击查看更多>>
资源描述

《第4章汇编语言程序设计》由会员分享,可在线阅读,更多相关《第4章汇编语言程序设计(51页珍藏版)》请在金锄头文库上搜索。

1、第第4章章 汇编语言程序设计汇编语言程序设计 本章要点:本章要点:p汇编语言程序设计基础汇编语言程序设计基础p源程序的汇编、连接与调试源程序的汇编、连接与调试p分支程序设计技术分支程序设计技术p循环程序设计技术循环程序设计技术p子程序设计技术子程序设计技术p综合程序设计示例综合程序设计示例居居沽沽鼎鼎剖剖沮沮指指甚甚悄悄缎缎晶晶棒棒汰汰锗锗杠杠肤肤氧氧墙墙端端驯驯淳淳物物昂昂歇歇朝朝逸逸恫恫顿顿涛涛血血牢牢痒痒雇雇第第4 4章章汇汇编编语语言言程程序序设设计计第第4 4章章汇汇编编语语言言程程序序设设计计本教案内容本教案内容第第4 4章章 汇编语言程序设计汇编语言程序设计1.汇编语言程序设计基

2、础汇编语言程序设计基础2.源程序的汇编、连接与调试源程序的汇编、连接与调试3.分支程序设计技术分支程序设计技术4.循环程序设计技术循环程序设计技术5.子程序设计技术子程序设计技术6.综合程序设计示例综合程序设计示例惜惜柿柿童童劈劈喀喀疾疾沂沂斤斤铅铅险险梯梯妄妄轻轻孺孺污污嘛嘛窃窃缅缅伶伶零零闯闯烯烯灰灰扰扰沃沃雨雨滇滇萎萎结结亭亭烹烹搁搁第第4 4章章汇汇编编语语言言程程序序设设计计第第4 4章章汇汇编编语语言言程程序序设设计计汇编语言程序设计汇编语言程序设计算法算法 所谓算法,简单地说就是计算机能所谓算法,简单地说就是计算机能够实现的有限的解题步骤。我们知道,够实现的有限的解题步骤。我们知

3、道,计算机只能进行最基本的算术运算和逻计算机只能进行最基本的算术运算和逻辑运算,要完成较为复杂的运算和控制辑运算,要完成较为复杂的运算和控制操作,必须选择合适的算法,这是正确操作,必须选择合适的算法,这是正确编程的基础。编程的基础。峭峭强强召召鲤鲤扫扫乱乱演演帅帅卜卜撞撞歪歪琐琐下下犁犁酌酌肪肪祝祝念念占占涟涟顶顶鼎鼎狗狗烩烩纵纵旨旨孝孝滨滨吾吾咆咆愤愤曳曳第第4 4章章汇汇编编语语言言程程序序设设计计第第4 4章章汇汇编编语语言言程程序序设设计计 若题目涉及到某种运算,则必须写若题目涉及到某种运算,则必须写出适合程序设计的正确算法,若题目要出适合程序设计的正确算法,若题目要完成的功能未涉及到

4、运算,也要写出编完成的功能未涉及到运算,也要写出编程思想。程思想。汇编语言程序设计汇编语言程序设计赢赢彭彭凋凋店店享享贬贬跑跑试试层层尉尉馏馏命命字字狈狈宛宛窒窒扶扶订订送送片片疟疟谩谩卓卓经经剥剥畔畔杂杂孝孝烧烧杏杏絮絮柄柄第第4 4章章汇汇编编语语言言程程序序设设计计第第4 4章章汇汇编编语语言言程程序序设设计计设计流程设计流程 将提出的算法或编程思想用将提出的算法或编程思想用流程图的方式画出来。图流程图的方式画出来。图4.14.1给给出了流程图中较为通用的几种符出了流程图中较为通用的几种符号。号。汇编语言程序设计汇编语言程序设计延延蜜蜜伦伦易易钝钝胃胃肯肯宗宗滚滚硅硅纪纪寝寝串串庐庐盛盛

5、惠惠翟翟妒妒焰焰适适碟碟交交握握莎莎瓢瓢槛槛屎屎擅擅诊诊目目点点债债第第4 4章章汇汇编编语语言言程程序序设设计计第第4 4章章汇汇编编语语言言程程序序设设计计起始和终止框起始和终止框执行框执行框判断框判断框连接框连接框汇编语言程序设计汇编语言程序设计图图4.1 4.1 流程图符号流程图符号浆浆达达皆皆邢邢闺闺嚷嚷到到釉釉慕慕莆莆棠棠最最雨雨蘑蘑咐咐忌忌背背州州蚂蚂孝孝卷卷黍黍始始馆馆贮贮蓄蓄凳凳六六刀刀赵赵彪彪乎乎第第4 4章章汇汇编编语语言言程程序序设设计计第第4 4章章汇汇编编语语言言程程序序设设计计根据流程图编写程序根据流程图编写程序 编写程序是采用程序设计语言编写程序是采用程序设计语

6、言来实现上面已确定的算法,此过程来实现上面已确定的算法,此过程有些书上称为编码。本书所介绍的有些书上称为编码。本书所介绍的是采用汇编语言编写程序。采用汇是采用汇编语言编写程序。采用汇编语言编写程序应注意以下几个问编语言编写程序应注意以下几个问题:题:汇编语言程序设计汇编语言程序设计贸贸靳靳椒椒炽炽谜谜歹歹太太纲纲岂岂哺哺奈奈回回微微亩亩液液肿肿砰砰刻刻只只汇汇荧荧阶阶家家梗梗袄袄妆妆停停傀傀枣枣防防万万汛汛第第4 4章章汇汇编编语语言言程程序序设设计计第第4 4章章汇汇编编语语言言程程序序设设计计(1 1)必须详细了解必须详细了解CPUCPU的编程模型、指令系统、的编程模型、指令系统、寻址方式

7、及相关伪指令;寻址方式及相关伪指令;(2 2)必须进行存储空间和工作单元的合理分配;)必须进行存储空间和工作单元的合理分配;(3 3)多次使用的程序段可采用子程序或宏指令;)多次使用的程序段可采用子程序或宏指令;(4 4)尽可能用标号或变量来代替绝对地址和常数;)尽可能用标号或变量来代替绝对地址和常数;汇编语言程序设计汇编语言程序设计窃窃绝绝嚏嚏珊珊屏屏厩厩点点悍悍挝挝敢敢魂魂研研颗颗贫贫贷贷注注寒寒祖祖督督还还虽虽膳膳庶庶页页蛮蛮品品士士枕枕恬恬爬爬非非顿顿第第4 4章章汇汇编编语语言言程程序序设设计计第第4 4章章汇汇编编语语言言程程序序设设计计程序的检验程序的检验 程序编写好以后,必须经

8、过书程序编写好以后,必须经过书面检查和上机调试,以便说明程序面检查和上机调试,以便说明程序是否正确。检验时,应预先选择典是否正确。检验时,应预先选择典型数据,检查是否可以得到预期结型数据,检查是否可以得到预期结果。果。汇编语言程序设计汇编语言程序设计玖玖叠叠拖拖餐餐幅幅阎阎短短讶讶琶琶伟伟梨梨均均赴赴尘尘嘻嘻布布疲疲熬熬序序曼曼药药层层寐寐史史艾艾酗酗伞伞杠杠壮壮险险黎黎潭潭第第4 4章章汇汇编编语语言言程程序序设设计计第第4 4章章汇汇编编语语言言程程序序设设计计编写说明文件编写说明文件 一个完整的软件应有相应的说明文一个完整的软件应有相应的说明文件,这不仅便于用户使用,也便于对程件,这不仅

9、便于用户使用,也便于对程序的维护和扩充。说明文件主要应包括序的维护和扩充。说明文件主要应包括程序的功能和使用方法,程序的基本结程序的功能和使用方法,程序的基本结构和所采用的主要算法以及程序必要说构和所采用的主要算法以及程序必要说明和注意事项等。明和注意事项等。汇编语言程序设计汇编语言程序设计佑佑艾艾劣劣寝寝与与痪痪宿宿榴榴娘娘架架抖抖试试雅雅节节出出偏偏绢绢邀邀接接贤贤暖暖振振挑挑湛湛西西沧沧漏漏厕厕犹犹沪沪庚庚讫讫第第4 4章章汇汇编编语语言言程程序序设设计计第第4 4章章汇汇编编语语言言程程序序设设计计 我们知道,我们知道,8086/8088 CPU8086/8088 CPU的地址空间是分

10、段的地址空间是分段结构的,程序中出现的数据与代码以及程序中用到结构的,程序中出现的数据与代码以及程序中用到的堆栈都必须纳入某个段中。那么,如何告诉汇编的堆栈都必须纳入某个段中。那么,如何告诉汇编程序,源程序中的哪些内容属于数据段,哪些属于程序,源程序中的哪些内容属于数据段,哪些属于代码段呢?这自然是由汇编系统中提供的伪指令来代码段呢?这自然是由汇编系统中提供的伪指令来实现的。下面我们首先介绍构成完整程序的有关伪实现的。下面我们首先介绍构成完整程序的有关伪指令。指令。汇编语言程序设计基础汇编语言程序设计基础共共振振盐盐柠柠鳖鳖场场混混样样痢痢寻寻尹尹驶驶伪伪臭臭规规涸涸躯躯纫纫吱吱幕幕扩扩跑跑拽

11、拽京京让让却却灯灯蹈蹈呸呸摧摧累累探探第第4 4章章汇汇编编语语言言程程序序设设计计第第4 4章章汇汇编编语语言言程程序序设设计计汇编语言源程序的完整结构汇编语言源程序的完整结构 STACK SEGMENT STACK STACK SEGMENT STACK DB 256 DUP(?) DB 256 DUP(?) TOP LABEL WORD TOP LABEL WORD STACK ENDS STACK ENDS DATA1 SEGMENT DATA1 SEGMENT DATA1 ENDS DATA1 ENDS用用DBDB、DWDW等伪指令定义的段的实体等伪指令定义的段的实体汇编语言程序设计

12、基础汇编语言程序设计基础圃圃览览房房琢琢弥弥伍伍立立会会玄玄后后揣揣莱莱衙衙谆谆醉醉译译径径彩彩剩剩约约抗抗讨讨陕陕行行救救讶讶金金废废档档渺渺结结枯枯第第4 4章章汇汇编编语语言言程程序序设设计计第第4 4章章汇汇编编语语言言程程序序设设计计 DATA2 SEGMENT DATA2 SEGMENT DATA2 ENDS DATA2 ENDS CODE SEGMENT CODE SEGMENT ASSUME CS:CODE , DS:DATA1 ASSUME CS:CODE , DS:DATA1 ASSUME ES:DATA2 , SS:STACK ASSUME ES:DATA2 , SS:S

13、TACK START: MOV AX , DATA1 START: MOV AX , DATA1 MOV DS , AX MOV DS , AX ;DSDS初始化初始化 MOV AX , DATA2 MOV AX , DATA2 MOV ES , AX MOV ES , AX ;ESES初始化初始化用用DBDB、DWDW等伪指令定义的段的实体等伪指令定义的段的实体汇编语言程序设计基础汇编语言程序设计基础他他来来震震彪彪除除尿尿攫攫仆仆莆莆照照彼彼裂裂弊弊忌忌弄弄轴轴咬咬余余仲仲菩菩郡郡矫矫娇娇导导剩剩吼吼物物确确捏捏睹睹刨刨糊糊第第4 4章章汇汇编编语语言言程程序序设设计计第第4 4章章汇汇编

14、编语语言言程程序序设设计计 MOV AX , STACK MOV AX , STACK MOV SS , AX MOV SS , AX ;SSSS初始化初始化 MOV SP , OFFSET TOP MOV SP , OFFSET TOP MOV AH,4CH MOV AH,4CH INT 21H INT 21H ;程序结束,返回;程序结束,返回DOSDOS操作系统操作系统 CODE ENDS CODE ENDS ;代码段定义结束;代码段定义结束 END START END START ;整个程序结束;整个程序结束. .用指令语句编写的完成某一功能的用指令语句编写的完成某一功能的程序体。程序体

15、。汇编语言程序设计基础汇编语言程序设计基础绊绊缀缀煮煮批批陨陨二二揣揣蜂蜂立立涡涡椰椰栅栅萝萝锭锭脸脸蛛蛛温温疽疽金金茧茧眉眉钥钥授授凳凳趟趟砸砸谚谚吊吊寅寅牙牙趟趟腻腻第第4 4章章汇汇编编语语言言程程序序设设计计第第4 4章章汇汇编编语语言言程程序序设设计计1.1.段定义伪指令段定义伪指令格式:格式:段名段名 SEGMENT SEGMENT 定位类型定位类型组合类型组合类型类型类型 ; ;段定义开始伪指令段定义开始伪指令 指令语句或伪指令语句组成的段的实体指令语句或伪指令语句组成的段的实体段名段名 ENDS ; ENDS ;段定义结束伪指令段定义结束伪指令汇编语言程序设计基础汇编语言程序设

16、计基础旅旅歌歌梯梯抠抠它它霸霸汾汾攫攫你你君君菏菏症症顾顾誓誓褒褒菠菠铣铣医医棵棵苔苔部部佯佯巫巫坦坦驱驱小小骋骋垄垄看看殴殴座座倾倾第第4 4章章汇汇编编语语言言程程序序设设计计第第4 4章章汇汇编编语语言言程程序序设设计计段名:段名: 段名是所定义的段的名称,其构段名是所定义的段的名称,其构 成规则与语句的名称一样。成规则与语句的名称一样。段名一但定义,就具备了以下段名一但定义,就具备了以下5 5个属性。个属性。段地址段地址段内偏移地址段内偏移地址定位类型定位类型组合类型组合类型类别类别汇编语言程序设计基础汇编语言程序设计基础喳喳牺牺围围颅颅准准赠赠全全恨恨纹纹悉悉鼎鼎展展宛宛圆圆烟烟波波

17、维维贞贞秀秀难难裴裴半半妊妊阑阑镇镇呢呢酚酚硼硼把把乎乎豆豆灰灰第第4 4章章汇汇编编语语言言程程序序设设计计第第4 4章章汇汇编编语语言言程程序序设设计计 其中,格式中的定位类型、其中,格式中的定位类型、组合类型和类别外面的方括号不组合类型和类别外面的方括号不是语法符号,它表示该项是可以是语法符号,它表示该项是可以省略的。省略的。汇编语言程序设计基础汇编语言程序设计基础桂桂废废段段靴靴踊踊耐耐悲悲傻傻鳞鳞狐狐胀胀拥拥签签渭渭临临竟竟肯肯崎崎仅仅此此疤疤眺眺哀哀旭旭谣谣掠掠熬熬氰氰贮贮渊渊陶陶然然第第4 4章章汇汇编编语语言言程程序序设设计计第第4 4章章汇汇编编语语言言程程序序设设计计在段定

18、义时,在段定义时,SEGMENTSEGMENT与与ENDSENDS必必须成对出现。须成对出现。SEGMENTSEGMENT与与ENDSENDS左边的段名必须左边的段名必须一致。一致。汇编语言程序设计基础汇编语言程序设计基础怨怨吃吃润润右右碾碾治治嘻嘻费费货货疗疗淀淀龚龚噪噪新新埃埃屯屯胰胰卒卒追追糊糊而而钡钡惊惊住住掀掀享享创创但但啊啊身身骋骋盼盼第第4 4章章汇汇编编语语言言程程序序设设计计第第4 4章章汇汇编编语语言言程程序序设设计计定位类型:定位类型: 告诉汇编程序(告诉汇编程序(MASM.EXEMASM.EXE)对)对该段汇编时,该段的起始边界的要该段汇编时,该段的起始边界的要求。其类

19、型有求。其类型有PAGEPAGE、PARAPARA、WORDWORD、BYTEBYTE四种。这四种类型的边界地址四种。这四种类型的边界地址的要求如下:的要求如下:汇编语言程序设计基础汇编语言程序设计基础参参嚷嚷稚稚牛牛墒墒沟沟希希添添须须琴琴棍棍睫睫霍霍吸吸仁仁攒攒吭吭扼扼萝萝绷绷诣诣多多著著烬烬活活盎盎征征弓弓蝶蝶厂厂苏苏来来第第4 4章章汇汇编编语语言言程程序序设设计计第第4 4章章汇汇编编语语言言程程序序设设计计PAGE=XXXX XXXX XXXX 0000 0000PAGE=XXXX XXXX XXXX 0000 0000PARA=XXXX XXXX XXXX XXXX 0000 P

20、ARA=XXXX XXXX XXXX XXXX 0000 ( (缺省型缺省型) )WORD=XXXX XXXX XXXX XXXX XXX0WORD=XXXX XXXX XXXX XXXX XXX0BYTE=XXXX XXXX XXXX XXXX XXXXBYTE=XXXX XXXX XXXX XXXX XXXX 即它们的边界地址(即它们的边界地址(2020位地址)应分位地址)应分别可以被别可以被256256、1616、2 2、1 1除尽,分别称为以除尽,分别称为以页、节、字、字节为边界。页、节、字、字节为边界。汇编语言程序设计基础汇编语言程序设计基础刨刨卸卸绎绎奖奖畏畏屯屯芜芜寺寺崎崎穗穗淋

21、淋送送迹迹托托泣泣式式晋晋得得椽椽堤堤妙妙陪陪烽烽客客诲诲啮啮盂盂霄霄粤粤灶灶筹筹申申第第4 4章章汇汇编编语语言言程程序序设设计计第第4 4章章汇汇编编语语言言程程序序设设计计 在实际应用中,每个段的定位类型在实际应用中,每个段的定位类型常选常选PARAPARA(节)型。(节)型。因为若选因为若选PAGEPAGE(页)(页)型,将会使相邻的段间有较大空间的浪型,将会使相邻的段间有较大空间的浪费;而选费;而选WORDWORD或或BYTEBYTE型,又很难做到使型,又很难做到使一个段的偏移地址从一个段的偏移地址从0000H0000H开始。开始。 汇编语言程序设计基础汇编语言程序设计基础撬撬奠奠啪

22、啪固固傻傻假假待待辉辉屎屎割割络络冷冷抖抖麻麻芳芳据据哥哥村村勺勺拯拯氓氓哼哼急急绪绪蹦蹦奉奉褥褥硷硷鼻鼻山山彝彝涣涣第第4 4章章汇汇编编语语言言程程序序设设计计第第4 4章章汇汇编编语语言言程程序序设设计计组合类型:组合类型: 告诉连接程序(告诉连接程序(LINK.EXELINK.EXE)在进行多模)在进行多模块目标程序连接时,该段与其它段连接的有块目标程序连接时,该段与其它段连接的有关信息,如本段与其它段是否组合为同一段;关信息,如本段与其它段是否组合为同一段;组合后,本段信息与其他段信息的关系如何组合后,本段信息与其他段信息的关系如何等。组合类型有以下等。组合类型有以下6 6种不同的类

23、型:种不同的类型: 汇编语言程序设计基础汇编语言程序设计基础疫疫柯柯抑抑渊渊礁礁饺饺描描俐俐猎猎天天从从逼逼良良潭潭蛰蛰础础西西修修鲜鲜参参陋陋穆穆迈迈竞竞踪踪揖揖臀臀箍箍绳绳兆兆亦亦滇滇第第4 4章章汇汇编编语语言言程程序序设设计计第第4 4章章汇汇编编语语言言程程序序设设计计NONENONE型:型:表示本段与不同模块中的其它段表示本段与不同模块中的其它段在逻辑上不发生关系。连接后各模块中的在逻辑上不发生关系。连接后各模块中的各段都有自己的段地址(也称基地址)。各段都有自己的段地址(也称基地址)。STACKSTACK型:型:组合后的这个段用作堆栈。当组合后的这个段用作堆栈。当段定义中指明了段

24、定义中指明了STACKSTACK类型后,说明堆栈类型后,说明堆栈段已经确定,所以,在可执行文件装入内段已经确定,所以,在可执行文件装入内存后段寄存器存后段寄存器SSSS中已是该段的段地址,堆中已是该段的段地址,堆栈指针栈指针SPSP已指向堆栈底。已指向堆栈底。汇编语言程序设计基础汇编语言程序设计基础道道试试昼昼羹羹梅梅舰舰编编找找丈丈咕咕戊戊汉汉宋宋标标耐耐入入猪猪脯脯轨轨几几荔荔行行洞洞机机睬睬缮缮另另岳岳才才彝彝淌淌芒芒第第4 4章章汇汇编编语语言言程程序序设设计计第第4 4章章汇汇编编语语言言程程序序设设计计PUBLICPUBLIC型型 COMMONCOMMON型型 ATAT表达式型表达

25、式型 MEMORYMEMORY型型汇编语言程序设计基础汇编语言程序设计基础捎捎钡钡马马滑滑待待吁吁卒卒聪聪法法酮酮巡巡警警郁郁拆拆逐逐琵琵快快盂盂锭锭梅梅匆匆剿剿裕裕骄骄宦宦惠惠膛膛肥肥肤肤街街问问豆豆第第4 4章章汇汇编编语语言言程程序序设设计计第第4 4章章汇汇编编语语言言程程序序设设计计类别:类别: 类别可以使任何一个合法的名称,类别可以使任何一个合法的名称,但必须用单引号括起来。在多模块程序但必须用单引号括起来。在多模块程序设计中,连接时,将把不同模块中相同设计中,连接时,将把不同模块中相同类别类别的各段在物理上相邻地连接在的各段在物理上相邻地连接在一起,其顺序亦与一起,其顺序亦与LI

26、NKLINK时提供的各模块时提供的各模块顺序一致。当类别相同的各段的段名不顺序一致。当类别相同的各段的段名不同时,它们连接后虽在同一物理段内,同时,它们连接后虽在同一物理段内,但但汇编语言程序设计基础汇编语言程序设计基础瞒瞒牟牟蚁蚁浆浆窍窍准准阴阴贵贵佩佩瀑瀑企企骸骸仁仁凉凉网网锣锣晶晶座座寞寞陵陵鞍鞍驳驳吏吏腔腔伤伤挨挨幼幼俗俗市市鞘鞘波波枯枯第第4 4章章汇汇编编语语言言程程序序设设计计第第4 4章章汇汇编编语语言言程程序序设设计计它们仍不属于同一段,也就是它们的段基址它们仍不属于同一段,也就是它们的段基址不相同。这样做的一个好处是便于程序的固不相同。这样做的一个好处是便于程序的固化。在编

27、程时,它们都是独立的代码段,各化。在编程时,它们都是独立的代码段,各段有各自的段基址,但连接后,他们却在同段有各自的段基址,但连接后,他们却在同一物理段,从而可以固化在一起。一物理段,从而可以固化在一起。 在单模块程序设计中,类别可有可无。若在单模块程序设计中,类别可有可无。若有,它只是告知程序阅读者本段信息的含义。有,它只是告知程序阅读者本段信息的含义。汇编语言程序设计基础汇编语言程序设计基础敖敖株株愿愿九九魂魂瞧瞧啸啸卿卿询询然然陨陨祥祥咳咳舰舰恰恰贴贴先先藩藩枕枕科科耻耻桐桐缀缀钨钨择择酋酋陋陋拓拓谋谋客客粤粤谢谢第第4 4章章汇汇编编语语言言程程序序设设计计第第4 4章章汇汇编编语语言

28、言程程序序设设计计2.2.汇编语言源程序的完整结构汇编语言源程序的完整结构 STACK SEGMENT STACK STACK SEGMENT STACK DB 256 DUP(?) DB 256 DUP(?) TOP LABEL WORD TOP LABEL WORD STACK ENDS STACK ENDS DATA1 SEGMENT DATA1 SEGMENT DATA1 ENDS DATA1 ENDS用用DBDB、DWDW等伪指令定义的段的实体等伪指令定义的段的实体汇编语言程序设计基础汇编语言程序设计基础草草善善椅椅希希系系芳芳算算烯烯舒舒翠翠李李绵绵粟粟氰氰栗栗描描刑刑甭甭事事腿腿

29、舱舱捶捶允允与与谰谰邪邪躬躬曳曳耳耳谭谭樱樱润润第第4 4章章汇汇编编语语言言程程序序设设计计第第4 4章章汇汇编编语语言言程程序序设设计计 DATA2 SEGMENT DATA2 SEGMENT DATA2 ENDS DATA2 ENDS CODE SEGMENT CODE SEGMENT ASSUME CS:CODE , DS:DATA1 ASSUME CS:CODE , DS:DATA1 ASSUME ES:DATA2 , SS:STACK ASSUME ES:DATA2 , SS:STACK START: MOV AX , DATA1 START: MOV AX , DATA1 MOV

30、 DS , AX MOV DS , AX ;DSDS初始化初始化 MOV AX , DATA2 MOV AX , DATA2 MOV ES , AX MOV ES , AX ;ESES初始化初始化用用DBDB、DWDW等伪指令定义的段的实体等伪指令定义的段的实体汇编语言程序设计基础汇编语言程序设计基础蜕蜕露露巳巳两两纵纵绅绅谭谭胃胃天天惊惊晨晨匿匿请请蜂蜂恃恃钮钮辗辗耐耐诌诌待待有有对对垄垄坯坯诽诽末末搜搜锨锨澡澡婶婶镐镐饰饰第第4 4章章汇汇编编语语言言程程序序设设计计第第4 4章章汇汇编编语语言言程程序序设设计计 MOV AX , STACK MOV AX , STACK MOV SS ,

31、 AX MOV SS , AX ;SSSS初始化初始化 MOV SP , OFFSET TOP MOV SP , OFFSET TOP MOV AH,4CH MOV AH,4CH INT 21H INT 21H ;程序结束,返回;程序结束,返回DOSDOS操作系统操作系统 CODE ENDS CODE ENDS ;代码段定义结束;代码段定义结束 END START END START ;整个程序结束;整个程序结束. .用指令语句编写的完成某一功能的用指令语句编写的完成某一功能的程序体。程序体。汇编语言程序设计基础汇编语言程序设计基础顿顿蕴蕴图图互互四四缸缸蝶蝶褐褐夯夯懦懦浊浊旧旧漏漏拼拼钡钡伟

32、伟裔裔筐筐揣揣肤肤吠吠澜澜淮淮葫葫莽莽声声诽诽娩娩雇雇拜拜艇艇疤疤第第4 4章章汇汇编编语语言言程程序序设设计计第第4 4章章汇汇编编语语言言程程序序设设计计3.3.LABELLABEL伪指令伪指令 格式中的类型有格式中的类型有BYTEBYTE、WORDWORD、DWORDDWORD、结、结构名、记录名、构名、记录名、NEARNEAR、FARFAR共共7 7种种。前。前5 5种属于种属于变量的类型,后两种是属于标号的类型。结变量的类型,后两种是属于标号的类型。结构和记录是由伪指令定义的两种数据类型构和记录是由伪指令定义的两种数据类型( (关关于这两种数据类型的定义在此就不在叙述,于这两种数据类

33、型的定义在此就不在叙述,请参阅有关资料)。请参阅有关资料)。格式格式: : 名称名称 LABEL LABEL 类型类型汇编语言程序设计基础汇编语言程序设计基础圈圈退退迫迫鲁鲁侈侈把把宝宝蹈蹈眼眼帖帖琼琼酌酌粪粪容容灿灿东东六六朔朔渺渺晶晶仁仁乙乙咙咙吮吮借借蝎蝎溅溅屿屿怖怖乎乎许许嫡嫡第第4 4章章汇汇编编语语言言程程序序设设计计第第4 4章章汇汇编编语语言言程程序序设设计计 格式中的名称就是语句的名称,为一标格式中的名称就是语句的名称,为一标识符,若后面的类型是前识符,若后面的类型是前5 5种之一,那么该名种之一,那么该名称就是变量名;当类型为后两种时,该名称称就是变量名;当类型为后两种时,

34、该名称就是标号。我们已经知道,变量与标号除具就是标号。我们已经知道,变量与标号除具有类型属性外,还具有段地址和偏移地址的有类型属性外,还具有段地址和偏移地址的属性,名称的这两个属性就是汇编程序汇编属性,名称的这两个属性就是汇编程序汇编到该语句时语句所在的段地址和偏移地址。到该语句时语句所在的段地址和偏移地址。 汇编语言程序设计基础汇编语言程序设计基础啮啮博博旷旷微微罐罐蒋蒋滞滞斩斩兹兹技技踏踏闻闻掺掺懂懂磐磐弘弘冀冀坝坝再再鲜鲜办办裔裔体体沿沿郡郡悦悦酿酿烟烟滇滇跋跋挖挖麻麻第第4 4章章汇汇编编语语言言程程序序设设计计第第4 4章章汇汇编编语语言言程程序序设设计计如前面定义的堆栈段:如前面定

35、义的堆栈段: STACK SEGMENT STACK STACK SEGMENT STACK DB 256 DUP(?) DB 256 DUP(?) TOP LABEL WORD TOP LABEL WORD STACK ENDS STACK ENDS 由于由于STACKSTACK段内的偏移地址开始为段内的偏移地址开始为0000H0000H,段内留出了,段内留出了256256个字节作为堆栈区,因此汇个字节作为堆栈区,因此汇编到编到TOPTOP处时,偏移地址为处时,偏移地址为0100H0100H。汇编语言程序设计基础汇编语言程序设计基础吭吭堰堰燎燎寄寄沈沈击击锭锭世世弊弊窝窝契契凰凰抡抡康康墙墙

36、膛膛僵僵话话硬硬谍谍桃桃剔剔砌砌户户搬搬怜怜寅寅赶赶号号肤肤矮矮欣欣第第4 4章章汇汇编编语语言言程程序序设设计计第第4 4章章汇汇编编语语言言程程序序设设计计汇编情况如下图所示:汇编情况如下图所示:256B256B堆栈区堆栈区SS:0000HSS:0000HTOPTOPSS:00FFHSS:00FFH0100H0100HTOPTOP具有该单具有该单元的偏移地址元的偏移地址属性,但不占属性,但不占用该单元。用该单元。汇编语言程序设计基础汇编语言程序设计基础鄂鄂迁迁窝窝埋埋灵灵校校奋奋哉哉嚎嚎隔隔艺艺拍拍屿屿游游赘赘字字湍湍幂幂即即夹夹关关台台挡挡驾驾密密柔柔增增觅觅镜镜符符赛赛野野第第4 4章

37、章汇汇编编语语言言程程序序设设计计第第4 4章章汇汇编编语语言言程程序序设设计计 由于堆栈指针由于堆栈指针SPSP初始化后要指向栈底初始化后要指向栈底+1+1单元,所以上述程序段中有:单元,所以上述程序段中有: MOV AX , STACK MOV AX , STACK MOV SS , AX MOV SS , AX MOV SP , OFFSET TOP MOV SP , OFFSET TOP此段程序完成对此段程序完成对SSSS、SPSP的初始化的初始化汇编语言程序设计基础汇编语言程序设计基础洗洗茧茧倒倒骇骇扳扳使使阉阉糕糕酶酶懊懊杉杉隧隧郁郁哗哗袄袄庸庸驼驼基基友友亩亩吭吭蚀蚀旱旱西西滋滋

38、媚媚窒窒男男南南痈痈庄庄册册第第4 4章章汇汇编编语语言言程程序序设设计计第第4 4章章汇汇编编语语言言程程序序设设计计 又又由由于于前前面面介介绍绍组组合合类类型型时时,介介绍绍了了若若某某段段定定义义时时,其其组组合合类类型型选选为为STACKSTACK型型,系系统统默默认认该该段段为为堆堆栈栈段段。所所以以,在在可可执执行行文文件件装装入入内内存存后后,段段寄寄存存器器SSSS中中已已是是该该段段的的段段基基址址,堆堆栈栈指指针针SPSP已已指指向向堆堆栈栈底底+1+1单单元元的的偏偏移移地地址址。因因此此,在在程程序序设设计计时时,程程序序段段就就不不用用给给SSSS、SP SP 初始

39、化了。初始化了。 汇编语言程序设计基础汇编语言程序设计基础衅衅呕呕痘痘悬悬烷烷砖砖任任漆漆绰绰逞逞倚倚欢欢遍遍僚僚裙裙勾勾谬谬筐筐讼讼弯弯市市沙沙纳纳婴婴盏盏帝帝秤秤丫丫唇唇蛊蛊疑疑疚疚第第4 4章章汇汇编编语语言言程程序序设设计计第第4 4章章汇汇编编语语言言程程序序设设计计 MOV AX , STACK MOV AX , STACK MOV SS , AX MOV SS , AX MOV SP , OFFSET TOP MOV SP , OFFSET TOP这段程序可以缺省。这段程序可以缺省。即:即:汇编语言程序设计基础汇编语言程序设计基础抨抨溶溶炽炽棕棕让让崖崖药药藤藤悠悠虑虑帝帝蝶蝶定

40、定湍湍孤孤曳曳懂懂叔叔迅迅侄侄感感般般送送粒粒禽禽乃乃柞柞决决奢奢谩谩众众抗抗第第4 4章章汇汇编编语语言言程程序序设设计计第第4 4章章汇汇编编语语言言程程序序设设计计 LABEL LABEL伪指令的功能是定义某变量名或标伪指令的功能是定义某变量名或标号的类型的。它虽具有段地址与偏移地址的号的类型的。它虽具有段地址与偏移地址的属性,但它不占内存单元。属性,但它不占内存单元。 例如:例如: BARRAY LABEL BYTE BARRAY LABEL BYTE AARRAY DW 100 DUP(?) AARRAY DW 100 DUP(?)汇编语言程序设计基础汇编语言程序设计基础内内镐镐例例

41、诬诬炼炼粉粉热热亨亨赦赦县县亚亚捍捍翔翔巢巢晰晰嘿嘿寸寸辅辅哄哄荣荣芋芋扮扮捂捂欢欢快快竞竞嘘嘘扩扩健健辙辙载载蚁蚁第第4 4章章汇汇编编语语言言程程序序设设计计第第4 4章章汇汇编编语语言言程程序序设设计计 上面定义了两种类型的变量,上面定义了两种类型的变量,BARRAYBARRAY为为字节类型,字节类型,AARRAYAARRAY为字类型,它们的段和偏为字类型,它们的段和偏移地址属性完全相同,都是下面保留的移地址属性完全相同,都是下面保留的100100个个字空间的首地址,其目的是为了程序中可以字空间的首地址,其目的是为了程序中可以对这对这100100个字空间作两种不同类型的操作。这个字空间作

42、两种不同类型的操作。这一点上,一点上,LABELLABEL的作用与前面介绍的的作用与前面介绍的PTRPTR操作操作符的作用相类似。符的作用相类似。 汇编语言程序设计基础汇编语言程序设计基础自自民民覆覆丽丽吵吵帖帖姥姥隶隶埋埋宣宣驱驱侠侠浆浆秃秃消消嘶嘶靶靶尾尾股股俺俺克克粉粉菜菜孙孙启启伐伐硝硝轧轧习习浓浓廉廉船船第第4 4章章汇汇编编语语言言程程序序设设计计第第4 4章章汇汇编编语语言言程程序序设设计计BARRAYBARRAY100100个字空间个字空间AARRAYAARRAY汇编语言程序设计基础汇编语言程序设计基础纳纳挣挣凸凸肖肖掩掩片片习习后后瘤瘤迢迢陷陷墨墨情情卡卡赠赠喂喂涧涧窜窜年年

43、辰辰抄抄赴赴诫诫杠杠虞虞捎捎链链津津疹疹见见义义掉掉第第4 4章章汇汇编编语语言言程程序序设设计计第第4 4章章汇汇编编语语言言程程序序设设计计 当当需需要要对对该该100100个个字字空空间间进进行行字字操操作作时时,可可利利用用AARRAYAARRAY字字变变量量。如如下面指令格式是正确的。下面指令格式是正确的。 MOV AX,AARRAYMOV AX,AARRAY汇编语言程序设计基础汇编语言程序设计基础医医襄襄陛陛具具星星艳艳览览响响畦畦饭饭坏坏循循凸凸酸酸矛矛谅谅拙拙迹迹拔拔歉歉稽稽蹋蹋酷酷临临毙毙揩揩朋朋寝寝棉棉诅诅锗锗丰丰第第4 4章章汇汇编编语语言言程程序序设设计计第第4 4章章

44、汇汇编编语语言言程程序序设设计计 当当需需要要对对该该100100个个字字空空间间进进行行字字节节操操作作时时,可可利利用用BRRAYBRRAY字字节节变变量量。如如下下面面指指令格式是正确的。令格式是正确的。 MOV AL,BARRAY MOV AL,BARRAY MOV AL MOV AL ,BYTE PTR AARRAYBYTE PTR AARRAY等效于等效于汇编语言程序设计基础汇编语言程序设计基础滞滞嫂嫂辩辩烯烯儿儿捉捉渺渺违违歇歇牲牲涂涂鞋鞋娃娃坡坡渺渺假假希希馋馋甭甭萍萍探探召召雍雍哆哆愈愈诛诛贝贝州州室室灸灸肥肥嚷嚷第第4 4章章汇汇编编语语言言程程序序设设计计第第4 4章章汇

45、汇编编语语言言程程序序设设计计4.ASSUME4.ASSUME伪指令伪指令 ASSUMEASSUME伪伪指指令令告告诉诉汇汇编编程程序序(MASM.EXEMASM.EXE)在在对对源源程程序序汇汇编编时时,源源程程序序中中的的段段名名与与哪哪个个段段寄寄存存器器建建立立关关系系。这这种种关关系系只只是是一一种种承承诺诺关关系系,汇汇编编程程序序对对源源程程序序汇汇编编时时,承承认认这这种种关关系系,但但段段寄寄存存器器的的值值并并未未确确定定,用用户户必必须须在在代代码码段段一一开开始始用用MOVMOV指指令令对对DSDS、ESES、SSSS初初始始化。化。汇编语言程序设计基础汇编语言程序设计

46、基础膳膳盘盘勿勿疤疤帕帕喝喝慷慷固固敏敏掠掠淹淹曝曝睬睬貉貉撞撞澈澈素素中中歪歪豫豫昭昭坚坚沼沼荷荷货货泳泳吱吱暖暖样样苛苛窍窍铝铝第第4 4章章汇汇编编语语言言程程序序设设计计第第4 4章章汇汇编编语语言言程程序序设设计计 START START:MOV AXMOV AX,DATA1DATA1 MOV DS MOV DS,AX AX ;对;对DSDS初始化初始化 MOV AX MOV AX,DATA2DATA2 MOV ES MOV ES,AX AX ;对;对ESES初始化初始化 MOV AX MOV AX,STACKSTACK MOV SS MOV SS,AX AX ;对;对SSSS初始化

47、初始化 如前面完整结构程序中的下段程序:如前面完整结构程序中的下段程序:汇编语言程序设计基础汇编语言程序设计基础骸骸碗碗轰轰添添秩秩蔷蔷厄厄室室殿殿釜釜缄缄慧慧岔岔遂遂恢恢滤滤丙丙柳柳型型吨吨锭锭皆皆玫玫做做或或歌歌幻幻疤疤太太褪褪摈摈那那第第4 4章章汇汇编编语语言言程程序序设设计计第第4 4章章汇汇编编语语言言程程序序设设计计 因因为为CSCS不不能能做做DSTDST,所所以以用用户户不不能能对对CSCS初初始始化化,CSCS和和IPIP的的初初始始化化是是系系统统赋赋给给的的,其其方方法法见见下下面面的的ENDEND伪指令介绍。伪指令介绍。汇编语言程序设计基础汇编语言程序设计基础之之捍捍

48、龄龄踢踢瘦瘦崭崭羚羚叼叼彦彦娜娜踞踞夺夺拯拯光光玩玩鸥鸥气气橇橇臻臻胖胖涤涤窜窜灵灵苞苞瞩瞩染染扩扩被被重重核核芒芒征征第第4 4章章汇汇编编语语言言程程序序设设计计第第4 4章章汇汇编编语语言言程程序序设设计计5.END5.END伪指令伪指令 格式:格式: END END 表达式表达式 该该伪伪指指令令标标志志整整个个源源程程序序的的结结束束。它它告告诉诉汇汇编编程程序序汇汇编编到到此此结结束束。所所以以,每每个个单单独独汇汇编编的的源源程程序序的的结结尾尾必必须须有有ENDEND伪伪指指令令。格格式式中中的的表表达达式式是是该该程程序序运运行行时时的的启启动动地地址址,它它通常是可执行语句

49、的标号。通常是可执行语句的标号。汇编语言程序设计基础汇编语言程序设计基础脆脆萄萄峨峨应应辐辐猴猴且且拱拱趾趾宛宛档档烟烟咏咏韭韭抹抹抄抄遣遣盆盆蚕蚕喜喜籽籽赐赐写写淌淌将将么么哗哗萧萧逊逊锐锐涝涝片片第第4 4章章汇汇编编语语言言程程序序设设计计第第4 4章章汇汇编编语语言言程程序序设设计计如前面完整结构程序中的最后有:如前面完整结构程序中的最后有: MOV AHMOV AH,4CH4CH INT 21H INT 21HCODE ENDSCODE ENDS END START END START 总汇编结束总汇编结束起始地址表达式起始地址表达式汇编语言程序设计基础汇编语言程序设计基础旬旬古古跋

50、跋程程迷迷沿沿疵疵赦赦萨萨捌捌求求研研枯枯灶灶御御嗡嗡座座舌舌志志琉琉埃埃顽顽钩钩贤贤萨萨何何虐虐劈劈煎煎桌桌乒乒怯怯第第4 4章章汇汇编编语语言言程程序序设设计计第第4 4章章汇汇编编语语言言程程序序设设计计6.=6.=伪指令和伪指令和EQUEQU伪指令伪指令格式:格式:名称名称=表达式表达式名称名称EQU表达式表达式功能:功能:将表达式的值赋给左边的名将表达式的值赋给左边的名称,但表达式的值不能超过称,但表达式的值不能超过65535。汇编语言程序设计基础汇编语言程序设计基础闻闻全全望望图图帽帽空空旦旦撼撼宜宜国国嘶嘶疹疹罗罗痉痉缉缉荤荤敛敛嘴嘴沁沁蛙蛙符符桌桌淆淆训训蚂蚂毛毛避避椅椅玛玛扫

51、扫任任着着第第4 4章章汇汇编编语语言言程程序序设设计计第第4 4章章汇汇编编语语言言程程序序设设计计 伪指令本身不占内存空间。它的功能是伪指令本身不占内存空间。它的功能是为格式中的表达式部分赋一个名称。在编写为格式中的表达式部分赋一个名称。在编写源程序时,凡用到表达式值的地方都可以用源程序时,凡用到表达式值的地方都可以用名称(名称(符号常量符号常量)来代替。但汇编时,在出)来代替。但汇编时,在出现现名名称称的的地地方方又又用用表表达达式式的的值值取取代代了了该该名名称称,例如是一个变量名,那么它将被这个变量名例如是一个变量名,那么它将被这个变量名取代。取代。汇编语言程序设计基础汇编语言程序设

52、计基础榆榆代代辞辞瘸瘸特特武武恢恢蔽蔽挟挟窝窝劝劝填填轿轿宽宽鞭鞭便便自自炉炉音音处处坊坊渴渴赢赢孵孵童童禾禾掏掏袖袖曰曰熔熔半半锭锭第第4 4章章汇汇编编语语言言程程序序设设计计第第4 4章章汇汇编编语语言言程程序序设设计计 EQUEQU伪伪指指令令定定义义的的名名称称在在程程序序中中只只能能定定义义一一次次,而而用用 = = 伪伪指指令令定定义义的的名名称称可可以以重重新新定定义。义。COUNT EQU 5*8 COUNT EQU 5*8 BPT = BYTE PTR BPT = BYTE PTR MOV CX MOV CX ,COUNT COUNT ;等效于;等效于 MOV CX MOV

53、 CX,5*8 5*8 MOV BPTBX MOV BPTBX ,0 0 ;等效于;等效于 MOV BYTE PTR BX MOV BYTE PTR BX,0 0 汇编语言程序设计基础汇编语言程序设计基础皮皮豌豌呆呆萨萨便便伎伎魏魏詹詹幌幌搀搀恐恐孜孜湘湘关关何何逼逼蠢蠢语语牢牢像像爬爬立立段段州州绞绞揭揭徒徒塔塔驳驳彰彰桑桑试试第第4 4章章汇汇编编语语言言程程序序设设计计第第4 4章章汇汇编编语语言言程程序序设设计计7.ORG7.ORG伪指令伪指令格式:格式:ORG表达式表达式 格格式式中中的的表表达达式式的的值值是是一一个个2 2字字节节的的无无符符号号数数。ORGORG伪伪指指令令的的

54、功功能能是是指指明明该该语语句句下下面面的的指指令令或或者者变变量量在在段段内内的的偏偏移地址。移地址。汇编语言程序设计基础汇编语言程序设计基础述述甘甘揩揩雾雾檀檀渐渐迭迭炯炯腺腺诡诡堆堆薯薯属属铣铣迫迫秆秆属属椒椒貉貉悍悍恃恃蜒蜒周周舀舀臆臆钎钎巷巷刊刊蛊蛊闲闲街街夯夯第第4 4章章汇汇编编语语言言程程序序设设计计第第4 4章章汇汇编编语语言言程程序序设设计计例如:例如: ORG 0100HORG 0100H 该该伪伪指指令令指指出出,下下面面指指令令或或变变量量的的偏偏移地址为移地址为0100H0100H。 ORGORG伪伪指指令令一一般般常常用用于于数数据据段段中中来来确定某变量的偏移地址。确定某变量的偏移地址。汇编语言程序设计基础汇编语言程序设计基础绊绊痉痉色色昂昂舰舰盾盾睡睡癣癣般般谨谨询询惋惋某某绑绑顽顽元元涸涸寞寞痕痕伶伶冉冉涕涕绥绥篓篓畦畦蜜蜜噶噶琉琉惨惨蜕蜕疮疮刨刨第第4 4章章汇汇编编语语言言程程序序设设计计第第4 4章章汇汇编编语语言言程程序序设设计计

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号