




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第 5 章章 程序设计及汇编语言程序设计及汇编语言内容安排内容安排一一. 程序设计步骤程序设计步骤二二. 程序设计程序设计三三. 汇编语言及汇编程序汇编语言及汇编程序四四. 汇编语言源程序格式及实例汇编语言源程序格式及实例五五. 上机操作上机操作5.1 程序设计步骤程序设计步骤(1分析问题分析问题(2建立数学模型建立数学模型(3确定算法确定算法(4绘制程序流程图绘制程序流程图(5内存空间分配内存空间分配(6编制程序与静态检查编制程序与静态检查(7程序调试实验)程序调试实验)开场开场完毕完毕初始化初始化处置处置处置处置分支分支是是否否5.2 程序设计程序设计特点:计算机执行程序的方式是特点:计
2、算机执行程序的方式是“从头到尾逐条执行从头到尾逐条执行指令语句,直至程序结束指令语句,直至程序结束1. 简单程序简单程序例例5-1:用数据运算指令,对两个:用数据运算指令,对两个16位数做加法位数做加法运算。这两个数从地址运算。这两个数从地址10050H开始连续存放,开始连续存放,低位在小地址一端,结果存放在这两个数之后低位在小地址一端,结果存放在这两个数之后 流程图:流程图:开场开场暂停暂停AX 10054H和和10055H单元单元被加数被加数+加数加数 AX初始化初始化加数加数 AXMOVAX,1000HMOV DS,AX;DS1000HMOVSI,50H;被加数指针;被加数指针SI50H
3、MOVDI,52H;加数指针;加数指针DI52HMOVBX,54H;和的指针;和的指针BX54HCLC;清;清CFXORAX,AX;清;清AXMOVAX,SI;取一个字到;取一个字到AXADCAX,DI;AXAXDI+CFMOVBX,AX;存一个字到;存一个字到BXHLT;暂停;暂停程序:程序:例例5-2:将内存:将内存10050H单元的内容单元的内容拆成两段,每段拆成两段,每段4位,位,并将它们分别存入并将它们分别存入内存内存10051H和和10052H单元。即单元。即10050H单元中的低单元中的低4位放入位放入10051H的的低低4位,位,10050H单单元中的高元中的高4位放入位放入1
4、0052H的低的低4位,位,而而10051H和和10052H的高的高4位均为零位均为零 流程图:流程图:开场开场暂停暂停逻辑右移得高逻辑右移得高4位,存入内存位,存入内存10052H单元单元用逻辑与指令将该数用逻辑与指令将该数“与与0FH取得低四位,存入内存取得低四位,存入内存10051H单元单元初始化初始化用间址方法取数用间址方法取数 AL再取出原始数再取出原始数 AL程序:程序: MOV AX,1000H MOV DS,AX;DS1000H MOV SI,50H;需拆字节的指针;需拆字节的指针SI=50H MOV AL,SI;取一个字节到;取一个字节到AL中中 ANDAL,0FH;把;把A
5、L的前的前4位清位清0 MOVSI+1,AL;把得到的后;把得到的后4位放到位放到10051H单元单元 MOVAL,SI;再取出需拆字节放到;再取出需拆字节放到AL中中 MOVCL,4 SHRAL,CL;逻辑右移四次,前;逻辑右移四次,前4位补位补0 MOVSI+2,AL;放入;放入10052H单元单元 HLT2. 分支程序分支程序 利用条件转移指令,使程序执行到某一指令后,根据利用条件转移指令,使程序执行到某一指令后,根据条件即上面运算的情况是否满足,改变程序执行条件即上面运算的情况是否满足,改变程序执行的次序的次序特点:先用比较指令、数据操作、位测指令等改变标志特点:先用比较指令、数据操作
6、、位测指令等改变标志寄存器各个标志位,然后用条件转移指令进行分支寄存器各个标志位,然后用条件转移指令进行分支例例5-3:求:求AX累加器和累加器和BX寄存器中两个无符号数寄存器中两个无符号数之差的绝对值,结果放在内存之差的绝对值,结果放在内存2800H单元中单元中 流程图:流程图:开始初始化:清除CFAX-BXAXAX-BX0?AX内存(2800H)和(2801H)单元BX-AXBXBX内存(2800H)和(2801H)单元暂停是否程序:程序: CLC;清除;清除CF MOV CX,AX SUBAX,BX;AXAXBX,影响影响CF JCAA ;CF1转转AA去执行即去执行即AXBX时转移)时
7、转移) MOV DI,2800H;结果指针;结果指针DI2800H MOV DI,AX;结果送到;结果送到2800H和和2801H单元单元 JMPLP;暂停;暂停AA:SUBBX, CX ;BXBXCX MOVDI,2800H MOVDI,BXLP: HLT例例5-4:编制程序:编制程序 从外设从外设71H端端口中取一个数口中取一个数M,判断其值,判断其值是否在是否在10和和20之间,即之间,即10M20。如。如果果M20,则,则送送0FFH给外给外设设73H端口;端口;如果如果M10,则送则送00H给外给外设设73H;如果;如果10M20,则,则送送88H给外设给外设73H 开场开场暂停暂停
8、输出输出BL值到值到73号外设去号外设去输入输入71号外号外设的值设的值 AL令令BL=88H令令BL=00H令令BL=0FFHAL值值 20AL值值 10是是是是否否否否LP1LP2START: IN AL,71H;将;将71H端口的字节读入端口的字节读入AL CLC;清除;清除CF CMP AL,10;ALAL10 JC Lw10;小于;小于10转转LP1 CMP AL,20;ALAL20 JC L10to20 ;10AL1,并且放在,并且放在内存内存2019H单单元中,而数据元中,而数据块本身是从块本身是从2019H单元开单元开始存放的,最始存放的,最后,把找出的后,把找出的最大值放到最
9、大值放到2000H单元中,单元中,假设这段数据假设这段数据块中的数都是块中的数都是无符号的无符号的8位位数,请设计成数,请设计成一段可调用的一段可调用的子程序子程序 开场开场暂停暂停SI=2019H,CL=SI00 AL , SI SI+1修改指针修改指针SI SI+1是是否否CX CX-1CX=0AL SIAL值值 SIAL 2000H是是否否LP程序:程序:MAXSub:PUSHFPUSH AXPUSH CXPUSH SIMOV SI,2019HMOV CL,SIINC SIMOV AL,00HMOV CH,00HLP:CLCCMP AL,SIJNCAAMOV AL,SIAA:INC SI
10、LOOPLPMOV 2000H,ALPOPSIPOPCXPOPAXPOPFRET5.3 汇编语言及汇编程序汇编语言及汇编程序汇编语言易识别,但机器不能直接执行;机器语言相反汇编语言易识别,但机器不能直接执行;机器语言相反1. 汇编语言与机器语言汇编语言与机器语言汇编语言汇编语言源程序源程序目标程序目标程序汇编程序汇编程序汇编汇编汇编语言程序设计的特点:汇编语言程序设计的特点: 汇编语言是面向机器的语言,汇编语言是面向机器的语言,CPU不同的机器有不同不同的机器有不同的汇编语言的汇编语言 可以充分利用机器的硬件功能和结构特点可以充分利用机器的硬件功能和结构特点 可有效地加快程序的执行速度,减少目
11、标程序所占用可有效地加快程序的执行速度,减少目标程序所占用的存储空间的存储空间 可以对输入可以对输入/输出端口进行控制,实时性能好输出端口进行控制,实时性能好 汇编语言程序移植性、通用性、可读性差汇编语言程序移植性、通用性、可读性差汇编语言的指令汇编语言的指令机器语言的指令机器语言的指令一一对应一一对应汇编程序:汇编程序:ASM-86/MASM-862. 伪指令语句伪指令语句特点:不同于指令语句,伪指令语句又称命令语句特点:不同于指令语句,伪指令语句又称命令语句中的伪指令本身不产生对应的机器目标代码中的伪指令本身不产生对应的机器目标代码功能:仅仅是告诉汇编程序,对后面的指令语句和伪指功能:仅仅
12、是告诉汇编程序,对后面的指令语句和伪指令语句的操作数应该如何产生机器目标代码令语句的操作数应该如何产生机器目标代码伪指令语句格式:伪指令语句格式:标号:指令助记符操作数;注释,伪指令3. 伪指令伪指令(1符号定义伪指令赋值语句)符号定义伪指令赋值语句) 格式:格式: EQU 功能:把表达式的值赋给符号名功能:把表达式的值赋给符号名伪指令伪指令机器指令机器指令一一对应一一对应特点:伪指令不是由特点:伪指令不是由86系列系列CPU执行,而是由执行,而是由MASM-86识别,并完成相应的功能识别,并完成相应的功能注意:用注意:用EQU语句赋值的符号名不能被重新赋值语句赋值的符号名不能被重新赋值(2内
13、存数据定义伪指令内存数据定义伪指令格式:格式:名字名字 DB 名字名字 DW 功能:表达式或项表中的每一项是一个功能:表达式或项表中的每一项是一个/两个字两个字节数,他们从符号名地址开始按字节连续存放,节数,他们从符号名地址开始按字节连续存放,直到表中数据项结束直到表中数据项结束如:如:D1 DB 12H, 12H 12H D1 DB 3 DUP (12H) MOV AX, D1注意:注意: 表达式或数据项表多于一项时,项与项之间用表达式或数据项表多于一项时,项与项之间用逗号逗号“,”或空格分隔或空格分隔 表达式或数据项重复书写时,可用重复格式表达式或数据项重复书写时,可用重复格式DUP 需考
14、虑符号名的类型一致需考虑符号名的类型一致(3段定义伪指令段定义伪指令格式:格式: SEGMENT 定位方式定位方式连接方式连接方式类别类别名名 ENDS功能:给存储器在逻辑上分段,它为程序的汇编和连接说功能:给存储器在逻辑上分段,它为程序的汇编和连接说明了段名、分段的各种属性以及分段的开始和结束明了段名、分段的各种属性以及分段的开始和结束定位方式:又称定位类型,指定段的起始地址边界定位方式:又称定位类型,指定段的起始地址边界PAGEPARAWORDBYTE指定起始地址的低指定起始地址的低8 8位是位是0 0指定起始地址的低指定起始地址的低4 4位是位是0 0指定起始地址的最低位是指定起始地址的
15、最低位是0 0指定起始地址是任意值指定起始地址是任意值连接方式:又称组合类型,告诉连接程序本段与其他段连接方式:又称组合类型,告诉连接程序本段与其他段可按某种方式连接可按某种方式连接PUBLICSTACK空缺空缺NONE)COMMONMEMORYAT 表达式表达式把本段与其他同名同类型的段连接起来,共用一个把本段与其他同名同类型的段连接起来,共用一个段的起点地址,形成一个物理段段的起点地址,形成一个物理段表示本段是堆栈段,连接方式同表示本段是堆栈段,连接方式同PUBLIC表示本段不与任何段连接,是系统隐含连接方式表示本段不与任何段连接,是系统隐含连接方式表示本段与同名同类型的段共用同一段的起点
16、地址,表示本段与同名同类型的段共用同一段的起点地址,即同名同类段相重叠,段的长度是最长段的长度即同名同类段相重叠,段的长度是最长段的长度表示本段在连接时定位在所有段之上,即高地址处表示本段在连接时定位在所有段之上,即高地址处表示本段定位在表达式值指定的段地址处表示本段定位在表达式值指定的段地址处类别名:需用单引号括起来,凡是类型名相同的段在连类别名:需用单引号括起来,凡是类型名相同的段在连接时均按先后顺序连接起来接时均按先后顺序连接起来(4段寄存器说明伪指令段寄存器说明伪指令格式:格式:ASSUME 段寄存器:段定义名段寄存器:段定义名1 ,段寄存器:,段寄存器:段定义名段定义名2, 功能:告
17、诉汇编程序在汇编时,段寄存器功能:告诉汇编程序在汇编时,段寄存器CS:DS:SS:和和ES:应具有的符号段基址,以便汇编指令时确定段:应具有的符号段基址,以便汇编指令时确定段和建立错误信息。但是段寄存器实际值和建立错误信息。但是段寄存器实际值CS除外还除外还要有传送指令在执行程序时赋值要有传送指令在执行程序时赋值(5模块开始伪指令模块开始伪指令格式:格式:NAME 模块名模块名功能:指明程序模块的开始,并指出模块名,一般取源功能:指明程序模块的开始,并指出模块名,一般取源程序文件名为模块名程序文件名为模块名(6过程子程序定义伪指令过程子程序定义伪指令格式:格式: PROC NEAR (或(或F
18、AR) ENDP功能:定义过程是为了实现子程序调用而设的功能:定义过程是为了实现子程序调用而设的调用格式:调用格式:CALL 过程由过程由RET指令返回指令返回(7模块结束伪指令模块结束伪指令格式:格式:END 启动标号或过程名启动标号或过程名功能:告诉汇编程序源文件结束,并给出执行程序的入口位置功能:告诉汇编程序源文件结束,并给出执行程序的入口位置(8定位伪指令定位伪指令格式:格式:ORG 功能:把以下语句定义的内存数据或程序,从表达式指功能:把以下语句定义的内存数据或程序,从表达式指定的起点偏移地址开始连续存放,直至遇到新的定的起点偏移地址开始连续存放,直至遇到新的ORG指令。表达式值是一
19、个无符号数指令。表达式值是一个无符号数(9列表伪指令列表伪指令格式:格式:PAGE 行数,行字数行数,行字数功能:为列表文件定义每页行数功能:为列表文件定义每页行数10255和每行字符和每行字符数数60132),默认值是),默认值是66行,行,80列列5.4 汇编语言源程序格式及实例汇编语言源程序格式及实例DATA SEGMENT 存放数据项的数据段存放数据项的数据段DATA ENDSEXTRA SEGMENT 存放数据项的附加段存放数据项的附加段EXTRA ENDSTACK1 SEGMENT PARA STAC 作堆栈用的堆栈段作堆栈用的堆栈段STACK1 ENDS(1汇编语言源程序基本格式
20、汇编语言源程序基本格式COSEG SEGMENT ASSUME CS :COSEG , DS : DATA ASSUME SS : STACK1, ES: EXTRABEING : MOV AX ,DATA MOV DS ,AX 存放指令序列存放指令序列COSEG ENDS END BEING注意:排列的先后顺序可以是任意的注意:排列的先后顺序可以是任意的 例例5-8:从键盘上输入任意一个:从键盘上输入任意一个1位十进制数位十进制数09),用移位指令乘),用移位指令乘10,并将结果显示出,并将结果显示出来来 (2实例实例程序:程序:NAME EX1PAGE 50,70DAT SEGMENT P
21、ARA DAT BUFF DB 4 DUP(?)DAT ENDSSTAC SEGMENT PARA STACK STA STA1 DB 100 DUP(?)STAC ENDSCODE SEGMENT PARA CODE ASSUME CS: CODE, DS: DAT ASSUME SS: STAC, ES: DATSTART PROC FAR PUSH DS XOR AX, AX PUSH AX MOV AX, DAT MOV DS, AX LEA SI, BUFF ;建立缓冲区首址指针;建立缓冲区首址指针 CALL P1 ;调键盘输入子程序;调键盘输入子程序 CALL P2 ;调乘;调乘1
22、0子程序子程序 CALL P3 ;调显示子程序;调显示子程序 RET;返回;返回DOS;设置;设置DS值值P1 PROC ;键盘输入子程序;键盘输入子程序RE: MOV AH, 1 INT 21H CMP AL, 0 JC RE CMP AL, A JNC RE AND AL, 0FH MOV SI, AL MOV DL, 0DH MOV AH, 2 INT 21H MOV DL, 0AH MOV AH, 02H INT 21H RETP1 ENDP;从键盘输入一个数并显示;从键盘输入一个数并显示;判数据输入合法否?若不合法,重新输入;判数据输入合法否?若不合法,重新输入;将输入数据转换为;将
23、输入数据转换为BCD码存缓冲区码存缓冲区;回车换行符送显示;回车换行符送显示P2 PROC ;乘;乘10子程序子程序 MOV AL, SI ;从缓冲区取数;从缓冲区取数 SHL AL, 1 MOV BL, AL MOV CL, 2 SHL AL, CL ADD AL, BL MOV AH, 0 MOV BL, 10 DIV BL ADD AH, 30H ADD AL, 30H MOV SI, AL MOV SI+1, AH RET P2 ENDP;乘;乘10;将积转换成;将积转换成ASC码存缓冲区码存缓冲区 P3 PROC ;显示子程序;显示子程序 MOV DL, SI MOV AH, 2 INT 21H MOV DL, SI+1 MOV AH, 2 INT 21H RETP3 ENDPCODE ENDSEND START5.5 上机操作上机操作编辑程序编辑程序 .ASMMASM .OBJ LINK .EXE汇编语言上机过程:汇编语言上机过程:开机进行系统选择开机进行系统选择DOS进入进入DOS环境环
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 大棚高空作业合同协议
- 城置业商铺合同协议
- 地灾评估合同协议
- 垃圾费处理合同协议
- 地摊设备出售合同协议
- 夫妻民事协议书范本
- 大运会安保协议书范本
- 工地粉刷劳动合同协议
- 复耕整地合同协议
- 地产销售公司合同协议
- 2025年深圳市九年级中考语文二模联考试卷附答案解析
- 小学生金融知识普及课件
- 七年级下册《青春之光》课件
- 集体备课培训讲座
- 上海市闵行区2024-2025学年高三下学期二模地理试题(含答案)
- 2025-2030中国橡胶粉改性沥青行业市场现状供需分析及投资评估规划分析研究报告
- GB/T 320-2025工业用合成盐酸
- 大部分分校:地域文化形考任务四-国开(CQ)-国开期末复习资料
- 小红书食用农产品承诺书示例
- 2024年共青团入团积极分子考试题库(附答案)
- MOOC 职场英语-西南交通大学 中国大学慕课答案
评论
0/150
提交评论