ImageVerifierCode 换一换
格式:PPT , 页数:135 ,大小:3.58MB ,
文档编号:3494975      下载积分:29 文币
快捷下载
登录下载
邮箱/手机:
温馨提示:
系统将以此处填写的邮箱或者手机号生成账号和密码,方便再次下载。 如填写123,账号和密码都是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

优惠套餐
 

温馨提示:若手机下载失败,请复制以下地址【https://www.163wenku.com/d-3494975.html】到电脑浏览器->登陆(账号密码均为手机号或邮箱;不要扫码登陆)->重新下载(不再收费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录  
下载须知

1: 试题类文档的标题没说有答案,则无答案;主观题也可能无答案。PPT的音视频可能无法播放。 请谨慎下单,一旦售出,概不退换。
2: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
3: 本文为用户(三亚风情)主动上传,所有收益归该用户。163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

1,本文(微型计算机原理及接口技术第4章-汇编语言程序设计课件.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!

微型计算机原理及接口技术第4章-汇编语言程序设计课件.ppt

1、功能功能:仅仅是告诉汇编程序,对后面的指令语句和伪指:仅仅是告诉汇编程序,对后面的指令语句和伪指令语句的操作数应该如何产生机器目标代码令语句的操作数应该如何产生机器目标代码伪指令伪指令机器指令机器指令一一对应一一对应特点特点:伪指令不是由:伪指令不是由86系列系列CPU执行,而是由执行,而是由MASM-86识别,并完成相应的功能识别,并完成相应的功能如如:D1 DB 12H,12H 12H D1 DB 3 DUP(12H)MOV AX,D1注意注意:表达式或数据项表多于一项时,项与项之间用表达式或数据项表多于一项时,项与项之间用逗号逗号“,”或或空格空格分隔分隔 表达式或数据项重复书写时,可用

2、重复格式表达式或数据项重复书写时,可用重复格式DUP 需考虑符号名的需考虑符号名的类型一致类型一致功能功能:给存储器在逻辑上分段,它为程序的汇编和连接说:给存储器在逻辑上分段,它为程序的汇编和连接说明了段名、分段的各种属性以及分段的开始和结束明了段名、分段的各种属性以及分段的开始和结束定位方式定位方式:又称定位类型,指定段的起始地址边界:又称定位类型,指定段的起始地址边界PAGEPARAWORDBYTE指定起始地址的指定起始地址的低低8 8位是位是0 0指定起始地址的指定起始地址的低低4 4位是位是0 0指定起始地址的指定起始地址的最低位是最低位是0 0指定起始地址是指定起始地址是任意值任意值

3、1.SEGMENT/ENDS PUBLICSTACK空缺(空缺(NONE)COMMONMEMORYAT 表达式表达式把本把本段与其他同名同类型的段连接起来,共用一个段与其他同名同类型的段连接起来,共用一个段的起点地址,形成一个物理段段的起点地址,形成一个物理段表示表示本段是堆栈段,连接方式同本段是堆栈段,连接方式同PUBLIC表示表示本段不与任何段连接,是系统隐含连接方式本段不与任何段连接,是系统隐含连接方式表示表示本段与同名同类型的段共用同一段的起点地址,本段与同名同类型的段共用同一段的起点地址,即同名同类段相重叠,段的长度是最长段的长度即同名同类段相重叠,段的长度是最长段的长度表示表示本段

4、在连接时定位在所有段之上,即高地址处本段在连接时定位在所有段之上,即高地址处表示表示本段定位在表达式值指定的段地址处本段定位在表达式值指定的段地址处类别名类别名:需用单引号括起来,凡是类型名相同的段在连:需用单引号括起来,凡是类型名相同的段在连接时均按先后顺序连接起来接时均按先后顺序连接起来调用格式调用格式:CALL 过程由过程由RET指令返回指令返回1.模块开始模块开始伪指令伪指令格式格式:NAME 模块名模块名功能功能:指明程序模块的开始,并指出模块名,一般取源:指明程序模块的开始,并指出模块名,一般取源程序文件名为模块名程序文件名为模块名2.模块结束模块结束伪指令伪指令格式格式:END

5、启动标号或过程名启动标号或过程名功能功能:告诉汇编程序源文件结束,并给出执行程序的入口:告诉汇编程序源文件结束,并给出执行程序的入口位置位置3.PAGE格式格式:PAGE 行数,行字数行数,行字数功能功能:为列表文件定义每页行数(:为列表文件定义每页行数(10255)和每)和每行字符数(行字符数(60132),默认值是),默认值是66行,行,80列列注意注意:MS-DOS系统中设置的几十个内部子程序,系统中设置的几十个内部子程序,可看成可看成内部中断服务内部中断服务程序,用程序,用软中断指令软中断指令调用。调用。常用的中断矢量号为常用的中断矢量号为20H27H系统功能系统功能调用的调用的格式格

6、式:传送入口参数到指定寄存器中(可选项)传送入口参数到指定寄存器中(可选项)功能号送入功能号送入AH寄存器寄存器 INT 21HINT 21H是一个具有近是一个具有近90个子功能的中断服务程个子功能的中断服务程序,这些子功能的编号称为功能号。序,这些子功能的编号称为功能号。INT 21H的功能大致可以分为四个方面,即设备管理、的功能大致可以分为四个方面,即设备管理、目录管理、文件管理和其他目录管理、文件管理和其他 格式格式:MOV AH,1 INT 21H功能功能:执行时,系统等待键盘输入,待程序员按下任何:执行时,系统等待键盘输入,待程序员按下任何一键,系统先检查是否一键,系统先检查是否Ct

7、rl-Break键,如果是则退出,键,如果是则退出,否则将该键字符的否则将该键字符的ASCII码置入码置入AL寄存器中,并在屏寄存器中,并在屏幕上显示该字符幕上显示该字符注意注意:没有入口参数:没有入口参数格式格式:BUF DB20DB?DB20,DUP(?)MOV DX,OFFSET BUFMOV AH,0AHINT21H功能功能:将键盘输入的字符串写入到内存缓冲区中:将键盘输入的字符串写入到内存缓冲区中;定义缓冲区;定义缓冲区;0AH号系统号系统功能调用功能调用格式格式:MOVDL,A MOVAH,2 INT21H功能功能:置入置入DL寄存器中的字符从屏幕上显示输出(或打印机寄存器中的字符

8、从屏幕上显示输出(或打印机打印输出)打印输出)格式格式:BUF DB good bye$MOV DX,OFFSET BUFMOV AH,9INT21H功能功能:是将指定的内存缓冲区中的字符串从屏幕上显示:是将指定的内存缓冲区中的字符串从屏幕上显示输出来(或打印输出)输出来(或打印输出)注意注意:缓冲区中的字符串必须以:缓冲区中的字符串必须以“$”字符作为结束标志字符作为结束标志格式格式:MOV DL,0FFH MOV AH,6 INT 21H MOV DL,A MOV AH,6 INT 21H;键盘输入单字符;键盘输入单字符送送AL中(中(DL=FFH);将;将DL中的字符中的字符“A”送送屏

9、幕显示(屏幕显示(DLFFH)功能功能:如果(:如果(DL)0FFH,则表示是从键盘输入单字,则表示是从键盘输入单字符送符送AL寄存器中寄存器中 如果(如果(DL)0FFH,则表示是将,则表示是将DL寄存器中内容送寄存器中内容送屏幕显示输出屏幕显示输出格式格式:MOV AH,4CH INT 21H功能功能:结束当前正在执行的程序,并返回操作系统。屏幕显结束当前正在执行的程序,并返回操作系统。屏幕显示操作系统提示符(示操作系统提示符(N),),N为当前使用的驱动器名为当前使用的驱动器名格式格式:MOVCX,2010H MOVDH,01H MOVDL,12H MOV AH,2BH INT21H功能

10、功能:如果没有设置成功,则:如果没有设置成功,则0AL寄存器,否则寄存器,否则0FFHAL寄存器。寄存器。格式格式:MOV AH,2AH INT 21H功能功能:将当前有效日期取到:将当前有效日期取到CX和和DX寄存器中,存放格寄存器中,存放格式与设置日期时相同式与设置日期时相同 格式格式:MOV CX,0815H MOV DX,2050H MOV AH,2DH INT 21H功能功能:设置有效时间。如果设置成功,则将:设置有效时间。如果设置成功,则将AL寄存器内寄存器内容清容清“0”。否则将。否则将AL寄存器置全寄存器置全“1”。格式格式:MOV AH,2CH INT 21H功能功能:格式格

11、式:MOV AH,0BH INT 21H功能功能:可以检查是否有字符键入。如果有键按下使:可以检查是否有字符键入。如果有键按下使AL=FFH,否则,否则AL=00H。(1)设置)设置显示方式显示方式矢量号:矢量号:10H功能号:功能号:AH0入口参数:入口参数:AL常用显示方式号(常用显示方式号(06)注意注意:对于高分辨率,只支持黑白显示:对于高分辨率,只支持黑白显示例例:屏幕设置成:屏幕设置成8025彩色文本方式彩色文本方式程序程序:MOVAH,0;设功能号;设功能号 MOVAL,3 ;设显示方式;设显示方式 INT10H程序程序:MOV BH,0MOV DH,10MOV DL,30MOV

12、 AH,2INT10H例例:将光标置在第:将光标置在第10行行30列列L位位为为1时表示背景闪烁,否则不闪时表示背景闪烁,否则不闪I位位为为1时表示前景为高亮度,否则为一般亮度时表示前景为高亮度,否则为一般亮度例例4-2:用兰色清屏,然后在第:用兰色清屏,然后在第10行行30列显示列显示20个红底白个红底白字字A程序程序:MOVAL,0 ;AL=0时,清屏参数时,清屏参数 MOVBL,10H ;蓝色背景,无闪烁,属性;蓝色背景,无闪烁,属性BL MOVAH,6 ;清屏功能号;清屏功能号6 MOVCX,0 ;从;从0行到行到0列列矢量号:矢量号:10H功能号:功能号:AH0AH入口参数:入口参数

13、:BH=页号;页号;AL显示字符的显示字符的ASCII码;码;CX重复显示的次数重复显示的次数(5)在光标位置写字符在光标位置写字符(不改变属性)(不改变属性)矢量号:矢量号:14H功能号:功能号:AH0H入口参数:入口参数:AL初始化参数,初始化参数,DX0表示对表示对COM1初初 始化;始化;DX=1表示对表示对COM2初始化初始化4.串行服务程序串行服务程序(1)串行)串行通信口初始化通信口初始化位位4、3表示奇偶校验设定:表示奇偶校验设定:00无奇偶校验无奇偶校验01奇校验奇校验11偶校验偶校验位位2表示停止位数设定表示停止位数设定01位停止位位停止位12位停止位位停止位位位1、0表示

14、通信数据位数设定表示通信数据位数设定107位数据通信位数据通信118位数据通信位数据通信矢量号:矢量号:14H功能号:功能号:AH2入口参数:入口参数:DX0表示表示COM1从输入;从输入;DX=1表示从表示从COM2输入。输入。返回参数:成功时,返回参数:成功时,AH第第7位位0,AL输入数据;输入数据;失败时,失败时,AH第第7位位1,AH第第0到到6位通信口状态。位通信口状态。(3)串行)串行通信口输入通信口输入开始开始结束结束初始化初始化处理处理处理处理分支分支是是否否开始开始暂停暂停逻辑右移得高逻辑右移得高4位,存入内存位,存入内存10052H单元单元用逻辑与指令将该数用逻辑与指令将

15、该数“与与”0FH取得低四位,存入内存取得低四位,存入内存10051H单元单元初始化初始化用间址方法取数用间址方法取数 AL再取出原始数再取出原始数 AL特点特点:先用比较指令、数据操作、:先用比较指令、数据操作、位测指令等改变标志寄存器各个位测指令等改变标志寄存器各个标志位,然后用条件转移指令进标志位,然后用条件转移指令进行分支行分支图4-12 分支结构程序流程图分支程序段2结束否条件1条件2分支程序段1分支程序段3否是是例例4-5:编程实现编程实现AX累加器和累加器和BX寄存器中两个寄存器中两个无符号数之差的绝对值,将其结果存放在内存无符号数之差的绝对值,将其结果存放在内存2800H单元中

16、。单元中。分析题目分析题目:此题目中,:此题目中,AX累加器和累加器和BX寄存器中的数是寄存器中的数是不知道的。对两个不知道大小的数相减并求绝对值,不知道的。对两个不知道大小的数相减并求绝对值,应该先判定哪一个值稍大些,然后再用大数减去小数应该先判定哪一个值稍大些,然后再用大数减去小数的方法,可求得绝对值。的方法,可求得绝对值。流程图流程图:流程图流程图:程序程序:组成组成:初始化初始化循环体循环体循环控制循环控制循环结束处理循环结束处理例例4-7:设有两个数位于内存数据段中,设有两个数位于内存数据段中,其偏移地址为其偏移地址为0050H,且连续存放,且连续存放,低位在小地址一端。这两个多字节

17、低位在小地址一端。这两个多字节数均为数均为8个字节长。求这两个多字节个字节长。求这两个多字节数之和,其结果存放在这两个数之数之和,其结果存放在这两个数之后。请编程实现。后。请编程实现。分析题目分析题目:这是一个重复累加内存单:这是一个重复累加内存单元中数的问题,因此可以采用循环元中数的问题,因此可以采用循环结构程序解决。因为结构程序解决。因为80 x86系列指令系列指令系统可以一次性处理系统可以一次性处理16位数,所以位数,所以循环次数为循环次数为4次。次。流程图流程图:分析题目分析题目:此题是想让微机做一些无用的操作,来拖延时:此题是想让微机做一些无用的操作,来拖延时间。我们可以从指令手册中

18、查得各条指令所需的时钟周间。我们可以从指令手册中查得各条指令所需的时钟周期,但一般一条指令执行时间只有几个时钟周期,亦即期,但一般一条指令执行时间只有几个时钟周期,亦即只有几个微秒,为了能用较少的指令来编写较长时间的只有几个微秒,为了能用较少的指令来编写较长时间的延时,我们可以利用循环程序结构。延时,我们可以利用循环程序结构。延时时间主要取决于循环体及循环次数。从指令表上可延时时间主要取决于循环体及循环次数。从指令表上可以查得以查得PUSHF和和POPF指令分别为指令分别为10和和8个时钟节拍,个时钟节拍,LOOP BX指令为指令为3.4个时钟节拍,即此循环体需要用个时钟节拍,即此循环体需要用

19、1083.421.4拍,而每个时钟节拍是根据系统的晶振频率拍,而每个时钟节拍是根据系统的晶振频率而定的。假设此系统用的是而定的。假设此系统用的是8MHz的晶振,则每个时钟节的晶振,则每个时钟节拍需要拍需要0.125s,因此可以根据下列公式算出循环次数:,因此可以根据下列公式算出循环次数:次一次循环时间延时时间272s125.04.29ms1X程序程序:图4-21 16 位二进制数转换为ASCII 码的程序流程图开始取一个字(AX)(AX)0暂停初始化 段地址 DS:1000H 第一个数指针(SI)=0050H(AX)(DX:AX)/(BX)(DX)(DX:AX)%(BX)(DL)(DL)+30

20、H(SI)(DL)(SI)(SI)-1否是修改指针(SI)(SI)+6(BX)=10CALLRET(2)子程序调用)子程序调用技巧技巧v子程序嵌套子程序嵌套v子程序递归子程序递归v可重入子程序可重入子程序v 协同子程序协同子程序图4-23 子程序递归和重入示意图(b)主程序2主程序1子程序子程序主程序(a)图4-24 求最大值的程序流程图开始ALSI暂停AL中已是最大值送内存2000H单元是否 指针SI=2001H 循环计数器CL=SI 假设初始最大值00AL 修改指针SISI+1AL值SI修改指针SISI+1CXCX1CX=0否是LP例例4-13:从键盘上输入任意一个:从键盘上输入任意一个1

21、位十进制数(位十进制数(09),用),用移位指令乘移位指令乘10,并将结果显示在,并将结果显示在CRT上,请编程实现。上,请编程实现。分析题目分析题目:从题目可以看出,主要完成三个任务:一是从:从题目可以看出,主要完成三个任务:一是从键盘获得键盘获得1位十进制数;二是将这个数扩大位十进制数;二是将这个数扩大10倍;三是将倍;三是将其显示出来。第其显示出来。第1个任务可以通过个任务可以通过DOS功能调用的方式从功能调用的方式从键盘获得一个值,需判断该值是否是键盘获得一个值,需判断该值是否是1位十进制数。如果位十进制数。如果是,将其保存在内存中是,将其保存在内存中BUFF单元中,否则从新输入;第单

22、元中,否则从新输入;第2个任务是将内存中个任务是将内存中BUFF单元的数扩大单元的数扩大10倍,并将其个倍,并将其个位和十位分别转换为位和十位分别转换为ASCII码,并保存在内存码,并保存在内存BUFF+1及及BUFF+2单元中;第单元中;第3个任务将内存个任务将内存BUFF+1及及BUFF+2单单元中的数显示。因此,这元中的数显示。因此,这3个任务可以通过个任务可以通过3个子过程实个子过程实现。现。;返回;返回DOS;设置;设置DS值值;从键盘输入一个数并显示;从键盘输入一个数并显示;判数据输入合法否?若不合法,重新输入;判数据输入合法否?若不合法,重新输入;将输入数据转换为;将输入数据转换为BCD码存缓冲区码存缓冲区;回车换行符送显示;回车换行符送显示;乘;乘10;将积转换成;将积转换成ASC码存缓冲区码存缓冲区图4-26 BCD缓冲器内容BCDBUF563412569078563412BCDBUF+1BCDBUF+17

侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|