汇编语言程序的设计-分支结构
- 格式:ppt
- 大小:1.70 MB
- 文档页数:19
实验二 分支结构程序设计实验1、实验目的和要求:掌握汇编语言分支程序的设计方法;2、实验内容:编程序求分段函数Y 的值。
已知变量X 为16位带符号数, 分段函数的值要求 保存到字单元Y 中。
函数定义如下:1 (当X>0)Y = 0 (当x=0)—1 (当X<0)3、实验仪器与器材:计算机及EMU8086汇编软件等。
4、实验原理:分支结构的程序设计方法的关键在于构造合适的分支条件和分析程序流程,根据不同的程序流程选择适当的分支语句。
分支结构适合于带有逻辑或关系比较等条件判断的计算,设计这类程序时往往都要先绘制其程序流程图,然后根据程序流程写出源程序,这样做把程序设计分析与语言分开,使得问题简单化,易于理解。
程序流程图是根据解题分析所绘制的程序执行流程图。
5、实验过程与测试数据(含电路图/程序流程框图):6、实验分析:自己分析7、实验体会:自己总结实验参考程序:DATA SEGMENTX DW -128Y DW ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA START: MOV AX,DATAMOV DS,AXMOV AX,XCMP AX,0JG ISPNJZ ISZNMOV Y,-1JMP FINISHISPN: MOV Y,1JMP FINISHISZN: MOV Y,0FINISH: MOV AH,4CHINT 21HCODE ENDSEND START思考题:把程序修改成如下的分段函数的值—1 (当X>=0)Y=1 (当X<0)。
实验一简单程序编制和上机过程一.实验目的1.掌握计算机常用代码的软件转换技术。
2.熟悉DEBUG软件的使用。
3.掌握简单程序的编程方法。
二.实验内容代码转换是计算机和I/O设备进行信息交换的重要技术之一。
各种I/O设备所提供和接收的数据编码不尽相同。
为了处理这些信息,计算机必须将各种不同编码形式的信息转换成别种适当的数据形式。
例如,键盘输入的数据均为ASC Ⅱ码形式存储在内存中,通常要求将其转换成相应的数据形式。
一般实现代码转换有两种方法:1.软件法利用CPU的算术逻辑运算功能,通过运算或查表实现各种数据代码间的转换。
该方法经济但速度慢。
2.硬件法利用专用代码转换集成电路进行转换。
如74LS74可把BCD码转换为七段代码。
这种方法需要硬件费用,但速度快。
本实验要求掌握软件编码转换技术。
计算机常用的代码有二进制、八进制、十六进制、BCD码、ASCⅡ码、七段码等,它们之间的相互关系如下表所示。
本次试验的内容是ASCⅡ码转换为未组合BCD码设从键盘输入十进制数的ASCⅡ码已存放在起始地址CS :150H的单元中,把它转换成未组合BCD码后,再分别存入起始地址为CS:15AH的单元中。
若输入的不是十进制数的ASCⅡ码,则相应存放结果单元的内容为“FF”。
提示:1.组合BCD码是一位十进制数字占一个字节,高半字节为0,低半字节为该十进制数字的BCD码。
ASCⅡ码转换为未组合BCD码只需减30H。
2.程序框图如下图所示。
3.程序执行前,需要在CS:150H内存缓冲区写入待转换的ASCⅡ码。
方法如下:方法一:用A命令-ACS:150 DB 35,39,30,41,32CS:155 ∧C方法二:用E 命令-ECS:150,35,39,30,41,32方法三:用F命令-FCS:150 L5 35,39,30,41,321.执行程序后检查执行结果可用D命令:-DCS:15ACS:15A 05,09,00,FF,02ASCⅡ码转换为未组合BCD码的程序流程图参考程序如下:ORG 100HMOV CX,0005HMOV DI,150HBB:MOV BL,0FFHMOV A,[DI]CMP AL,3AHJNB DONESUB AL,30HJB DONEMOV BL,ALDONE:MOV AL,BLMOV [DI+0AH],ALINC DILOOP BBINT 20HORG 150HDB 35H,39H,30H,41H,32H实验二顺序结构的程序设计一.实验目的1.掌握计算机常用代码的软件转换技术。
第四章汇编语言程序设计本章的汇编语言程序设计的主要容有:汇编语言程序设计概述、汇编语言程序的结构形式、汇编语言的伪指令。
(一个单片机应用系统和其它计算机系统一样,在完成一项具体工作的时候,它要按照一定的次序,去执行操作,这些操作实际上就是由设计人员,以单片机能够接受的指令编制的程序,那么无论计算机也好,单片机也好,实际上编制程序的过程,就是用计算机来反映设计者的编程思想,那么这一章中,我们将向大家介绍怎样使用单片机指令系统来编制一些应用程序。
在介绍之前,我们还是来学习汇编语言的一些基础知识)4.1 汇编语言程序设计概述1、计算机的汇编语言以助记符表示的指令,每一条指令就是汇编语言的一条语句。
(汇编语言程序设计实际上就是使用汇编指令来编写计算机程序。
汇编语言的语句有严格的格式要求)2、汇编语言的语句格式MCS-51汇编语言的语句格式表示如下:[<标号>]: <操作码> [<操作数>]; [<注释>]标号:指令的符号地址,有了标号,程序中的其它语句才能访问该语句。
①标号是由1~8个ASCII字符组成,但头一个字符必须是字母,其余字符可以是字母、数字或其它特定字符。
②不能使用汇编语言已经定义了的符号作为标号,如指令助记符、伪指令记忆符以及寄存器的符号名称等。
(同一个标号在程序中只能定义一次,不能重复定义;一条语句可以有标号,也可以没有标号,所以是否有标号,取决于程序中是否需要访问该语句。
)操作码:规定语句执行的操作容,操作码是以指令助记符表示的,是汇编指令格式中唯一不能空缺的部分。
操作数:给指令的操作提供数据或地址。
注释:是对语句或程序段的解释说明。
(在单片机中,这四个部分怎么加以区分呢?使用分界符)分界符(分隔符):用于把语句格式中的各部分隔开,以便于编译程序区分不同的指令段。
冒号(:)用于标号之后空格()用于操作码和操作数之间逗号(,)用于操作数之间,分割两个以上的操作数分号(;)用于注释之前。
分支结构在程序设计中的作用主要体现在以下几个方面:
逻辑判断:分支结构可以根据不同的条件执行不同的代码块,从而实现程序的逻辑判断。
通过使用分支结构,程序能够根据不同的条件做出决策,从而改变程序的执行流程。
条件执行:在程序设计中,有时候需要根据不同的条件执行不同的操作。
分支结构允许程序员根据条件判断的结果来选择要执行的代码块,从而实现更加灵活的程序行为。
异常处理:分支结构可以用于实现异常处理。
当程序遇到错误或异常情况时,可以使用分支结构来处理这些情况,避免程序崩溃或出现不可预测的行为。
输入验证:在接收用户输入时,分支结构可以帮助验证输入的有效性。
根据输入的不同情况,分支结构可以执行不同的代码块,从而对无效的输入进行适当的处理。
多路选择:分支结构可以用于实现多路选择,即根据不同的条件执行不同的代码路径。
这对于需要处理多种可能情况或条件的程序来说非常有用。
总的来说,分支结构在程序设计中的作用是实现条件控制和多路选择,使得程序能够根据不同的情况做出决策,更加智能地处理问题,提高程序的灵活性和可维护性。
同时,正确使用分支结构也是保证程序逻辑正确、提高程序性能的重要手段。
汇编语言结构汇编语言是一种低级别的编程语言,用于与计算机硬件进行直接交互。
它提供了对计算机硬件的底层访问和控制,使程序员能够更加精确地编写处理器指令。
一、概述汇编语言结构是汇编程序的基本组成部分。
一个典型的汇编程序由若干条指令组成,每条指令执行特定的操作。
指令通常包括操作码和操作数,用于指定要执行的任务和相关数据。
在编写汇编程序时,程序员需要了解指令的结构和格式,以正确地编写代码。
二、指令格式在汇编语言中,每条指令都有固定的格式,即操作码、目标操作数和源操作数。
操作码指定要执行的操作类型,目标操作数用于存储操作结果,源操作数用于提供操作所需的数据。
根据不同的指令类型,操作数的格式和长度也会有所不同。
三、寄存器寄存器是汇编语言中的一种重要数据存储单位,用于存储和处理数据。
计算机硬件通常提供了各种类型的寄存器,如通用寄存器、标志寄存器和指令指针寄存器等。
在编写汇编程序时,程序员可以使用这些寄存器来完成各种任务,如存储数据、进行运算和控制程序流程等。
四、内存内存是计算机中的一种重要存储设备,用于存储程序和数据。
在汇编语言中,程序员可以使用内存来存储变量、数组和其他数据结构,以便在程序执行过程中进行读写操作。
为了有效地使用内存,程序员需要了解内存的地址和访问方式等相关知识。
五、程序结构汇编语言程序通常由若干个过程和子程序组成,用于实现特定的功能。
程序员可以使用标签和跳转指令来控制程序的流程,实现条件分支和循环等结构。
此外,程序员还可以使用宏指令来简化代码编写和调试过程,提高程序的可读性和可维护性。
六、汇编程序的工具和环境为了编写和调试汇编程序,程序员通常需要使用汇编器和调试器等工具。
汇编器用于将汇编源代码翻译成机器码,调试器用于辅助程序员进行代码调试和错误排查。
此外,程序员还可以使用集成开发环境(IDE)来提供更加友好和便捷的编程环境。
结论汇编语言是一种强大而灵活的编程工具,可以直接操作计算机硬件。
通过了解汇编语言的结构和格式,程序员可以编写高效和可靠的代码,更好地理解计算机的工作原理。
汇编语言(四)分支结构程序设计分支结构是计算机程序设计中常用的一种控制结构,它根据一些条件的真假决定程序的执行路径。
在汇编语言中,我们可以使用条件分支指令来实现分支结构的程序设计。
常用的条件分支指令有以下几种:1.无条件跳转指令(JMP):该指令用于无条件跳转到指定的地址。
例如,JMPLABEL指令会跳转到LABEL标记的位置。
2.条件跳转指令:根据一些条件的真假决定是否跳转到指定的地址。
常用的条件跳转指令有以下几种:-跳转指令(JZ、JNZ):根据零标志位(ZF)的状态来判断是否跳转。
如果ZF为1,则跳转;如果ZF为0,则不跳转。
-跳转指令(JC、JNC):根据进位标志位(CF)的状态来判断是否跳转。
如果CF为1,则跳转;如果CF为0,则不跳转。
-跳转指令(JS、JNS):根据符号标志位(SF)的状态来判断是否跳转。
如果SF为1,则跳转;如果SF为0,则不跳转。
-跳转指令(JO、JNO):根据溢出标志位(OF)的状态来判断是否跳转。
如果OF为1,则跳转;如果OF为0,则不跳转。
-跳转指令(JP、JNP):根据奇偶标志位(PF)的状态来判断是否跳转。
如果PF为1,则跳转;如果PF为0,则不跳转。
-跳转指令(JA、JNA):根据无符号数比较结果来判断是否跳转。
如果无符号数比较结果为大于,则跳转;如果无符号数比较结果为小于或等于,则不跳转。
-跳转指令(JB、JNB):根据无符号数比较结果来判断是否跳转。
如果无符号数比较结果为小于,则跳转;如果无符号数比较结果为大于或等于,则不跳转。
-跳转指令(JAE、JNAE):根据无符号数比较结果来判断是否跳转。
如果无符号数比较结果为大于或等于,则跳转;如果无符号数比较结果为小于,则不跳转。
-跳转指令(JBE、JNBE):根据无符号数比较结果来判断是否跳转。
如果无符号数比较结果为小于或等于,则跳转;如果无符号数比较结果为大于,则不跳转。
-跳转指令(JE、JNE):根据有符号数比较结果来判断是否跳转。
第四章教学实施计划3课堂教学实施计划第 8 课教学过程设计:复习 0 分钟;授新课 100 分钟讨论 0 分钟;其它 0 分钟授课类型(请打√):理论课√讨论课□实验课□习题课□其它□教学方式(请打√):讲授√讨论□示教□指导□其它□教学手段(请打√):多媒体√模型□实物□挂图□音像□其它□4.1 汇编语言程序设计概述程序实际上是一系列计算机指令的有序集合。
我们把利用计算机的指令系统来合理地编写出解决某个问题的程序的过程,称为程序设计。
程序设计是单片机应用系统设计的重要组成部分,单片机的全部动作都是在程序的控制下进行的。
随着芯片技术的发展,很多标准的或功能型的硬件电路都集成到了芯片中,所以,软件设计在单片机应用系统开发中占的比重越来越大。
一、汇编语言和高级语言汇编语言:用助记符表示的指令称为汇编语言,用汇编语言编写的程序称为汇编语言源程序汇编语言也是面向机器的,它仍是一种低级语言。
汇编语言离不开具体计算机的硬件,与硬件紧密相关。
高级语言:高级语言不受具体“硬件”的限制,具有通用性强,直观、易懂、易学,可读性好等优点。
多数的51单片机用户使用C语言来进行程序设计。
C语言已经成为人们公认的高级语言中高效、简洁而又贴近51单片机硬件的编程语言。
二、汇编语言的特点•助记符指令和机器指令一一对应,所以用汇编语言编写的程序效率高,占用存储空间小,运行速度快,因此汇编语言能编写出最优化的程序。
•使用汇编语言编程比使用高级语言困难,因为汇编语言是面向计算机的,汇编语言的程序设计人员必须对计算机硬件有相当深入的了解。
•汇编语言能直接访问存储器及接口电路,也能处理中断,因此汇编语言程序能够直接管理和控制硬件设备。
•汇编语言缺乏通用性,程序不易移植,各种计算机都有自己的汇编语言,不同计算机的汇编语言之间不能通用。
三、汇编语言的语句格式•指令语句:每一条指令语句在汇编时都产生一个指令代码(也称机器代码),执行该指令代码对应着机器的一种操作。
天津大学<<汇编语言程序设计>>课程设计学院:职业技术教育学院学号:3008212012姓名:黄立宁班级:1指导教师:谢永超2010-4-26内容简介本程序为利用q、w、e、r、t、y、u、1-7作演奏音符制任意音乐的程序。
该程序能记录所演奏的音乐,能回放所演奏的音乐。
运行过程中,通过屏幕上显示的音符,输入一个不同的数发出不同的音调,即制作出不同的音乐。
每输入一数,屏幕上音符及提示闪烁一次,当输入数为9时,终止音乐的制作,将之前的音乐存入堆栈中,随后送入端口地址,即演奏出刚刚制作的音乐。
成绩:教师签字:目录开发环境 (1)功能描述 (1)系统功能结构框图 (2)程序代码 (3)运行结果 (11)课程设计体会 (12)参考文献 (13)题目:键盘控制发声程序----电子琴一、开发环境1.硬件环境微型计算机一台2.软件环境WindowsXP操作系统使用工具MASM 5.0,要进行汇编语言的编辑和运行,需要以下工作环境:⑴编辑程序,如EDIT.EXE、WORD⑵汇编程序,如MASM.EXE⑶连接程序,如LINK.EXE⑷调试程序,如DEBUG.EXE二、功能描述利用q、w、e、r、t、y、u、1-7作演奏音符制任意音乐的程序。
该程序能记录所演奏的音乐,能回放所演奏的音乐。
运行过程中,通过屏幕上显示的音符,输入一个不同的数发出不同的音调,即制作出不同的音乐。
每输入一数,屏幕上音符及提示闪烁一次,当输入数为9时,终止音乐的制作,将之前的音乐存入堆栈中,随后送入端口地址,即演奏出刚刚制作的音乐。
三、系统功能结构图(续上图):四、程序代码;利用q、w、e、r、t、y、u、1-7演奏音符的程序,能记录所演奏的音乐,能回放所演奏的音乐;********************************************************** DATA SEGMENTmsg DB 0DH,0AH,' 'DB 0DH,0AH,' [ 1 2 3 4 5 6 7 ]'DB 0DH,0AH,' [ q w e r t y u ]'DB 0DH,0AH,' _________________'DB 0DH,0AH,' 'DB 0DH,0AH,' 'DB 0DH,0AH,' *************************************' DB 0DH,0AH,' NOTICE ' DB 0DH,0AH,' Press 1-7 to make music and play it.'DB 0DH,0AH,' Press 9 to interrupt.'DB 0DH,0AH,' ********************************','$';音调(后面用到-1判断音乐播是否放完)sound_0 DW -1sound_11 DW 441,-1sound_12 DW 495,-1sound_13 DW 556,-1sound_14 DW 589,-1sound_15 DW 661,-1sound_16 DW 742,-1sound_17 DW 833,-1sound_1 DW 882,-1sound_2 DW 990,-1sound_3 DW 1112,-1sound_4 DW 1178,-1sound_5 DW 1322,-1sound_6 DW 1484,-1sound_7 DW 1655,-1time DW 25DATA ENDS;**********************************************************STACK SEGMENTDb 200 DUP ('STACK') ;将音符放入堆栈中STACK ENDS;********************************************************** CODE SEGMENTASSUME DS:DATA,SS:STACK,CS:CODE ;段说明START:MOV AX,DATAMOV DS,AXMOV aH,00 ;初始化显示方式MOV AL,00INT 10H;------------------定义一个显示宏SHOW MACRO bLEA DX,bMOV AH,9 ;将以"$"结尾的字符串显示在屏幕上,并将入口参数字符串的首地址的段基址和偏移地址分别放入DS和DX中INT 21HENDM;------------------定义一个声音宏onesound macro soundis,jumpis,letterisCMP AL,letterisJNZ jumpisLEA SI,soundisLEA BP,DS:timeCALL MUSICJMP inputENDM;--------------------show msg ;显示音符和提示;--------------------INPUT: MOV AH,01HINT 21H ;从键盘输入一个字符并显示CMP AL,'9'jnz gomov ah,4ch ;若输入9则返回DOS,终止制作音乐 int 21hgo: onesound sound_11,a0,'q'a0: onesound sound_12,b0,'w'b0: onesound sound_13,c0,'e'c0: onesound sound_14,d0,'r'd0: onesound sound_15,e0,'t'e0: onesound sound_16,f0,'y'f0: onesound sound_17,g0,'u'g0: onesound sound_1,h0,'1'h0: onesound sound_2,i0,'2'i0: onesound sound_3,j0,'3'j0: onesound sound_4,k0,'4'k0: onesound sound_5,l0,'5'l0: onesound sound_6,m0,'6'm0: onesound sound_7,n0,'7'n0: onesound sound_0,o0,alo0: jmp input;---------------------发声(将堆栈中的音符数据送到端口地址) GENSOUND PROC NEARPUSH AXPUSH BXPUSH CXPUSH DXPUSH DI;时间间隔定时器(计数器2的初始化过程)MOV AL,0B6HOUT 43H,AL ;给公用的控制寄存器(地址为43H)赋值 MOV DX,12HMOV AX,348ch ;频率除数DIV DIOUT 42H,ALMOV AL,AHOUT 42H,ALIN AL,61H ;扬声器驱动(61H为输出寄存器分配I/O端口号)MOV AH,ALOR AL,3OUT 61H,AL ;打开扬声器WAIT1: MOV CX,3314 ;等待下一音符的到来call waitfDELAY1: DEC BX ;声音的延迟JNZ WAIT1MOV AL,AH ;关闭扬声器OUT 61H,ALPOP DIPOP DXPOP CXPOP BXPOP AXRETGENSOUND ENDP;*******************************waitf proc nearpush axwaitf1:in al,61hand al,10hcmp al,ahje waitf1mov ah,alloop waitf1 ;CX=0时退出循环,继续键入音符制作音乐pop axretwaitf endp;******************************MUSIC PROC NEARPUSH DSSUB AX,AXPUSH AXFREG: MOV DI,[SI]CMP DI,-1 ;音乐是否放完JE END_MUSMOV BX,DS:[BP] ;将音符放入堆栈CALL GENSOUND ;调发声子程序 ADD SI,2ADD BP,2JMP FREGEND_MUS:RETMUSIC ENDPCODE ENDS;*******************************END START五、运行结果图1 生成OBJ文件图2 生成EXE文件图3 运行结果六、课程设计体会这次课程设计使我对汇编语言有了更进一步的了解和熟悉,实际操作编写程序,并使之能在计算机上正确运行真的有点困难。