书签 分享 收藏 举报 版权申诉 / 59
上传文档赚钱

类型第4章汇编语言及汇编程序设计.ppt

  • 上传人(卖家):三亚风情
  • 文档编号:3404152
  • 上传时间:2022-08-28
  • 格式:PPT
  • 页数:59
  • 大小:467.50KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《第4章汇编语言及汇编程序设计.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    汇编语言 汇编程序 设计
    资源描述:

    1、微机原理及应用微机原理及应用主讲教师主讲教师 陈陈 玮玮8/5/2022第第4章章 汇编语言及汇编程序设计汇编语言及汇编程序设计2第四章第四章 汇编语言及汇编程序设计汇编语言及汇编程序设计一、一、概述概述二、二、伪指令伪指令三、三、表达式及运算符表达式及运算符四、宏指令四、宏指令五、五、汇编语言程序的上机过程汇编语言程序的上机过程六、六、汇编程序的设计过程汇编程序的设计过程七、七、汇编程序基本设计方法汇编程序基本设计方法八、八、系统功能调用系统功能调用 例题例题作业作业8/5/2022第第4章章 汇编语言及汇编程序设计汇编语言及汇编程序设计3一、概述一、概述 汇编语言是一种面向汇编语言是一种面

    2、向CPU指令系统的程序设计指令系统的程序设计语言。指令格式语言。指令格式:标号:指令助记符操作数;注释,1 1、标号标号是指该指令的符号地址,以冒号结束;是指该指令的符号地址,以冒号结束;2 2、用助记符表示操作码,是指令名称的代表符号,、用助记符表示操作码,是指令名称的代表符号,是语句中的关键字,不可缺省;是语句中的关键字,不可缺省;8/5/2022第第4章章 汇编语言及汇编程序设计汇编语言及汇编程序设计4一、概述一、概述(续上页续上页)3、用符号代表操作数或操作数地址。、用符号代表操作数或操作数地址。操作数是本指操作数是本指令执行需要的数据。令执行需要的数据。有些指令不需要指明操作数,有些

    3、指令不需要指明操作数,可以默认;有些指令需要两个操作数;还有些操作可以默认;有些指令需要两个操作数;还有些操作数可以用表达式。数可以用表达式。4、注释项是可选项,用分号开始。、注释项是可选项,用分号开始。标号:指令助记符操作数;注释,8/5/2022第第4章章 汇编语言及汇编程序设计汇编语言及汇编程序设计5一、概述一、概述(续上页续上页)用汇编语言编写的程序称为源程序,常用的汇编用汇编语言编写的程序称为源程序,常用的汇编程序有程序有ASM-86和宏汇编和宏汇编MASM-86。汇编语言源程序的组成部分汇编语言源程序的组成部分:可以使用可以使用CPU指令系统指令系统所提供的指令所提供的指令(硬指硬

    4、指令令);可以使用各种可以使用各种符合汇编语法符合汇编语法的表达式,的表达式,运算运算符以及自行定义生成满足需要的目标代码的指令。符以及自行定义生成满足需要的目标代码的指令。8/5/2022第第4章章 汇编语言及汇编程序设计汇编语言及汇编程序设计61、标号、标号 8086/8088汇编语言中使用的标号必须遵循下列汇编语言中使用的标号必须遵循下列规则:规则:(1)大小写字母;大小写字母;(2)数字数字09;(3)某些特殊字符(某些特殊字符(,_,?)(4)第一个字符不能是数字,第一个字符不能是数字,“?”不能单独作为标号。不能单独作为标号。(5)标号的有效长度是标号的有效长度是31;有效标号有效

    5、标号:START MY_PROGRAM 无效标号无效标号:MAIN%1BETA8/5/2022第第4章章 汇编语言及汇编程序设计汇编语言及汇编程序设计7二、伪指令二、伪指令 伪指令是告诉汇编程序生成目标代码的指令语伪指令是告诉汇编程序生成目标代码的指令语句。句。1、符号定义伪指令符号定义伪指令 2、内存数据定义伪指令内存数据定义伪指令 3、段定义伪指令、段定义伪指令 4、段寄存器说明伪指令、段寄存器说明伪指令 5、定位伪指令定位伪指令 6、子程序伪指令子程序伪指令8/5/2022第第4章章 汇编语言及汇编程序设计汇编语言及汇编程序设计81、符号定义伪指令、符号定义伪指令 (1)EQU伪指令伪指

    6、令 (2)等号等号(赋值赋值)伪指令伪指令 (3)解除符号定义伪指令解除符号定义伪指令8/5/2022第第4章章 汇编语言及汇编程序设计汇编语言及汇编程序设计9(1)EQU伪指令伪指令伪指令格式伪指令格式:EQU 指令功能指令功能:给符号名赋值。符号名可以由程序员取给符号名赋值。符号名可以由程序员取定,定,表达式应该是可以计算得出一个具体值。例表达式应该是可以计算得出一个具体值。例:PORT EQU 88H;定义符号;定义符号PORT代表代表88H DATA EQU PORT+2;定义符号;定义符号DATA代表代表;PORT+2注意注意:用用EQU定义的符号,不能重新再定义,除非用定义的符号,

    7、不能重新再定义,除非用PURGE伪指令解除;伪指令解除;如果在表达式中用了其他符号,必须事先定义。如果在表达式中用了其他符号,必须事先定义。8/5/2022第第4章章 汇编语言及汇编程序设计汇编语言及汇编程序设计10(2)等号等号(赋值赋值)伪指令伪指令伪指令格式伪指令格式:=指令功能指令功能:与与EQU类似,唯一的区别是类似,唯一的区别是“=”可以随可以随时对符号名赋新值,时对符号名赋新值,而不必使用而不必使用PURGE伪指令。伪指令。例例:PORT=88H;定义符号;定义符号PORT代表代表88HDATA=PORT+2;定义符号;定义符号DATA代表代表PORT+28/5/2022第第4章

    8、章 汇编语言及汇编程序设计汇编语言及汇编程序设计11(3)解除符号定义伪指令解除符号定义伪指令伪指令格式伪指令格式:PURGE 符号符号1,符号符号2,指令功能指令功能:撤消用撤消用EQU赋值的符号名,赋值的符号名,以便于赋予以便于赋予新值。新值。例例:PURGE PORT,DATA;撤消用;撤消用EQU对对PORT、;DATA的赋值的赋值8/5/2022第第4章章 汇编语言及汇编程序设计汇编语言及汇编程序设计122、内存数据定义伪指令、内存数据定义伪指令格式格式:变量变量 命令命令 参数参数1,参数参数2,功能功能:数据定义语句用来分配存储单元。数据定义数据定义语句用来分配存储单元。数据定义

    9、语句的语句的命令命令有有:DB 定义字节数据定义字节数据 DW定义字数据定义字数据 DD定义双字数据定义双字数据 DQ定义定义8字节数据字节数据 DT定义定义10字节数据字节数据8/5/2022第第4章章 汇编语言及汇编程序设计汇编语言及汇编程序设计132、内存数据定义伪指令、内存数据定义伪指令复制操作符复制操作符 格式格式:DUP 数据数据1,数据,数据2,功能功能:汇编程序把所定义的数据按先后次序连:汇编程序把所定义的数据按先后次序连续分配存储空间,所起的名称只代表第一个单元的续分配存储空间,所起的名称只代表第一个单元的字符。字符。例题例题8/5/2022第第4章章 汇编语言及汇编程序设计

    10、汇编语言及汇编程序设计142、内存数据定义伪指令、内存数据定义伪指令例例:VAR1 DB 32H,ABCVAR2 DW 1234H,40H,AB DD 12345678H DB?,11000011BARRY1 DB 2 DUP(0,1)ARRY2 DW 2 DUP(?,(?,1)-C3H00H01H00H-01H00H-01H00H第一组字方式的?,111000011BARRY1ARRY201H-预留的存储单元第一组字节方式的0,1第二组字节方式的0,1第二组字方式的?,1.(上接左下)32H41H42H43H34H40H42H41H78H56H34H12H1234H0040HA1234567

    11、8HABCVAR1VAR212H00HB.(下接右上)8/5/2022第第4章章 汇编语言及汇编程序设计汇编语言及汇编程序设计15三、表达式及运算符三、表达式及运算符 在汇编语言中,指令的操作数除了可以是常数、在汇编语言中,指令的操作数除了可以是常数、寄存器、变量和标号外,还可以是表达式。寄存器、变量和标号外,还可以是表达式。表达式表达式是由常数、寄存器、变量、标号和专用是由常数、寄存器、变量、标号和专用运算符组合而成。运算符组合而成。在程序汇编时,汇编程序自动把这些表达式计在程序汇编时,汇编程序自动把这些表达式计算出来,形成具体的指令操作数。算出来,形成具体的指令操作数。1、常数、变量和标号

    12、常数、变量和标号 2、表达式及运算符表达式及运算符返回8/5/2022第第4章章 汇编语言及汇编程序设计汇编语言及汇编程序设计161、常数、变量和标号、常数、变量和标号常数常数 包括数值型常数和字符型常数。包括数值型常数和字符型常数。如:如:12H,1234H,AB变量变量 变量代表存放在存储单元中的数据。变量代表存放在存储单元中的数据。定义后的变量有三个属性:定义后的变量有三个属性:(1)段属性表示变量所在的逻辑段;段属性表示变量所在的逻辑段;(2)偏移量属性表示变量所在逻辑段中的偏移地偏移量属性表示变量所在逻辑段中的偏移地址;址;(3)类型属性表示变量占用的存储单元数,类型属性表示变量占用

    13、的存储单元数,DB、DW、DD、DQ、DT。8/5/2022第第4章章 汇编语言及汇编程序设计汇编语言及汇编程序设计171、常数、变量和标号、常数、变量和标号标号标号 是指令目标代码的符号地址。是指令目标代码的符号地址。在转移指令中常用标号代替具体转移地址,标在转移指令中常用标号代替具体转移地址,标号的使用使编写汇编语言程序时,不必考虑程序汇号的使用使编写汇编语言程序时,不必考虑程序汇编、连接后系统分配给指令代码的实际地址。编、连接后系统分配给指令代码的实际地址。标号同样有三个属性:标号同样有三个属性:(1)段属性表示指令代码所在的逻辑段;段属性表示指令代码所在的逻辑段;(2)偏移量属性表示指

    14、令代码所在的逻辑段中的偏移量属性表示指令代码所在的逻辑段中的偏移地址;偏移地址;(3)距离属性表示标号可作段内转移或段间转移距离属性表示标号可作段内转移或段间转移(NEAR、FAR)。)。8/5/2022第第4章章 汇编语言及汇编程序设计汇编语言及汇编程序设计18 2、表达式及运算符、表达式及运算符表达式表达式由操作数和运算符组成。由操作数和运算符组成。其中,操作数可以是常数、变量、寄存器和标其中,操作数可以是常数、变量、寄存器和标号。号。运算符包括算术运算符、逻辑运算符、关系运运算符包括算术运算符、逻辑运算符、关系运算符、分析运算符和属性运算符五类运算。算符、分析运算符和属性运算符五类运算。

    15、注意:运算符的先后次序注意:运算符的先后次序。8/5/2022第第4章章 汇编语言及汇编程序设计汇编语言及汇编程序设计19五、汇编语言程序的上机过程五、汇编语言程序的上机过程 建立汇编语言的环境,典型的汇编语言开发环建立汇编语言的环境,典型的汇编语言开发环境都包含境都包含4种工具:种工具:1、编辑程序编辑程序 2、汇编程序汇编程序 3、连接程序连接程序 4、汇编程序的上机过程汇编程序的上机过程8/5/2022第第4章章 汇编语言及汇编程序设计汇编语言及汇编程序设计201、编辑程序、编辑程序 (1)编辑程序是用来输入汇编语言源程序的工具,编辑程序是用来输入汇编语言源程序的工具,包括包括EDIT.

    16、EXE,EDLIN.EXE等;等;(2)汇编语言是以文本格式保存的;汇编语言是以文本格式保存的;(3)汇编程序的源程序必须以汇编程序的源程序必须以ASM作为作为扩展名扩展名;(4)输入和编辑源程序时必须遵循汇编语言的语输入和编辑源程序时必须遵循汇编语言的语法规定。法规定。汇编程序的基本结构汇编程序的基本结构 例题例题 实际操作实际操作:编辑源程序编辑源程序 TEST11.ASM8/5/2022第第4章章 汇编语言及汇编程序设计汇编语言及汇编程序设计21汇编程序的基本结构汇编程序的基本结构DATAA SEGMENT ;数据段内定义各类程序执行需要的相关的数据;数据段内定义各类程序执行需要的相关的

    17、数据DATAA ENDSSTACKA SEGMENT ;根据具体程序的需要,定义堆栈段供程序执行过程;根据具体程序的需要,定义堆栈段供程序执行过程 ;中保持临时数据;中保持临时数据STACKA ENDSCODEA SEGMENT ASSUME CS:CODEA,DS:DATAA,SS:STACKA START:MOV AX,DATAA MOV DS,AX ;完成具体操作的指令序列;完成具体操作的指令序列CODEA ENDS END START8/5/2022第第4章章 汇编语言及汇编程序设计汇编语言及汇编程序设计22实际操作实际操作(实现实现X+YZ,源程序文件名源程序文件名:TEST11.A

    18、SM)DATA1 SEGMENT;数据段数据段 X DB 05H Y DB 04H Z DB?DATA1 ENDSCODE1 SEGMENT;代码段;代码段 ASSUME CS:CODE,DS:DATASTART:MOV AX,DATA;数据段基址数据段基址AX MOV DS,AX;AX DS MOV AL,X;内存单元内存单元X的数据的数据AL ADD AL,Y;内存单元内存单元Y的数据的数据+ALAL,即即X+Y AL MOV Z,AL;AL内存单元内存单元Z,即求和结果送回即求和结果送回Z MOV AH,4CH;送功能号;送功能号 INT 21H;系统功能调用,返回操作系统;系统功能调用

    19、,返回操作系统 CODE1 ENDS END START8/5/2022第第4章章 汇编语言及汇编程序设计汇编语言及汇编程序设计232、汇编程序、汇编程序 (1)汇编程序汇编程序用来把源程序翻译成机器码,用来把源程序翻译成机器码,包括包括ASM.EXE,MASM.EXE;(2)汇编程序翻译源程序,汇编程序翻译源程序,产生一个目标代码文产生一个目标代码文件,与源程序文件名相同,扩展名为件,与源程序文件名相同,扩展名为OBJ。实际操作实际操作:产生目标文件产生目标文件TEST11.OBJ8/5/2022第第4章章 汇编语言及汇编程序设计汇编语言及汇编程序设计243、连接程序、连接程序 通过汇编产生

    20、的是通过汇编产生的是OBJ文件是二进制目标文件,文件是二进制目标文件,但用的是浮动地址,但用的是浮动地址,不能直接运行,不能直接运行,必须用连接程必须用连接程序序LINK.EXE连接和定位。连接和定位。实际操作实际操作:产生可执行文件产生可执行文件TEST11.EXE8/5/2022第第4章章 汇编语言及汇编程序设计汇编语言及汇编程序设计254、汇编程序的上机过程、汇编程序的上机过程开始开始编写汇编源程序并用编写汇编源程序并用文本编辑程序输入文本编辑程序输入用用MASMMASM汇编源程序汇编源程序用用LINKLINK连接目标代码文件连接目标代码文件在在DOSDOS操作系统下操作系统下执行执行E

    21、XEEXE文件文件需要修改源程序吗需要修改源程序吗?结束结束N NY YY YN NN NN NY Y有语法错误吗有语法错误吗?有语法错误吗有语法错误吗?运行结果有错误运行结果有错误?实际操作演示实际操作演示8/5/2022第第4章章 汇编语言及汇编程序设计汇编语言及汇编程序设计26data1 segment;数据段开始数据段开始x db 05hy db 04hz db?buff db 5+4=$;定义一个数据串,数据串规定以定义一个数据串,数据串规定以$结尾,结尾,为了显示为了显示5+4=data1 endscode1 segment;代码段开始代码段开始 assume cs:code1,d

    22、s:data1;段寄存器说明伪指令段寄存器说明伪指令start:mov ax,data1;将数据段基址将数据段基址ax mov ds,ax;axds mov al,x;内存数据内存数据xal add al,y;内存数据内存数据Y+alal,即即X+Y al mov z,al;alZ,即即X+Y Z lea dx,buff;装载装载 buff的有效地址的有效地址 mov ah,09h;送功能号送功能号 int 21h;系统功能调用,显示屏显示字符串;系统功能调用,显示屏显示字符串5+4=mov dl,z;将将z送送dl add dl,30h;将将z的值转换成对应的的值转换成对应的ASCII码值码

    23、值 mov ah,02h;送功能号;送功能号 int 21H;系统功能调用,;系统功能调用,将将x+y的和的和z以单字符形式在显示屏上显示出以单字符形式在显示屏上显示出来来 mov ah,4ch;送功能号送功能号 int 21h;系统功能调用,返回系统功能调用,返回DOS状态状态code1 ends end start 返回8/5/2022第第4章章 汇编语言及汇编程序设计汇编语言及汇编程序设计27六、汇编程序的设计过程六、汇编程序的设计过程 1、分析问题确定算法、分析问题确定算法 2、绘制程序流程图、绘制程序流程图(做作业一定要求做作业一定要求)3、编写代码、编写代码8/5/2022第第4章

    24、章 汇编语言及汇编程序设计汇编语言及汇编程序设计28七、汇编程序基本设计方法七、汇编程序基本设计方法 1、简单程序简单程序 作业作业 2、分支程序分支程序 3、循环程序循环程序 4、子程序子程序8/5/2022第第4章章 汇编语言及汇编程序设计汇编语言及汇编程序设计291、简单程序、简单程序 简单程序简单程序是指顺序结构程序,是指顺序结构程序,在程序中不包含在程序中不包含任何转移类指令。任何转移类指令。执行时按指令的先后次序从第一执行时按指令的先后次序从第一条开始逐条执行,直至程序结束。条开始逐条执行,直至程序结束。例题例题8/5/2022第第4章章 汇编语言及汇编程序设计汇编语言及汇编程序设

    25、计30例题例题 1、有、有X,Y两个两个16位数位数3456H和和0ABCDH,求两,求两数之和,并将结果送到数之和,并将结果送到Z单元。单元。解解:编写流程图编写流程图开始开始结果送结果送Z结束结束 初始化初始化取段基址取段基址被加数指针被加数指针加数指针加数指针DSSIDI被加数被加数AX被加数+加数被加数+加数AX8/5/2022第第4章章 汇编语言及汇编程序设计汇编语言及汇编程序设计31例题例题 程序清单程序清单 DATA SEGMENT XDW3456H YDW0ABCDH ZDW0 DATA ENDS;设置数据段,取名;设置数据段,取名DATA CODE SEGMENT ASSUM

    26、E DS:DATA,CS:CODESTART:MOV AX,DATA;取数码段;取数码段DATA段址至段址至AX MOV DS,AX;段地址送;段地址送DS LEA SI,X;将;将X的有效地址送的有效地址送S1 LEA DI,Y;将;将Y的有效地址送的有效地址送D1 MOV AX,SI;将;将X的值送的值送AX ADD AX,DI;AX+Y的值送回的值送回AX MOV Z,AX;将;将AX的值送到存储单元的值送到存储单元Z MOV AH,4CH;设置功能号;设置功能号 INT21H;系统功能调用,返回;系统功能调用,返回DOSCODE ENDS END START 8/5/2022第第4章章

    27、 汇编语言及汇编程序设计汇编语言及汇编程序设计32作业作业P.1202、3、5、7、128/5/2022第第4章章 汇编语言及汇编程序设计汇编语言及汇编程序设计332、分支程序、分支程序 分支程序分支程序就是利用转就是利用转移指令,控制计算机执行移指令,控制计算机执行某段程序或不执行某段程某段程序或不执行某段程序。序。满足判满足判断条件?断条件?是是程序段程序段1程序段程序段2否否满足判断条件满足判断条件1?程序段程序段1满足判断条件n?满足判断条件n?程序段程序段n程序段n+1程序段n+1.程序段2程序段2.是是否否否否否否否否是是是是满足判断条件2?满足判断条件2?两路分支两路分支多路分支

    28、多路分支例题例题8/5/2022第第4章章 汇编语言及汇编程序设计汇编语言及汇编程序设计34例题例题 1、内存中有一个、内存中有一个8位带符号数,求其绝对位带符号数,求其绝对值,并将结果放回原处。值,并将结果放回原处。答:编写流程图答:编写流程图取段基址送取段基址送 DS取操作数指针送取操作数指针送 SI将带符号数送 将带符号数送 AL求补求补将求绝对值的将求绝对值的数送回原内存数送回原内存YN开始开始小于零吗 小于零吗?结束结束系统功能调用,系统功能调用,在屏幕上在屏幕上显示该内存单元的数值显示该内存单元的数值程序清单程序清单8/5/2022第第4章章 汇编语言及汇编程序设计汇编语言及汇编程

    29、序设计35例题例题 程序清单程序清单DATA2 SEGMENTM DB 05H;第二个程序换成第二个程序换成5,即,即0fbhDATA2 ENDSCODE2 SEGMENTASSUME CS:CODE2,DS:DATA2START:MOV AX,DATA2 MOV DS,AX;送段地址至;送段地址至DS LEA SI,M;取;取M的指针的指针MOV AL,SI;取带符号数;取带符号数 AND AL,AL;判断符号位;判断符号位JNS DONE;SF=0,转移到,转移到DONENEG AL;SF=1,AL0)Y=0 (当当X=0)9 (当当X=0?AX0?结束结束系统功能调用,系统功能调用,在屏

    30、幕在屏幕上显示Y的数值上显示Y的数值程序清单程序清单8/5/2022第第4章章 汇编语言及汇编程序设计汇编语言及汇编程序设计37例题例题 程序清单程序清单_数据段数据段DATAXY SEGMENT X DB 8FH;另外两组分别是另外两组分别是7FH,00H Y DB?DATAXY ENDS8/5/2022第第4章章 汇编语言及汇编程序设计汇编语言及汇编程序设计38例题例题 程序清单程序清单_代码段代码段CODE SEGMENT ASSUME CS:CODE,DS:DATAXYSTART:MOV AX,DATAXY MOV DS,AX;送段地址;送段地址 LEA SI,X;取;取X的指针的指针

    31、MOV AL,SI;将;将X的值送的值送AL AND AL,AL;自身与,取符号标志位;自身与,取符号标志位JNS OTHER;SF=0,转移到,转移到OTHER MOV Y,09H;SF=1,则,则X0DONE:MOV DL,YADD DL,30HMOV AH,02HINT 21H;系统功能调用,显示系统功能调用,显示Y的的 值值 MOV AH,4CH INT 21HCODE2 ENDS END START8/5/2022第第4章章 汇编语言及汇编程序设计汇编语言及汇编程序设计393、循环程序、循环程序 循环程序循环程序就是控制计算机反就是控制计算机反复执行一段指令序列的程序结构。复执行一段

    32、指令序列的程序结构。循环控制循环控制循环体循环体循环参数修改循环参数修改继续循环继续循环结束循环结束循环初始化初始化结束处理结束处理继续循环继续循环结束循环结束循环初始化初始化循环控制循环控制循环体循环体结束处理结束处理循环参数修改循环参数修改非零次循环结构非零次循环结构零次循环结构零次循环结构例题8/5/2022第第4章章 汇编语言及汇编程序设计汇编语言及汇编程序设计40 1、统计字节数据、统计字节数据Z的的1的个的个数,将结果放在数,将结果放在RESULT内。内。解:编写流程图解:编写流程图例题例题循环初始化循环初始化取字节数据送取字节数据送AL设置循环次数设置循环次数 CX=08HAL

    33、右移右移 1位位CF=1?YBL+1BLNNCX=0?将统计结果将统计结果BL送送RESULT结束结束CXY开始开始计数器BX清零计数器BX清零CX-1程序清单程序清单8/5/2022第第4章章 汇编语言及汇编程序设计汇编语言及汇编程序设计41例题例题 程序清单程序清单 数据段数据段DATAXY SEGMENT X DB 0FFH;第二个程序换成第二个程序换成5,即,即0fbh RESULT DB?DATAXY ENDS8/5/2022第第4章章 汇编语言及汇编程序设计汇编语言及汇编程序设计42例题例题 程序清单程序清单 代码段代码段CODE SEGMENT ASSUME CS:CODE,DS

    34、:DATAXYSTART:MOV AX,DATAXY MOV DS,AX;送段地址至;送段地址至DSXOR BL,BL;累加器;累加器BL清清0MOV CX,08H;循环次数送;循环次数送CXLEA SI,X;取;取X的指针的指针MOV AL,SI;取;取X送送ALSUM:SHR AL,1;逻辑右移;逻辑右移1位位JNC NONE;CF=0,转移到,转移到NONEINC BL;CF=1,BL+1BLNONE:LOOP SUM MOV RESULT,BL;统计值送;统计值送RESULT内存单元内存单元 MOV DL,RESULT ADD DL,30HMOV AH,02HINT 21H;系统功能调

    35、用,显示该统计数值系统功能调用,显示该统计数值 MOV AH,4CH INT 21HCODE ENDS END START8/5/2022第第4章章 汇编语言及汇编程序设计汇编语言及汇编程序设计434、子程序、子程序 一个程序中,当在不同的地方需要多次使用某一个程序中,当在不同的地方需要多次使用某段程序时,我们常将这段程序单独编写成一个程序段程序时,我们常将这段程序单独编写成一个程序段,称为子程序段,称为子程序/过程。过程。(1)子程序的定义格式子程序的定义格式(2)子程序的调用子程序的调用(3)编写子程序的注意事项编写子程序的注意事项8/5/2022第第4章章 汇编语言及汇编程序设计汇编语言

    36、及汇编程序设计44(1)子程序的定义格式)子程序的定义格式 格式格式:子程序名子程序名 PROC RET 子程序名子程序名 ENDP8/5/2022第第4章章 汇编语言及汇编程序设计汇编语言及汇编程序设计45(2)子程序的调用)子程序的调用 格式格式:CALL 子程序名子程序名8/5/2022第第4章章 汇编语言及汇编程序设计汇编语言及汇编程序设计46(3)编写子程序的注意事项)编写子程序的注意事项 1、现场保护、现场保护:保护调用子程序的现场,保护调用子程序的现场,即保即保护子程序中会用到的寄存器,护子程序中会用到的寄存器,将这些寄存器入栈;将这些寄存器入栈;2、功能子程序、功能子程序:子程

    37、序要完成的功能;子程序要完成的功能;3、恢复现场、恢复现场:为了使计算机返回到主程序调用为了使计算机返回到主程序调用时的状态,时的状态,将入栈的数据出栈。将入栈的数据出栈。注意顺序注意顺序!例题:例题:子程序的基本框架子程序的基本框架8/5/2022第第4章章 汇编语言及汇编程序设计汇编语言及汇编程序设计47子程序的基本框架子程序的基本框架 设某一子程序中要用到寄存器设某一子程序中要用到寄存器BX,CX,SI,DI则:则:ABC:PUSH BXPRSH CXPUSH SIPUSH DI ;子程序的功能程序;子程序的功能程序POP DIPOP SIPOP CXPOP BX RET8/5/2022

    38、第第4章章 汇编语言及汇编程序设计汇编语言及汇编程序设计48例题例题1 编写统计编写统计X数据中的数据中的“1”的个数子程序,并编写主程序的个数子程序,并编写主程序调用。调用。子程序如下:子程序如下:ABC:PUSH BX PUSH CX XOR BL,BL;累加器;累加器BL清清0 MOV CX,08H;循环次数送;循环次数送CXSUM:SHR AL,1;逻辑右移;逻辑右移1位位 JNC NONE;CF=0,转移到,转移到NONE INC BL;CF=1,BL+1BLNONE:LOOP SUM MOV AL,BL;AL里保存的是里保存的是“1”的统计个数的统计个数 POP CX POP BX

    39、 RET8/5/2022第第4章章 汇编语言及汇编程序设计汇编语言及汇编程序设计49例题例题1 主程序主程序_数据段数据段_堆栈段堆栈段DATAXY SEGMENT X DB 0FFH SX DB?DATAXY ENDS;-STACK SEGMENT DW 100 DUP(?)STACK ENDS8/5/2022第第4章章 汇编语言及汇编程序设计汇编语言及汇编程序设计50例题例题1 主程序主程序_代码段代码段CODE1 SEGMENT ASSUME CS:CODE1,DS:DATAXY,SS:STACKSTART:MOV AX,DATA MOV DS,AX LEA BX,X MOV AL,BX

    40、 CALL ABC MOV BX+1,AL MOV DL,SX ADD DL,30H MOV AH,02H INT 21H;系统功能调用,显示该统计数值系统功能调用,显示该统计数值 MOV AH,4CH INT 21H ;子程序插入此处子程序插入此处CODE1 ENDS END START 8/5/2022第第4章章 汇编语言及汇编程序设计汇编语言及汇编程序设计51例题例题2、将一字节无符号二进将一字节无符号二进制数转换为两位十进制数制数转换为两位十进制数的的ASCII码值,并存放在码值,并存放在其后的两个字节。其后的两个字节。(显示显示程序用子程序编写程序用子程序编写)。解:编写流程图:解:

    41、编写流程图:取段基址送取段基址送 DS取操作数指针送取操作数指针送 SI将无符号数送 将无符号数送 AL子程序调用,子程序调用,在屏幕上显示该数在屏幕上显示该数开始开始结束结束AL扩展成AXAL扩展成AXAX/10,商为十位数AX/10,商为十位数 余数为个位数 余数为个位数分别送回指定内存单元分别送回指定内存单元8/5/2022第第4章章 汇编语言及汇编程序设计汇编语言及汇编程序设计52程序程序数据段数据段data1 segment x db 2ah;可任取;可任取100的无符号字节数据的无符号字节数据 y db?z db?buff db 2ah=$data1 ends8/5/2022第第4

    42、章章 汇编语言及汇编程序设计汇编语言及汇编程序设计53代码段:代码段:code1 segment assume cs:code1,ds:data1 start:mov ax,data1 mov ds,ax mov al,x cbw mov bl,0ah div bl mov y,al mov z,ah lea dx,buff mov ah,09h int 21h mov al,y ;下接右上;下接右上;上接左下;上接左下 call disp mov al,z call disp jmp eend disp:mov dl,al add dl,30h mov ah,02h int 21h ret

    43、eend:mov ah,4ch int 21hcode1 ends end start8/5/2022第第4章章 汇编语言及汇编程序设计汇编语言及汇编程序设计54思考题思考题 试编制程序将一个字数据用十六进制数的形式试编制程序将一个字数据用十六进制数的形式显示在屏幕上。显示在屏幕上。8/5/2022第第4章章 汇编语言及汇编程序设计汇编语言及汇编程序设计55八、系统功能调用八、系统功能调用 MS-DOS是是8086/8088微机系统广泛使用的一种微机系统广泛使用的一种操作系统。操作系统。MS-DOS中包含有许多通用的内部子程中包含有许多通用的内部子程序,分别用于完成序,分别用于完成I/O管理、

    44、内存管理、文件管理以管理、内存管理、文件管理以及作业管理等。及作业管理等。MS-DOS以中断服务程序形式提供这些以中断服务程序形式提供这些功能程功能程序序,在汇编语言源程序中可以用软中断调用它们。,在汇编语言源程序中可以用软中断调用它们。系统功能调用(系统功能调用(INT 21H)应用步骤:)应用步骤:(1)传送入口参数到规定的寄存器或存储单元;)传送入口参数到规定的寄存器或存储单元;(2)把子程序功能编号送到)把子程序功能编号送到AH寄存器;寄存器;(3)执行软件中断指令执行软件中断指令INT 21H。8/5/2022第第4章章 汇编语言及汇编程序设计汇编语言及汇编程序设计56常用的系统功能

    45、介绍常用的系统功能介绍(1)返回操作系统(功能号:返回操作系统(功能号:4CH)通常程序结束时,需调用通常程序结束时,需调用4CH的系统功能把微的系统功能把微机的控制权交还给操作系统,方法如下:机的控制权交还给操作系统,方法如下:MOV AH,4CH ;功能号送;功能号送AH INT 21H ;调用功能子程序;调用功能子程序 在编程结束前,将以上两条指令插入,前面许在编程结束前,将以上两条指令插入,前面许多例题已经使用。多例题已经使用。8/5/2022第第4章章 汇编语言及汇编程序设计汇编语言及汇编程序设计57常用的系统功能介绍常用的系统功能介绍(2)键盘输入单字符并回显(功能号:)键盘输入单

    46、字符并回显(功能号:01H)这一功能调用没有入口参数,它从标准输入设备(一这一功能调用没有入口参数,它从标准输入设备(一般默认为键盘)读入一个字符以般默认为键盘)读入一个字符以ASCII码形式送到码形式送到AL,并且,并且将该字符送到标准输出设备(一般默认为显示器)。如果读将该字符送到标准输出设备(一般默认为显示器)。如果读入的是入的是Ctrl-Break码,则退出命令,读入的内容不送码,则退出命令,读入的内容不送AL。例如程序中需要从键盘读入一个字符,可用下面语句实例如程序中需要从键盘读入一个字符,可用下面语句实现:现:MOV AH,01H INT 21H 当上面第二条指令执行完时,系统等待

    47、键盘按键。按下当上面第二条指令执行完时,系统等待键盘按键。按下任一字符时,任一字符时,AL中的内容即为该字符的中的内容即为该字符的ASCII码,同时显示码,同时显示器上显示出所按下的字符。器上显示出所按下的字符。8/5/2022第第4章章 汇编语言及汇编程序设计汇编语言及汇编程序设计58(3)显示单字符(功能号:)显示单字符(功能号:02H)这一功能调用时,系统将这一功能调用时,系统将DL寄存器中的寄存器中的ASCII字符输出到显示器。字符输出到显示器。例如需要显示字符例如需要显示字符“D”,可用以下指令实现:,可用以下指令实现:MOV DL,D;把要显示的字符送;把要显示的字符送DL寄存器寄

    48、存器MOV AH,02H;功能号;功能号02H送送AHINT 21H;调用系统功能显示字符;调用系统功能显示字符D常用的系统功能介绍常用的系统功能介绍8/5/2022第第4章章 汇编语言及汇编程序设计汇编语言及汇编程序设计59常用的系统功能介绍常用的系统功能介绍(4)显示字符串(功能号:)显示字符串(功能号:09H)调用该功能可把内存缓冲区中的字符串输出到显示器,调用该功能可把内存缓冲区中的字符串输出到显示器,缓冲区中的字符串以缓冲区中的字符串以$作为结束标志,缓冲区的首地址存作为结束标志,缓冲区的首地址存放在放在DX。例如:例如:.BUFF2 DB How do you do!$.MOV DX,OFFSET BUFF2 ;送字符串的首地址至;送字符串的首地址至DXMOV AH,09H ;送功能号;送功能号INT 21H ;系统功能调用显示字符串;系统功能调用显示字符串 执行以上几条指令后,屏幕上将显示:执行以上几条指令后,屏幕上将显示:How do you do!

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:第4章汇编语言及汇编程序设计.ppt
    链接地址:https://www.163wenku.com/p-3404152.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


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

    163文库