文档库 最新最全的文档下载
当前位置:文档库 › 实验二拆字、拼字程序

实验二拆字、拼字程序

实验二拆字、拼字程序
实验二拆字、拼字程序

班级:2学号:姓名:成绩:

实验二拆字、拼字程序

一实验目的

掌握汇编语言设计和调试方法,熟悉键盘操作。

二实验内容

1.把2000H的内容拆开,高位送2001H低位,低位送2002H低位,2001H、2002H高位清零,一般本程序用于把数据送显示缓冲区时用。

ORG 0660H

SE02: MOV DPTR,#2000H

MOVX A,@DPTR

MOV B,A ;(2000)→A→B

SW AP A ;交换

ANL A,#0FH ;屏敝高位

INC DPTR

MOVX @DPTR,A ;送2001H

INC DPTR

MOV A,B

ANL A,#0FH ;(2000)内容屏敝高位

MOVX @DPTR,A ;送2002H

SJMP $

END

2. 把2000H、2001H的低位分别送入2002H高低位,一般本程序用于把显示缓冲区的数据取出拼装成—个字节

ORG 0680H

SE03: MOV DPTR,#2000H

MOVX A,@DPTR

ANL A,#0FH ;(2000H)内容屏敝高位

SW AP A ;交换

MOV B,A ;保存

INC DPTR

MOVX A,@DPTR ;(2001H)内容送A

ANL A,#0FH ;屏敝高位

ORL A,B ;或

INC DPTR

MOVX @DPTR,A ;送2002H

SJMP $

END

三实验步骤

编译、装载程序,以连续或单步方式运行程序,检查2000~20FFH中执行程序前后的变化。

四思考

1.将2000的高低位分别送入3000H、3001H的高位, 3000H、3001H低位清零;

ORG 0660H

SE02: MOV DPTR,#2000H

MOVX A,@DPTR

MOV B,A ;(2000)→A→B

SW AP A ;交换

ANL A,#0FH ;

MOV DPTR,#3000H

MOVX @DPTR,A ;送3000H

INC DPTR

MOV A,B

ANL A,#0FH

MOVX @DPTR,A ;送3001H

END

2.把片内20H,21H的高位拼在一起送到片内30H单元。

如何修改程序。请把修改之后的程序和运行的结果截图。

ORG 0003H

SE03: MOV A,20H

ANL A,#0F0H

SW AP A

MOV B,A

MOV A ,21H

ANL A,#0F0H

ORL A,B

MOV 30H,A

SJMP $

END

实验二选择结构程序设计实验报告

实验三:C程序的选择结构 一、实验目的和要求 (1)了解 C 语言表示逻辑量的方法(以0 代表“假”,以非0 代表“真”)。 (2)学会正确使用逻辑运算符和逻辑表达式。 (3)熟练掌握if 语句的使用(包括if 语句的嵌套)。 (4)熟练掌握多分支选择语句—switch 语句。 (5)结合程序掌握一些简单的算法。 (6)进一步学习调试程序的方法。 二、、实验软硬件配置 1.硬件配置 电脑 2.软件配置 Windows xp Visual C++6.0 三、实验内容及过程描述 实验步骤: ①进入Visual C++ 6.0 集成环境。 ②输入自己编好的程序。 ③检查一遍已输入的程序是否有错(包括输入时输错的和编程中的错误),如发现有错,及时 改正。 ④进行编译和连接。如果在编译和连接过程中发现错误,频幕上会出现“报错信息”,根据提 示找到出错位置和原因,加以改正。再进行编译,如此反复直到不出错为止。 ⑤运行程序并分析运行结果是否合理。在运行是要注意当输入不同的数据时所得结果是否正 确,应运行多次,分别检查在不同情况下结果是否正确。 实验内容: 本实验要求事先编好解决下面问题的程序,然后上机输入程序并调试运行程序。 x x 1 (1)有一函数:y 2x 1 1 x 10 3x 11 x 10 写程序,输入x 的值,输出y 相应的值。用scanf 函数输入x 的值,求y 的值。程序如下:#include int main() {float x,y; int i; while(i<1000) { printf(" 请输入x 的值:"); scanf("%f",&x); if(x<1) y=x; else if(1<=x&&x<10)

实验一简单程序设计实验

实验一:简单程序设计实验 (1)编写一个 32 位无符号数除法的程序,要求将存放在 NUM1 中的 32 位无符号数与存放 在 NUM2 中的 16 位无符号数相除,结果存放在 NUM3 和 NUM4 中。 程序流程图略。 参考源程序: DATA SEGMENT NUM1 DD 2A8B7654H NUM2 DW 5ABCH NUM3 DW ? NUM4 DW ? DATA ENDS CODE SEGMENT ASSUME DS:DATA, CS:CODE START: MOV AX,DATA ;数据段寄存器初始化 MOV DS,AX MOV AX, WORD PTR NUM1 MOV DX, WORD PTR NUM1+2 DIV NUM2 MOV NUM3,AX MOV NUM4,DX MOV AH,4CH ;正常返回DOS 系统 INT 21H CODE ENDS END START (2)编写一个拆字程序。要求将存放在 ARY 单元的 2 位十六进制数 X 1X 2 拆为 X 1 和 X 2 两 部分,并以 0X 1 和 0X 2 的形式分别存入 ARY+1 和 ARY+2 单元中。 程序流程图略。 参考源程序: DATA SEGMENT ARY DB 2AH,?,? DATA ENDS CODE SEGMENT ASSUME DS:DATA, CS:CODE START: MOV AX,DATA MOV DS,AX MOV SI,OFFSET ARY ;取ARY 的偏移地址 MOV AL,[SI] ;取16进制数至AL

MOV BL,AL AND AL,0F0H ;取16进制数的高四位,即X1 SHR AL,4 MOV [SI+1],AL ;存0X1 MOV AL,BL AND AL,0FH ;取16进制数的低四位,即X2 MOV [SI+2],AL ;存0X2 MOV AH,4CH INT 21H CODE ENDS END START

计算机基础与综合编程实验报告word文档

《计算机基础与综合编程实验》报告 学院计算机科学与技术学院 专业计算机类 班级 姓名 指导教师 日期

1 实验目的 通过迭代式开发,深入掌握C语言的文件、链表、结构体、动态内存管理等技术,开发实现一个计费管理软件。 2 系统功能与描述 1.添加卡与查询卡的操作 (1)添加卡信息。 ①介绍 添加卡信息时,将添加的卡信息保存到工程目录下的card.ams文件。 ②输入 a、输入菜单项编号1实现“添加卡” b、添加卡信息时输入的卡信息 c、保存卡信息的文件路径 ③处理 a、获取保存卡信息的文件路径。 b、获取添加的卡信息。卡信息包括:卡号、密码、开卡金额、卡状态、开卡时间、截止时间、最后使用时间、使用次数、累积金额。 c、将每个卡信息组装成一条字符串,一张卡的每个信息间用“##”分隔。 d、将保存的卡信息的字符串写到工程目录下的card.ams文件末尾。 ④输出 a、保存成功,则显示添加的卡信息。 b、保存失败,则提示添加卡信息失败。 (2)查询卡信息:

①介绍 从工程目录下的card.ams文件中,读取并解析卡信息,将卡信息显示到界面中。 ②输入 a、输入菜单项编号2实现“查询卡” b、card.ams文件中的卡信息 ③处理 a、获取保存卡信息的文件路径。 b、逐行读取该文件中的卡信息并解析。 c、将将解析结果保存到内存中,在界面上显示读取出来的卡信息。 ④输出 a、读取失败,提示没有该卡的信息。 b、读取成功,则在界面输出卡号,状态,余额,累计使用,使用次数,上次使用时间,一共六个信息。 2.上机: ①介绍 根据用户输入的卡号和密码,判断该卡能否进行上机。更新可以上机卡的状态。 ②输入 a、输入菜单项编号3,实现“上机功能” b、输入卡号和密码 c、链表和文件中添加过的卡信息 ③处理 a、执行上机操作时,从卡信息文件中获取卡信息,添加到链表中。 b、以卡号和密码为条件,遍历链表中的卡信息,找到与输入条件相符的卡信息。 c、如果找到,以列表方式显示该卡的上机信息,并更新卡信息。如果未找到,就提示用户。 ④输出

《计算机硬件技术基础》实验答案程序

实验一:简单程序设计实验 (1)编写一个 32 位无符号数除法的程序,要求将存放在 NUM1 中的 32 位无符号数与存放在 NUM2 中的 16 位无符号数相除,结果存放在 NUM3 和NUM4 中。 程序流程图略。参考源程序: DATA SEGMENT NUM1 DD 2A8B7654H NUM2 DW 5ABCH NUM3 DW ? NUM4 DW ? DATA ENDS CODE SEGMENT ASSUME DS:DATA, CS:CODE START: MOV AX, DATA ;数据段寄存器初始化 MOV DS, AX MOV AX, WORD PTR NUM1 MOV DX, WORD PTR NUM1+2 DIV NUM2 MOV NUM3, AX MOV NUM4, DX MOV AH, 4CH ;正常返回DOS系统 INT 21H CODE ENDS END START (2)编写一个拆字程序。要求将存放在 ARY 单元的 2 位十六进制数 X1X2 拆为 X1 和X2 两部分,并以 0X1 和 0X2 的形式分别存入 ARY+1 和 ARY+2 单元中。 程序流程图略。参考源程序: DATA SEGMENT ARY DB 2AH, ?, ? DATA ENDS CODE SEGMENT ASSUME DS:DATA,CS:CODE START: MOV AX,DATA MOV DS,AX MOV SI,OFFSET ARY ;取ARY的偏移地址 MOV AL,[SI] ;取16进制数至AL

AND AL,0F0H ;取16进制数的高四位,即X1 SHR AL,4 MOV [SI+1],AL ;存0X1 MOV AL,BL AND AL,0FH ;取16进制数的低四位,即X2 MOV [SI+2],AL ;存0X2 MOV AH, 4CH INT 21H CODE ENDS END START

计算机组成实验报告汇总

计算机组成与体系结构 实验报告

实验项目一 一、实验目的 通过了解高级语言源程序和目标机器代码的不同表示及其相互转换,深刻理解高级语言和机器语言之间的关系,以及机器语言和不同体系结构之间的关系。 二、实验要求: 在VC6.0中创建下列源程序 #include void main() { inti=100; int j=-1; int k; k=i+j; printf("%d",k); } 然后对该程序进行编译、链接,最终生成可执行目标代码。 三、实验报告 1.给出做实验的过程. 关键代码如下:

2.给出源程序(文本文件)的内容(用十六进制形式表示)。 3.给出可执行目标文件(二进制文件)的内容(用十六进制形式表示)。

4.VC6.0调试环境:设置断点、单步运行、变量的值(十进制、十六进制)、变量的地址、变量的存储。 断点设置如下:

变量的值十进制: 变量的值十六进制: 变量的地址:

5.VC 6.0反汇编:查看源程序对应的汇编程序、可执行目标程序的二进制编码、了解如何给变量分配内存、系统函数程序段的调用。 6.分析或回答下列问题。 (1)分析同一个源程序在不同机器上生成的可执行目标代码是否相同。 不相同。因为不同的机器硬件的组成不同,因此同一个源程序在不同的机器上生成的目标文件不同。 (2)你能在可执行目标文件中找出函数printf()对应的机器代码段吗?能的话,请标示出来。 不能。因为源程序中的printf函数在可执行文件中已转换为机器语言。被翻译的机器语言中有printf函数,但是不知道是从哪一段开始翻译的。 (3)为什么源程序文件的内容和可执行目标文件的内容完全不

综合实验实验报告

综合实验实验报告 : 厦门大学计算机科学系级四班 一.问题描述: 算法的综合应用 问题描述: 有台不同的机器,个不同的工件。每个工件有多道工序,每道工序由指定的机器在固定的时间内完成。一道工序一旦开始处理,就不能中断。每台机器一次只能处理一道工序。一个调度就是决定每台机器上工序的处理顺序,使得机器完成所有工件的时间最短。具体的,该问题就是要求在满足()、()两个约束条件的前提下,确定每台机器上工序的顺序,使加工的时间跨度(从开始加工到全部工件都加工完所需要的时间)达到最小。其中,()表示工件约束条件:对每个工件而言,机器对它的加工路线是事先确定的;()表示机器约束条件:对每台机器而言,一次只能对一道工序进行加工。 要求: 利用所学的算法求解该问题,任给一个输入实例,能输出最短时间以及每台机器上工序的加工顺序。 能设计出一个用户界面。 二.算法思路: 原先考虑过用回溯法进行解体,解空间树是所有工件的所有工序的一棵排列树,但这样如果没有好的剪枝函数是不可能实现的,因为这样实现的话时间复杂度将是(^),其中为机器数,为工件数,题目能用的剪枝函数的设计是每个工件的加工次序是有要求的,个人预测需要用到线性规划的内容,最后没有如此实现。 本程序使用贪心算法实现,程序所有的工件所有的工序保存在一个二维数组中,并且维护一个指针,该指针每次走动一个工序时间,这样的一次走动将产生个工序需要加工,其中为工件数目,将这个工件放到相应的个机器上,在个机器按照加工时间递增排序,之所以选择递增排序,是想让每个工序尽可能快的通过他所需要的机器,即可以让该机器上的工序可以更快的加工,也可以让他之后的工序可能更快的在其他机器上进行加工,当然这样的设计只是直观上的说明,并不能得到最优解。 程序中维护的数据结构如下图所示,共有两个,一个用来保存所有工件的所有工序,另一个用来表示机器加工工序。 在图一中共有六个工件~以及每个工件有个工序,图上方的箭头表示移动的指针,每个移动一个工序,由于图一中的数组元素结构体设计如下: { 机器节点定义 ; 当前的加工的最后时间 *; 维护一个工件链表 }; 因此对于每个可以加工的工序,可以直接链入图二中的链表中不需要另外申请空间。

几个概念的拆字释义发展与协调

公司诉讼 理由 是什么? 几个概念的拆字释义 卜安淳 一、道 从字形结构看,道是首+之(辵),首是人之头,可代指人,或指人群之首领;之(辵)指行路。(《说文》:“辵,乍行乍止也。从彳从止。”)因此,道应该是指的是人行之路,人行于路,或人之首领带领人们行于路。最后一义的“道”后来写成“導”(导),意为引导。道的本义是地上人行之路(《说文》:“道,所行道也。”),后引申为人的事业之路、人生之路之类,再抽象引申,则指天地运行之路,即天地之道,甚至被用于超于天地的自然规律,即自然之道。 《汉书·董仲舒传》中说:“道者,所由适于治之路也。”这是指道是治理天下(社会)的途径。《广韵》中解释“道”:“理也,众妙皆道也,合三才万物共由者也。”这是说道是宇宙万物的合适的道理。《周易·系辞》中说:“一隂一阳之谓道。”“立天之道,曰隂与阳。立地之道,曰柔与刚。立人之道,曰仁与义。”由此,关于道的论说越来越丰富,越来越抽象,所以《书·书大禹谟》中说“道心惟微”。 老子把“道”说得特别奇妙虚玄,上升到天地之母的地位,是宇宙间至高无上的根本原则。《道德经》第二十五章:“有物混成,先天地生。寂兮寥兮,独立不改,周行而不殆,可以为天下母。吾不知其名,字之曰道,吾强为之名曰大。大曰逝,逝曰远,远曰反。故道大天大地大王亦大。域中有四大,而王居其一焉。人法地,地法天,天法道,道法自然。”道法自然,应该是指道的法则没有源头,自然生成。 二、理

理字是玉+里。里之本义是居。(《说文》:“里,居也。从田从土。”)居而弄玉,应该指雕琢玉器,所以《說文》解释说:“理,治玉也。”玉石多纹理,治玉讲究辨其形状纹理,因其势而赋形成器,所以,治玉之理引申为事物之理。《说文》徐注说:“物之脈理,惟玉最密,故从玉。”这是解释“理”字表述物理、道理之成因。又说:“治玉治民皆曰理。”这是介绍“理”字引申扩充后的字义。 从古至今,理是指事物发展的规律、条理还是抽象的观念、精神?学界始终争论不休。《管子·心术》说:“理也者,明分以谕义之意也”。孟子认为理就是人心所具有的道德。《庄子》有所谓“天理”、“万物之理”,应该是指自然之理和事物变化之理。其《善性篇》把理和道联系起来:“道,理也”。荀子则提出了“事理”、“物理”等概念,强调用天地之理治理天地万物。韩非子强调不同事物具有不同规律,“万物各异理”,方圆、短长、粗细、坚脆、大小、轻重、白黑之类就是物之理。《吕氏春秋》则认为“理也者,是非之宗也”,把理视作判断是非的根据。董仲舒讲理由天授,称为“天理”。王充则针锋相对,讲“物气之理”,认为天人感应论是“失道理之实”。魏晋时期的人有“辨名析理”癖好。王弼说:“事有归,理有会”,“不能辨名则不可与言理”。欧阳建认为,“名逐物而迁,言因理而变”。宋代人专门探讨理的问题,形成程朱理学,哲学研究一时蔚为大观。 讨论理,我们还应该涉及伦理。理作为事理,一方面是自然事物的事理,另一方面是社会事物的事理。这社会事物的事理之中,很重要的内容就是伦理。且道德伦理往往连在一起,甚至伦理就成了道德,所以,道德之学成了伦理之学。但实际上,伦理和道德应该是有区别的。伦理应该是人伦之理,是关于人与人区别和联系的事理。 三、德 “德”字可去掉“彳”,写成“悳”。悳,直+心,直心也,心直也。心直即是德。彳是行的左半,行之右半为亍。《康熙字典》引《唐韻》、《集韻》?说:“小步也。左步爲彳,右步爲亍,合之則爲行字。”心直+彳,是指直心行路,引申为直心做人,直心做事,社会人生之中秉持直心。(呵呵,德字彳旁,

计算机系统结构实验报告

计算机系统结构实验报告 一.流水线中的相关 实验目的: 1. 熟练掌握WinDLX模拟器的操作和使用,熟悉DLX指令集结构及其特点; 2. 加深对计算机流水线基本概念的理解; 3. 进一步了解DLX基本流水线各段的功能以及基本操作; 4. 加深对数据相关、结构相关的理解,了解这两类相关对CPU性能的影响; 5. 了解解决数据相关的方法,掌握如何使用定向技术来减少数据相关带来的暂停。 实验平台: WinDLX模拟器 实验内容和步骤: 1.用WinDLX模拟器执行下列三个程序: 求阶乘程序fact.s 求最大公倍数程序gcm.s 求素数程序prim.s 分别以步进、连续、设置断点的方式运行程序,观察程序在流水线中的执行情况,观察 CPU中寄存器和存储器的内容。熟练掌握WinDLX的操作和使用。 2. 用WinDLX运行程序structure_d.s,通过模拟找出存在资源相关的指令对以及导致资源相 关的部件;记录由资源相关引起的暂停时钟周期数,计算暂停时钟周期数占总执行周期数的 百分比;论述资源相关对CPU性能的影响,讨论解决资源相关的方法。 3. 在不采用定向技术的情况下(去掉Configuration菜单中Enable Forwarding选项前的勾选符),用WinDLX运行程序data_d.s。记录数据相关引起的暂停时钟周期数以及程序执行的 总时钟周期数,计算暂停时钟周期数占总执行周期数的百分比。 在采用定向技术的情况下(勾选Enable Forwarding),用WinDLX再次运行程序data_d.s。重复上述3中的工作,并计算采用定向技术后性能提高的倍数。 1. 求阶乘程序 用WinDLX模拟器执行求阶乘程序fact.s。这个程序说明浮点指令的使用。该程序从标准 输入读入一个整数,求其阶乘,然后将结果输出。 该程序中调用了input.s中的输入子程序,这个子程序用于读入正整数。 实验结果: 在载入fact.s和input.s之后,不设置任何断点运行。 a.不采用重新定向技术,我们得到的结果

数学实验综合实验报告

一、实验目的: 1、初步认识迭代,体会迭代思想的重要性。 2、通过在mathematica 环境下编写程序,利用迭代的方法求解方程的根、线性方程组的解、非线性方程组的解。 3、了解分形的的基本特性及利用mathematica 编程生成分形图形的基本方法, 在欣赏由mathematica 生成的美丽的分形图案的同时对分形几何这门学科有一个直观的了解。从哲理的高度理解这门学科诞生的必然性,激发读者探寻科学真理的兴趣。 4、从一个简单的二次函数的迭代出发,利用mathematica 认识混沌现象及其所 蕴涵的规律。 5、.进一步熟悉Mathematic 软件的使用,复习总结Mathem atic 在数学作图中的应用,为便于研究数学图像问题提供方便,使我们从一个新的视角去理解数学问题以及问题的实际意义。 6、在学习和运用迭代法求解过程中,体会各种迭代方法在解决问题的收敛速度上的异同点。 二、实验的环境: 学校机房,mathematica4环境 三、实验的基本理论和方法: 1、迭代(一)—方程求解 函数的迭代法思想: 给定实数域上光滑的实值函数)(x f 以及初值0x 定义数列 1()n n x f x +=,Λ,3,2,1,0=n , (1) n x ,Λ,3,2,1,0=n ,称为)(x f 的一个迭代序列。 (1)方程求根 给定迭代函数)(x f 以及初值0x 利用(1)迭代得到数列n x ,Λ,3,2,1,0=n .如果数列收敛到某个*x ,则有 )(**x f x =. (2)

即*x 是方程)(x f x =的解。由此启发我们用如下的方法求方程0)(=x g 的近似解。 将方程0)(=x g 改写为等价的方程 )(x f x =, (3) 然后选取一初值利用(1)做迭代。迭代数列n x 收敛的极限就是方程0)(=x g 的解。 为了使得迭代序列收敛并尽快收敛到方程0)(=x g 的某一解的条件是迭代函数)(x f 在解的附近的导数将的绝对值尽量小,因此迭代方程修订成 x x f x h x )1()()(λλ-+== (4) 选取λ使得|)(|x h '在解的附近尽量小. 为此, 我们可以令 ,01)()(=-+'='λλx f x h 得 ) (11 x f '-= λ. 于是 1 )()()(-'-- =x f x x f x x h . 特别地,如果取x x g x f +=)()(, 则可得到迭代公式 .,1,0,) () (1Λ='- =+n x g x g x x n n n n (5) (2)线性方程组的数值解的迭代求解理论与矩阵理论 给定一个n 元线性方程组 ??? ??=++=++, ,1 111111n n nn n n n b x a x a b x a x a ΛΛΛΛΛΛΛΛΛΛΛ (6) 或写成矩阵的形式

《程序技术基础》实验报告

《程序技术基础》课程实验指导课程代码:070050 开课学期:4 开课专业:信管类 总学时/实验学时:64/32 总学分/实验学分:4/2 一、课程简介 数据结构是计算机各专业的重要技术基础课。在计算机科学中,数据结构不仅是一般程序设计的基础,而且是编译原理、操作系统、数据库系统及其它系统程序和大型应用程序开发的重要基础。数据结构课程主要讨论各种主要数据结构的特点、计算机内的表示方法、处理数据的算法以及对算法性能的分析。通过对本课程的系统学习使学生掌握各种数据结构的特点、存储表示、运算的原理和方法,学会从问题入手,分析研究计算机加工的数据结构的特性,以便为应用所涉及的数据选择适当的逻辑结构、存储机构及其相应的操作算法,并初步掌握时间和空间分析技术。另一方面,本课程的学习过程也是进行复杂程序设计的训练过程,通过对本课程算法设计和上机实践的训练,还应培养学生的数据抽象能力和程序设计的能力。 二、实验的地位、作用和目的 数据结构是一门实践性较强的基础课程,本课程实验主要是着眼于原理和应用的结合,通过实验,一方面能使学生学会把书上学到的知识用于解决实际问题,加强培养学生如何根据计算机所处理对象的特点来组织数据存储和编写性能好的操作算法的能力,为以后相关课程的学习和大型软件的开发打下扎实的基础。另一方面使书上的知识变活,起到深化理解和灵活掌握教学内容的目的。

三、报告与考核 每个实验都要求学生根据上机内容写出实验报告,报告要求包括以下七个方面的内容: 1.实验目的; 2.实验内容; 3.实验要求; 4.算法设计; 5.详细程序清单; 6.程序运行结果; 7.实验心得体会。

顺序程序设计:拆字和拼字

微处理器原理课实验日志 一、实验题目:顺序程序设计:拆字和拼字 二、实验结果 本次实验目的是为了掌握顺序程序的编写方法,掌握拆字和拼字的方法,学会编写和调试程序的过程和方法以及掌握C51编写方法。 实验一、实现拆字功能,阅读理解程序并完成程序的填空。最后运行程序,验证是否正确。程序如下: ORG 0000H AJMP START ORG 0100H START: MOV DPTR,#0200H ;指定的字节 MOVX A,@DPTR MOV B,A;数据暂存 SW AP A(1);A中数据高位和低位交换 ANL A,#0FH ;屏敝高位 INC DPTR MOVX @DPTR,A INC DPTR MOV A,B ANL A,#0FH (2) MOVX @DPTR,A LOOP: SJMP LOOP END 运行程序,然后对X:0200H赋值,点击分步运行,就能观察到0201H、0202H值的变化。结果如下:

实验二、学习用C语言编写拆字程序,理解XBYTE,DBYTE等语句的含义。程序如下: #include"reg51.h" #include"absacc.h" void main() { XBYTE[0x0200]=0x69; XBYTE[0x0201]=XBYTE[0x0200]; XBYTE[0x0201]>>=4; ; 将0201H中的数右移4位 XBYTE[0x0202]=XBYTE[0x0200]; XBYTE[0x0202]&=0x0f; } 运行结果如下: 实验三,拼写程序,题目为:分别编写汇编语言程序和C程序,把片内RAM30H 、31H两个字节的低位分别送入32H的高位和低位,

实验四循环结构大全语言程序设计实验报告

循环结构汇编语言程序设 计实验报告 实验四循环结构汇编语言程序设计 一、实验目的 1、学习循环结构的汇编语言程序的设计和调试。 2、学习通过直接对8086计算机的寄存器和内存的直接访问,编写更高效简洁的汇编程序。 3、加深掌握计算机整体的工作过程。 3、加深对排序算法的理解。 二、实验任务 编写程序求出数组A中(20个元素)的最大值和最小值(数组没有排序)。 要求至少采用二种不同的排序算法来实现。( 快速排序,归并排序、堆排序、Shell排序、插入排序、冒泡排序、交换排序、选择排序、基数排序……) 三、实验内容 为了更好地实现老师所布置的实验任务,我们根据情况选取以下两种方式实验。 1、利用冒泡排序的方式求解数组A中元素的最大值最小值。设计流程图如下所示: 2、利用选择排序的方式求得数组A中元素的序列。设计流程图如下所示: 四、实验环境 PC机: winXP/win7(32位)/win7(64位)+winxp 虚拟机 汇编工具:+。 五、实验步骤 1)建立和生成的文件 (1)编写的源程序,源程序名为abc、扩展名为.asm (2)源程序经汇编程序汇编(翻译)后生成二进制目标程序,文件名为 (3)目标程序需要经连接生成可执行程序,文件名为 2)汇编环境

最基本的汇编环境只需要两个文件:和。将这两个文件拷入到已经建好的文件夹(例如huibian)中,并将文件夹huibian放在硬盘根目录C :\>下 3)上机步骤 进入DOS窗口中执行。 4)调试程序 进入DEBUG后,调试程序 5)调试成功后重新汇编、连接并生成可执行代码 6)执行程序,并对运行结果截图。 利用冒泡排序求得数组A中元素的最大值最小值的实验结果如下图所示:(说明:输入 数据为:13,0,59,900,587,1,657,234,34,48) 利用选择排序对数组A中元素排序得到的序列得实验结果如下图所示:(说明:输入数 据为13,0,59,900,587,1,657,234,34,48) 六、实验心得 通过本次循环结构汇编语言程序设计的实验,我初步了解了汇编语言的基本语法,利用汇编语言的循环结构实现了对于数组A中元素的排序以及求得元素中的最大值最小值。另外,在实验过程中,我也了解到了,我们要时刻细心严谨,认真做好每一步,避免出现低级错误。 七、汇编语言代码 1、利用冒泡排序实现求最大值最小值的代码 data segment mes1 db 'the max:$' mes2 db 'the min:$' a dw 13,0,59,900,587,1,657,234,34,48 data ends code segment main proc far assume cs:code,ds:data start: push ds sub ax,ax push ax mov ax,data mov ds,ax ;以下是起泡排序核心代码 mov cx,10 dec cx loop1: mov di,cx mov bx,0

程序设计综合实验报告册

西南交通大学程序设计综合实验 实验地点: 实验学期: 学生班级: 学生学号: 学生姓名: 任课教师:龚勋 信息科学与技术学院 2012年4月

实验一:ATM机用户操作界面、业务逻辑编写 ●实验目的及内容 1、根据ATM的工作流程编写用户界面,掌握文本用户菜单的编写方法; 2、根据ATM的工作流程编写业务罗杰,掌握搭建一个完整的应用系统的方法及软件编程思想。 ●实验要求 1、除提示用户输入的数字外,界面上不能响应、出现任何其他用户输入; 2、每个菜单界面独立显示,不要出现多组菜单重叠显示的现象; 3、每个业务逻辑可以多次执行,直到用户选择退出业务。 ●实验步骤及核心代码 void main() { int bExit=0; char in; //控制语言的选择 while(!bExit) { MainMenu(); in=getch(); system("cls"); switch(in) { .....语言选择} } } void MainMenu() {......} void LanguageMenu(int t) {

int cExit=0; char in; while(!cExit) { if(t==1) { ...... //显示中文功能选择菜单 in=getch(); system("cls"); switch(in) { 中文功能函数的选择} } else { 同上,只需将中文函数改为英文函数} } } //中文的查询函数 void Query1() { printf("======================\n") printf(“此账户有%.2f元\n",sum); //对sum已初始化system("pause"); system("cls"); } //中文的存钱函数 void Deposit1(float *p) { float x; printf("================================\n"); printf(" 输入您要存的数目:"); scanf("%f",&x); *p+=x; system("pause"); system("cls"); } //中文的取钱函数 void WithDraw1(float *p) { float y; int a=1; printf("====================================\n"); printf("输入您要取的数目: "); while(a) { scanf("%f",&y); if(y>sum)

c语言程序设计实验报告1--顺序结构

福建农林大学金山学院实验报告 系(教研室):专业:年级: 实验课程: C语言程序设计姓名:学号:实验室号:_ 计算机号:实验时间:指导教师签字:成绩: 实验1:顺序结构程序设计 一、实验目的和要求 1.了解Visual C++ DEV_C++的基本操作方法 2.掌握C程序设计的基本步骤:编辑、编译、连接和运行 3.掌握各种类型数据的输入输出方法 4.能够编写一个简单的程序 二、实验内容和原理 1. 输入并运行一个简单、正确的程序。 # include <> int main( ) { printf ("This is a c program!\n"); return 0; } 2. 要使下面程序的输出语句在屏幕上显示:A,B,34,则从键盘输入的数据格式应为AB34__________ 。 #include<> int main() { char a, b; int c;

scanf("%c%c%d",&a,&b,&c); printf("%c,%c,%d\n",a,b,c); return0; 问题1:要使上面程序的键盘输入数据格式为a=A,b=B,34,输出语句在屏幕上显示的结果也为A,B,34,则应修改程序中的哪条语句怎样修改 scanf( “a=%c,b=%c,%d”,&a,&b,&c ); 问题 2:要使上面程序的键盘输入数据格式为A,B,34,而输出语句在屏幕上显示的结果为“A”,“B”,34,则应修改程序中的哪两条语句怎样修改 scanf( “%c,%c,%d”,&a,&b,&c); printf(“\”%c\”,\”%c\”,%d\n”,a,b,c); 3、编程求一个圆的周长和面积。用scanf输入圆半径,输出保留两位小数。 4、输入一个华氏温度F,要求输出摄氏温度C。公式为 c=5/9(F-32),取两位小数。 5、编程序,用getchar函数读入两个字符给c1、c2,然后分别用putchar函数和printf 函数输出这两个字符。 6. 计算定期存款本利之和。 设银行定期存款的年利率rate为%,并已知存款期为n年,存款本金为capital元,试编程计算n年后的本利之和deposit。要求定期存款的年利率rate、存款期n和存款本金capital 均由键盘输入。(提示:pow为幂函数:pow(2,3)表示23)。 #include <> #include <> int main() { } 三、实验环境

实验九 综合程序设计实验报告

实验九综合程序设计实验报告 通信0704 070900813 韩一帆 一.实验目的: 1、掌握分支、循环、子程序调用、DOS功能调用等基本的程序结构。 2、掌握综合程序的编制及调试方法。 二.实验内容: 设有十个学生成绩分别是76,69,84,90,73,88,99,63,100和80分。试编制一个子程序,统计低于60分,60~69分,70~79分,80~89分,90~99分和100分的人数,并输出显示统计结果。 程序代码: DA TA SEGMENT SCORE DB 76,69,84,90,73,88,99,63,100,80 COUNT DW 10 NUMBER1 DW 0 NUMBER2 DW 0 NUMBER3 DW 0 NUMBER4 DW 0 NUMBER5 DW 0 NUMBER6 DW 0 STRING1 DB 'BAD:$' STRING2 DB 'LOW:$' STRING3 DB 'OK:$' STRING4 DB 'HIGH:$' STRING5 DB 'GOOD:$' STRING6 DB 'PERFECT:$' RESULT DB 10 DUP(?) DA TA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DA TA MAIN:PUSH DS XOR AX,AX MOV AX,DATA MOV DS,AX LEA SI,SCORE MOV CX,COUNT C:CMP BYTE PTR[SI],60 JL BAD CMP BYTE PTR[SI],70 JL LOW CMP BYTE PTR[SI],80 JL OK CMP BYTE PTR[SI],90 JL HIGH CMP BYTE PTR[SI],100

拆字程序,拼字程序

单片机实验报告 实验项目名称:拆字程序,拼字程序 姓名:学号: 一、实验目的 1、掌握基本的51汇编程序书写,编译; 2、熟悉51指令的运用; 3、掌握内RAM,外RAM区域数据操作。 二、实验内容及要求 将20H单元的二进制代码转化为ASCLL码,保存在21H,22H单元中;将7030H,7031H中的二进制代码压缩后存放于7032H中。 三、实验步骤

(a )二进制代码转化为ASCLL 码 (b) 二进制代码压缩 四、主要代码 (1)二进制代码转化为ASCLL 码 ORG 0000H SJMP MAIN ORG 0030H MAIN: MOV A,20H ANL A,#0FH CJNE A,#10,NEXT1 NEXT1: JNC NEXT2 ADD A,#30H

SJMP DONE1 NEXT2: ADD A,#37H DONE1: MOV 22H,A MOV A,20H ANL A,#0F0H SWAP A CJNE A,#10,NEXT3 NEXT3: JNC NEXT4 ADD A,#30H SJMP DONE2 NEXT4: ADD A,#37H DONE2: MOV 21H,A SJMP $ (2) 二进制代码压缩 ORG 0100H MAIN: MOV DPTR,#7030H MOVX A,@DPTR ANL A,#0FH SWAP A MOV B,A INC DPTR MOVX A,@DPTR ANL A,#0FH ORL A,B INC DPTR MOVX @DPTR,A SJMP $ END 五、实验结果分析及思考 1.二进制代码转化为ASCLL码仿真结果:

微处理器实验报告顺序程序设计:拆字和拼字

微处理器原理与应用实验日志 实验题目: 顺序程序设计:拆字和拼字 实验目的: 1、掌握顺序程序编写方法 2、掌握拆字和拼字方法 3、学会编写和调试程序的过程和方法 4、掌握C51编程方法。 实验要求: 1、阅读、运行并调试已给的程序; 2、模仿已给程序分别汇编程序和C程序完成拼字程序; 实验主要步骤: 1、启动计算机,进入Keil C51的集成开发环境; 2、根据已给程序分别编辑汇编程序和C程序; 3、编辑完成以后对程序进行编译,生成目标代码; 4、运行、调试目标代码和进行结果检查; 5、根据要求分别编写汇编程序和C程序; 6、编译,生成目标代码,分别采用单步和宏单步运行程序,观察有关单元中的内容的变化; 7、修改内存单元中的内容在观察存储单元内容的变化; 实验结果: 汇编程序: ORG 0000H AJMP START ORG 0100H START: MOV A,30H ANL A,#0FH SW AP A MOV 32H,A MOV A,31H ANL A,#0FH ORL 32H,A SJMP $ END

#include"reg51.h" #include"absacc.h" void main() { DBYTE[0x30]=0x12; DBYTE[0x31]=0x34; DBYTE[0x30]<<=4; //20 DBYTE[0x31]&=0x0f; //04 DBYTE[0x32]=DBYTE[0x30]|DBYTE[0x31]; } 心得体会: 在本次实验中,发现输入数据有两种方法,一种是在程序中直接赋值,另一种是直接双击0x0200这个单元,就可以对它赋值,最后运行结果一样,但后一种明显改动数据方便,这让我意识到了优化程序的重要性。在第三个实验中,对用C语言编写的程序,不知道或语句怎么写,在请教老师之后得以解决,但是,在编译程序时没有问题,运行程序出现了错误。一直没有找到问题,在最后重新建立工程,文件等必要步骤之后,就完成了程序的运行。

选择结构程序设计-C语言程序实验报告

安徽工程大学 高级语言程序设计实验报告 班级姓名同组者/ 成绩 日期2019.10.10 指导教师 实验名称选择结构程序设计 一、实验目的 1.学会正确使用关系运算符和关系表达式。 2.学会正确使用逻辑运算符、逻辑表达式以及关系表达式等。 3.熟悉掌握if语句和switch语句的用法。 4.熟悉选择结构程序中的语句执行过程,掌握选择结构程序设计的方法。 二、实验内容 1.编写程序,判断从键盘上输入的一个字符类型,并按下列要求输出。 (1)若该字符是数字,输出字符串“0~9”。 (2)若该字符是大写或者小写字母,输出字符串“A~z”。 (3)若该字符是其他字母,输出“!,@,……”。 完善P56页第一个源程序,对源程序进行编译、连接并运行,完成调试报告。 2.编程并上机调试。 (1)给出一个不多于4位的正整数,求它是几位数。 (2)给出一个百分制成绩,要求输出成绩等级'A'、'B'、'C'、'D'、'E'。 90分以上为'A',80~90分为'B'70~79分为'C',60~69分为'D',60分 以下为'E'。用switch语句来实现。 (3)输入4个整数,要求按从小到大的顺序输出。 (4)输入3个整数,将最大数与最小数输出。 (5)输入一个字符,如果是数字字符,把它转换成相应的数字输出;如果不是,则以十进制整数形式输出其ASCⅠⅠ码值。 *思考题

3.若在实验内容1的程序第8行的语句else if (_)后多输入了一个分号,即“else if (_);”,分析程序,写出预期结果,然后输入调试,查看运行结果与预期结果是否一致并分析原因。 4.若在实验内容1的程序第8行的语句else if(_)法人括号内输入c>='A' &&c<='z'后,判断在调试时是否能得到正确结果,并分析原因。 三、算法流程图或实验步骤(可根据需要增删、修改) 1.(1)算法流程图 #include void main( ) { char c; scanf("%c",&c); if(c>='0'&&c<='9') printf("0~9\n"); else if((c>='a'&&c<='z')||(c>='A'&&c<='Z')) printf("A~z\n"); else printf("!,@,……\n"); } (2)实验步骤 Files→New→Files→C++source File→文件名:program3011.c→位置:E:\123\→确定→完善源程序→Buid→是→确认0error(s) 0warning(s)后→BuidExecute→查看运行结果 2.(1)算法流程图: #include void main ( ) { int a,b;

单片机实验一 拆字程序

实验一拆字程序 1 实验名称拆字程序 2 实验目的 掌握汇编语言测试和调试方法。 3 实验内容 把7000H的内容拆开,高位送7001H的低位,低位送7002H的低位,7001H、7002H高位清零,本程序应用于把数据送显示缓冲区。 4 硬件连线 5 实验步骤 (1)PC机 开始菜单程序51JH实验系统DVCC实验系统,进入实验界面。 选中本次实验名称,查看实验目的、内容、硬件连线、步骤。 输入源程序,编译、联接、运行实验程序。 (2)DVCC实验系统 ①先用存储器读写方法将7000H单元内容置成34H。 按复位键,显示P.,输入7000H,按MEM键,输入34。 ②用单步、断点或连续执行程序的方法从其始地址0050H开始运行程序(输入0050后按 STEP为单步,按EXEC为连续)。 按RESET后,显示P.,输入0050,按EXEC ③按MON键或RESET键退出。 ④检查7001H、7002H单元中的内容应为03H、04H。 输入7000H,按MEM键,显示03,按NEXT显示04。 6 实验程序 ORG 0050H CWORD: MOV DPTR,#7000H MOVX A,@DPTR MOV B,A SW AP A ANL A,#0FH INC DPTR MOVX @DPTR,A INC DPTR MOV A,B ANL A,#0FH

MOVX @DPTR,A CWORD1: SJMP CWORD1 END 7 实验拓扑 修改源程序,实现将把3000H的内容拆开,高位送3001H的低位,低位送3002H的低位,7001H、7002H高位清零。用存储器读写方法将3000H单元内容置成76H。 8 实验结果分析 向存储器7000H单元写入34H,执行程序,检查拆字后7001H、7002H单元中的内容为03H、04H。 向存储器3000H单元写入76H,执行程序,检查拆字后7001H、7002H单元中的内容为07H、06H。

实验二 拆字程序、拼字程序设计

实验二:拆字程序、拼字程序设计 院(系):电子工程学院课程名称:单片机原理及应用日期: 4.2.1 实验目的 1. 掌握汇编语言指令的使用规范。 2. 掌握汇编语言程序设计方法。 3. 掌握MCS-51单片机的存储器结构。 4. 掌握单片机中数据存储形式。 4.2.2 实验预习 1.熟悉Keil集成编译环境的使用方法。 2. 复习单片机指令系统。 3. 复习利用Keil集成编译环境查看单片机存储器状态的方法。 4.2.3 实验原理 计算机中数据都是以字节为单位存储的二进制数,完成本实验需熟练掌握二进制的数据结构和原码,补码等数据编码方法以及单片机各指令对数据的影响。 4.2.4 预作实验任务 1. 简介用Keil集成编译环境编辑、编译、调试程序的过程。

2. 简介用Keil调试程序时查看内部数据存储器和内部程序存储器状态的方法。 3. 输入并编译以下程序,在Keil中运行 ORG 0000H AJMP MAIN ORG 0100H MAIN: MOV R0,#30H MOV 30H,#78H MOV 31H,#0AFH MOV A,@R0 INC R0 XCHD A,@R0 SJMP $ 运行结果为: A = , R0 = , (30H) = , (31H) = , 4. 输入并编译以下程序,在Keil中运行,记录运行结果。 ORG 0000H AJMP MAIN ORG 0100H MAIN: MOV A,#79H ANL A,#0FH ;A= ORL A,#0A3H ;A= XRL A,#0F0H ;A= CPL A ;A= SWAP A ;A= CLR A ;A= SJMP $ 5. 补全程序以完成程序功能。 程序功能:读取外部数据存储器2000H单元内容,并将其高四位送至P1端

相关文档
相关文档 最新文档