实验1 汇编程序设计
- 格式:docx
- 大小:47.45 KB
- 文档页数:10
实验一基础汇编语言程序设计
一、实验目的
1、学习和了解TEC-XP教学实验系统监控命令的用法;
2、学习和了解TEC-XP教学实验系统的指令系统;
3、学习简单的TEC-XP教学实验系统汇编程序设计;
二、实验内容
1、学习练级使用TEC-XP教学实验系统和仿真终端软件PCEC。
2、使用监控程序R命令显示/修改寄存器内容、D命令显示存储器内容、E命令修改存储器内容;
3、使用A命令写一小段汇编程序,U命令反汇编刚输入的程序,用G命令连续运行改程序,用T、P命令单步运行并观察程序单步执行情况;
三、实验步骤
1、用R命令查看寄存器内容或修改寄存器的内容
2、用D命令显示存储器内容
3、用E命令修改存储器内容
4、用D命令显示着几个单元的内容
5、用A命令键入一段汇编源程序,主要是向累加器送入数据和进行运算,执行程序并观察运行结果。
1)
2)
3)
4)
6、举例编写汇编程序,用“A”命令输入,运行并观察结果
1)、例1:设计一个小程序,从键盘上接受一个字符并在屏幕上输出显示该字符。
2)、例2:设计一个小程序,用次数控制在终端屏幕上输出‘0’到‘9’十个数字符。
单片机实验1 汇编语言程序设计实验---- 存储器块赋值一.实验目的1 熟悉存储器的读写方法,熟悉51汇编语言结构。
2 熟悉循环结构程序的编写。
3 熟悉编程环境和程序的调试。
二.实验内容指定存储器中某块的起始地址和长度,要求将其内容赋值。
例如将4000H 开始的100个字节内容清零或全部赋值为33H(参考程序),要求根据参考程序修改:修改程序,赋值内容为(10,9,8,7,6,5,4,3,2,1。
)三.实验仪器微机、VW,WAVE6000编程环境软件,(单片机实验箱)仿真器--仿真器设置-选择仿真器选择仿真头选择CPU Lab8000/Lab6000通用微控制器 MCS51实验 8051前3个软件实验勾选√使用伟福软件模拟器四实验步骤注意:1 文件不要用中文名称保存时不要用中文路径(目录),不要放在“桌面”上,源文件和工程要放在同一个文件夹下,文件名称和路径名称不要太长。
2 查看存储器菜单使用:窗口---数据窗口---XDATA 观察存储器内容3 查看SFR:窗口---CPU窗口查看CPU寄存器SFR4 单步执行:执行---单步执行(F8),每执行一步,查看每条语句涉及到的寄存器和存储器内容的变化结果,是否是指令所要得到的结果,如不是,检查错误原因,修改。
5利用多种执行方法和观察各种窗口调试程序,直至程序满意为止。
编译器默认设置:程序框图参考例程序:Block equ 4000hmov dptr, #Block ; 起始地址mov r0, #10 ; 清10个字节mov a, #33h ; 将33H赋值给aLoop:movx @dptr, a 将a写入外部RAMinc dptr ; 指向下一个地址djnz r0, Loop ; 记数减一ljmp $ ; $当前程序指针相当于一直执行自己;ljmp $ end说明:$:是当前语句的程序指针(地址)相当于一直执行自己:ljmp $,程序死循环要求赋值数据为10,9,8,7,6,5,4,3,2,1则以上程序该如何改动? 自己修改程序实现。
实验报告实验名称汇编语言程序设计||专业班级:信息安全学号:姓名:实验一汇编语言上机过程和Debug常用调试命令一.实验目的:学习程序设计的基本方法和技能,熟练掌握用汇编语言设计、编写、调试和运行程序的方法。
二.实验题目:熟悉与实验有关的系统软件(如编辑程序、汇编程序、连接程序和调试程序等)的使用方法。
在调试过程中,学习及掌握debug程序的各种操作命令。
三.问题描述:试编写一程序:比较两个字符串string1和string2所含的字符是否相同,若相同则显示‘match’;否则,显示‘no match’。
四.方法说明:a)使用ws、tc或EDIT编辑程序来建立源文件,然后存盘,使系统返回DOS。
b)用汇编程序masm(或asm)对源文件汇编产生目标文件obj如:汇编指示出错则需重新调用编辑程序修改错误,直至汇编通过为止。
c)用连接程序link产生执行文件EXE.d)执行程序,可直接从DOS执行程序。
e)使用debug程序调试程序的方法。
五.实验步骤:1.调用字处理程序EDIT建立以sample.asm文件datarea segmentstring1db‘move the cursor backward.’string2db‘move the cursor backward.’mess1db‘Match..’,13,10,’$’mess2db‘No match!..’,13,10,’$’datarea endsprognam segmentmain proc farassume cs:prognam,ds:datarea,es:datareastart:push dssub ax,axpush axmov ax,datareamov ds,axmov es,axlea si,string1lea di,string2cldmov cx,25repz cmpsbjz matchlea dx,mess2jmp short dispmatch:lea dx,mess1disp:mov ah,09int21hretmain endpprognam endsend start2.对源文件汇编产生目标文件objD:\masm文件名。
实验1 简单汇编语言程序设计一、实验目的与要求1.熟悉汇编语言运行、调试环境及方法。
2.掌握简单汇编语言程序的设计方法。
3.熟悉调试工具DEBUG,并运用DEBUG 工具调试程序。
二、实验容根据以下要求,编写汇编源程序,汇编连接汇编源程序,并利用DEBUG 工具调试程序,验证程序的正确性。
1. 假设X、Y、R、W 是存放8 位带符号数字节单元的地址,Z 是16 位字单元的地址。
试编写汇编程序,完成Z((W X) 5Y)(R2) 。
2.试编写一个程序,测试某数是否是奇数。
如该数是奇数,那么把DL 的第0 位置1,否那么将该位置0。
三、实验报告要求1.程序算法流程图。
2.源程序清单。
3.程序运行结果。
4.调试过程中遇到的问题和解决的方法。
实验2 分支及循环程序设计一、实验目的与要求1.熟悉汇编语言运行、调试环境及方法。
2.掌握分支程序和循环程序的设计方法。
3.熟悉调试工具DEBUG,并运用DEBUG工具调试程序。
二、实验容根据以下要求,编写汇编源程序,汇编连接汇编源程序,并利用DEBUG工具调试程序,验证程序的正确性。
1.编写汇编程序,统计某存储区假设干个数据中英文字母的个数,并将结果在屏幕上显示。
2.从键盘任意输入一组字符数据,请编写汇编程序将该组数据加密后在屏幕上显示。
参考加密方法是:每个数乘以2。
〔说明:此题的加密方法,同学们可以自己拟定〕三、实验报告要求1.程序算法流程图。
2.源程序清单。
3.程序运行结果。
4.调试过程中遇到的问题和解决的方法。
实验3 子程序程序设计一、实验目的与要求1.熟悉汇编语言运行、调试环境及方法。
2.掌握子程序的设计方法。
3.熟悉调试工具DEBUG,并运用DEBUG工具调试程序。
二、实验容根据以下要求,编写汇编源程序,并利用DEBUG工具调试程序,验证程序的正确性。
1.编程以十进制形式和十六进制形式显示AX的容,并把两个显示功能分别封装成子程序dispDEC和dispHEX。
汇编语言程序设计实验报告(一)一、实验目的1. 掌握顺序程序设计方法2. 掌握分支程序的结构及分支程序的设计,调试方法3. 学习数据传送及算术和逻辑运算指令的用法4. 熟悉在PC 机上建立、汇编、连接、调试和运行汇编语言程序的过程二、实验内容1. 从键盘上接收一位十进制数X ,计算Y 值,并以十六进制形式显示出来,Y 按下列公式计算。
⎪⎪⎩⎪⎪⎨⎧===-=+=)6(2/)5()4(2)3(2222X X X X X X X X X X Y 2. 从键盘上接收两个一位十六进制数X 和Y ,然后再输入一个A-D 之间的字符,按下列要求计算。
A )当输入字符为A ,则计算X+Y ,并以十六进制形式显示出来B )当输入字符为B ,则计算|X-Y|,并以十六进制形式显示出来C )当输入字符为C ,则计算X*Y ,并以十六进制形式显示出来D )当输入字符为D ,则计算X/Y ,并以十六进制形式显示出来三、实验结果1、结果截图2、结果截图四、源代码1、代码DATA SEGMENTX DB ?TABLE DW L1,L2,L3,L4DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA START:MOV AX,DATAMOV DS,AXMOV AH,1INT 21HCMP AL,33HJB L0CMP AL,36HJA L0AND AL,0FHMOV X,ALSUB AL,3SHL AL,1XOR AH,AHMOV BX,OFFSET TABLEADD BX,AXJMP [BX]L1:MOV AL,XMUL ALADD AL,XJMP L7MUL ALSUB AL,XSUB AL,XJMP L7L3:MOV AL,XMUL ALJMP L7L4:MOV AL,XMUL ALMOV CL,2DIV CLJMP L7L7:MOV BL,ALMOV CL,4SHR AL,CLCMP AL,9JLE L5ADD AL,7L5:ADD AL,30HMOV DL,ALMOV AH,2INT 21HAND BL,0FHCMP BL,9JLE L6ADD BL,7L6:ADD BL,30HMOV DL,BLMOV AH,2INT 21HL0:MOV AH,4CHINT 21HCODE ENDSEND START2、代码DA TA SEGMENTX DB ?Y DB ?Z DB ?DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TA START:MOV AX,DATAXOR AX,AXMOV AH,1INT 21HMOV X,ALMOV AH,1INT 21HMOV Y,ALMOV AH,1INT 21HMOV Z,ALMOV AL,XMOV BL,YMOV AH,ZCMP AL,39HJBE M1SUB AL,7M1:SUB AL,30H MOV X,ALCMP BL,39HJBE M2SUB BL,7M2:SUB BL,30H MOV Y,BLMOV AL,XMOV BL,YCMP AH,41HJE L1CMP AH,42HJE L4CMP AH,43HJE L6CMP AH,44HJE L7L1:ADD AL,BLJMP L5L4:CMP AL,BLJA L8SUB BL,ALMOV AL,BLJMP L5L8:SUB AL,BLJMP L5L6:MOV AL,XMUL BLJMP L5L7:XOR AX,AXMOV AL,XDIV BLL5:MOV BH,ALMOV CL,4SHR AL,CLCMP AL,9JLE L2ADD AL,7L2:ADD AL,30HMOV DL,ALMOV AH,2INT 21HAND BH,0FHCMP BH,9JLE L3ADD BH,7L3:ADD BH,30HMOV DL,BHMOV AH,2INT 21HL0:MOV AH,4CHINT 21HCODE ENDSEND START五、实验心得通过本次实验,我对汇编语言程序设计的方法和特点有了一点理解,并有以下心得体会。
汇编语言程序设计实验1——汇编程序与调试器的使用一、实验目的熟悉DOS操作系统环境下的汇编程序MASM的使用、掌握DEBUG的基本命令及其功能。
二、实验内容1.编写一个小程序,从键盘接收一个大写字母,存放到指定的内存单元BUFF1,并转换其为对应的小写字母,存放到指定的内存单元BUF2中。
上机编辑、汇编、连接并运行该程序。
2. 输入源程序、汇编、连接并执行相应程序,并用DEBUG 实现以下操作:(1)用反汇编命令查看相应程序的可执行语句序列,分析其与源程序的异同,查看相应程序占用内存单元的字节数。
(2)用数据查看命令查看执行前的数据单元的内容。
(3)分别用P命令和T命令逐步执行程序,分析这两种方式的区别,记录“转换为小写字母”指令执行后的状态字。
(4)查看程序执行后数据单元的内容。
(5)查看0000:0000 起始的32个单元的内容。
(6)用汇编命令编写一个简单加法程序“3+5=8”,加数和结果分别存在内存单元NUM1、NUM2、NUM3中。
三、实验要求学生要提前做好相关内容的预习(包括源程序的分段组织、DEBUG的系列命令等),熟悉被调试的程序(学生应当在本实验中自行设计一些汇编语言程序,其目的是熟悉相关编程环境的特性),并对程序的测试/调试过程(包括所用的编程环境命令、DEBUG命令等)作出详细计划。
认真完成实验,正确记录各项数据,记录实验过程中出现的问题及其解决过程。
四、实验报告写出各实验程序的测试/调试的详细过程(包括DEBUG命令的使用等),特别是要写出在DEBUG状态下编写、运行程序的过程。
要系统给出各程序在测试/调试过程中所遇到的问题、解决问题的方法与途径。
要对程序在测试/调试过程中的问题进行分析,对相关的执行结果进行分析。
《汇编语言程序设计》实验报告实验项目1:DOS操作练习一、实验目的:熟悉windows环境下常用DOS命令的使用;掌握一些常用DOS命令。
二、实验内容:1、进入命令提示符方式Win+R 输入cmd 进入DOS2、常用DOS命令练习I、目录操作类命令:a.CD——改变当前目录格式:CD[盘符:][路径名][子目录名]b.MD——建立子目录格式:MD[盘符:][路径名]〈子目录名〉c.RD——删除子目录命令格式:RD[盘符:][路径名][子目录名]d.DIR——显示磁盘目录命令格式:DIR [盘符][路径][/P][/W]e.PATH——路径设置命令格式:PA TH[盘符1]目录[路径名1]{[;盘符2:],〈目录路径名2〉…}f.TREE——显示磁盘目录结构命令格式:TREE[盘符:][/F][》PRN]II、文件操作类命令a、COPY 文件复制命令格式:COPY [源盘][路径]〈源文件名〉[目标盘][路径][目标文件名]b、XCOPY——目录复制命令格式:XCOPY [源盘:]〈源路径名〉[目标盘符:][目标路径名][/S][/V][/E]c、TYPE——显示文件内容命令格式:TYPE[盘符:][路径]〈文件名〉d、REN——文件改名命令格式:REN[盘符:][路径]〈旧文件名〉〈新文件名〉e、ATTRIB——修改文件属性命令格式:ATTRIB [+R][-R][+A][-A] [+S][-S] [+H][-H] [文件夹或文件名]f、DEL——删除文件命令格式:DEL[盘符:][路径]〈文件名〉[/P]g、UNDELETE——恢复删除命令UNDELETE[盘符:][路径名]〈文件名〉[/DOS]/LIST][/ALL]III、磁盘操作类命令(没有做)IV、其它命令(只做了CLS指令)三、分析和体会:在实验调试中有时忘记打“:或\”都会出现错误,还有一些指令是无法执行,出现“不是内部或外部指令,也不是可运行程序或处理文件”不知道是不是系统的问题,还是我的输入格式错误,没解决。
汇编语言程序设计实验说明书实验一 DOS常用命令及8088指令使用 (1)实验二内存操作数及寻址方法 (4)实验三数据串传送和查表程序 (6)实验四屏幕字符显示程序 (8)实验五条件转移指令 (10)实验六汇编语言程序上机过程 (13)实验七分枝程序 (15)实验八多重循环程序 (17)实验九子程序 (18)实验十音乐程序 (21)实验十一数码转换程序 (23)实验一 DOS常用命令及8088指令使用实验目的:通过实验掌握下列知识:1、DOS命令: DIR,DEL,RENAME,FORMAT,COPY。
2、8088指令: MOV,ADD,ADC,SUB,SBB,DAA,XCHG3、DEBUG命令: A,D,E,F,H,R,T,U。
4、BCD码,ASCII码及用16进制数表示二进制码的方法。
5、8088寄存器: AX,BX,CX,DX,F,IP。
内容及步骤:一、DOS常用命令练习:1、将机房提供的系统盘插入A驱动器中,开机,出现提示符后打入命令FORMAT B:/S。
等屏幕上出现提示后将新盘插入B驱动器并打回车。
PC机即对新盘格式化并将糸统拷入。
2、打命令 COPY A:*。
* B 将糸统盘上全部文件拷到你的盘上。
3、将新盘插到 A驱动器中,用DIR命令查看盘上文件。
4、用命令 COPY DEBUG。
COM BUG 复制一个文件。
5、用命令 RENAME BUG BG 将BUG 文件改为BG。
6、用命令 DEL BG 将文件BG删除。
在操作时要注意提示信息,并按提示操作。
二、DEBUG 命令使用:1、打 DEBUG 进入 DEBUG 控制,显示提示苻 '_ '。
2、用命令 F100 10F 'A' 将'A'的ASCII码填入内存。
3、用命令 D100 10F 观察内存中的16进制码及屏幕右边的ASCII字符。
4、用命令 F110 11F 41 重复上二项实验,观察结果并比较。
《汇编语⾔程序设计》实验报告(⼀)《汇编语⾔程序设计》实验报告(⼀)姓名学号系别班级指导教师实验⽇期课程名称《汇编语⾔程序设计》同组实验者⼀、实验名称:实验⼀汇编程序和连接程序的使⽤⼆、实验⽬的:1. 熟悉汇编语⾔的上机环境;2. 学习EDIT,MASM,LINK程序的使⽤;3. 掌握建⽴、汇编、链接、运⾏汇编语⾔程序的过程。
三、实验类型:验证四、实验材料、⼯具、或软件多媒体计算机、WINDOWS XP系统或纯DOS系统、MASM6.11以上版本或汇编语⾔程序设计实验集成环境。
五、实验要求1. 编写⼀程序,要求⽐较两个字符串STRING1和STRING2所含字符是否相同,若相同则显⽰‘MATCH’,若不相同则显⽰‘NO MATCH’。
⽤串⽐较功能来完成程序所要求的功能。
2.完成课堂例题,并⽤DEBUG运⾏,观察结果。
六、试验内容与步骤:(附上必要的调试过程及运⾏结果截图,可加附页)试编写⼀程序,要求⽐较两个字符串STRING1和STRING2所含字符是否相同,若相同则显⽰‘MATCH’,若不相同则显⽰‘NO MATCH’。
⽤串⽐较功能来完成程序所要求的功能。
上机步骤如下:1、调⽤/doc/284972810.html程序建⽴汇编语⾔源程序.ASM建⽴好的源⽂件以EX_1.ASM为⽂件名存盘DATA SEGMENTSTRING1 DB 'Visual C++ 'STRING2 DB 'Visual Basic'COUNT EQU $-STRING2MESS1 DB 'MATCH!’,13,10,’$'MESS2 DB 'NO MATCH!’,13,10,’$'DATA ENDScode segmentassume cs:code,ds:data,es:datamain proc farstart:push dssub ax,axpush axmov ax,datamov ds,axmov es,ax;main programmov cx,countlea si,string1lea di,string2cldrepz cmpsbjz mes1mov dx,offset mess2jmp disp0mes1:mov dx,offset mess1disp0: mov ah,9int 21hexit: retmain endpcode endsend start2、⽤汇编程序MASM对源⽂件汇编产⽣⽬标⽂件.obj键⼊命令 masm ex_1;如汇编指⽰出错则需重新调⽤EDIT程序修改错误,直到汇编通过产⽣.obj⽂件为⽌。
实验一、汇编语言程序设计
一、实验目的
1. 熟悉Keil C51集成开发环境的使用方法。
2. 掌握数据传送指令的用法。
3. 掌握算术运算指令的用法
4. 掌握汇编语言程序设计方法
二、实验设备(仪器)
PC微机一台
Keil C51集成开发环境一套
三、实验内容
1.按照Keil C51集成开发环境的要求,建立程序,然后进行编译。
2.将编译好的程序进行软件模拟仿真运行。
3. 数据传送,算术运算指令。
4. 逻辑操作、位操作和控制转移指令。
5.顺序程序设计
6.分支程序设计
7.循环程序设计
四、实验步骤
1.打开计算机电源,在桌面上双击“Keil uVision”图标,打开Keil C51集成开
发环境。
2.选择“Project”-“New Project…”建立新的工程文件(注意工程文件放置的文
件夹),输入文件名,选择“保存”。
3.在接下来的窗口中选择单片机芯片类型,暂时选择“Philips”下的“80C51FA”,
然后在接下来的窗口中,选择“否”,暂时不要加载芯片基本参数。
4.选择“File”-“New”或者点击新文件快捷图标,会打开一个文本编辑器窗口。
输入下列数据传送的程序,然后选择“File”-“Save…”,注意保存的时候给文件
起名字以后,加个文件名后缀,Keil C支持汇编语言及一种C语言编程,它是
依靠文件名后缀来判断文件是汇编语言还是C语言格式的,如果是汇编语言,
后缀为“.a”,C语言格式的,后缀为“.c”。
我们选择保存为汇编语言格式,比
如保存为“Mcu1-1.a”。
注意此时程序中的一些代码和寄存器将会自动蓝色显示,方便观察。
5.选择“Project”-“Targets,Groups,Files…”,选择“Groups/Add Files”标签,
首先点击下边窗口中的“Source Group 1”,然后选择下边的“Add Files to
Group…”,在接下来的窗口中,首先选择你需要加入的文件的后缀名(默认是.c,我们选择“Asm Source file,即后缀为.a”),然后选择对应的文件,选择“Add”,
然后选择“Close”,最后选择“确定”,完成文件的添加工作。
6.然后选择“Project”-“Build target”或者直接按下F7,对文件进行编译。
如果
发现问题,根据提示进行编辑修改,直至程序没有错误。
7.按下“CTRL+F5”,进入Debug状态,按下F11单步执行程序,观察寄存器状态,填写下列表格中地址和有关单元的内容。
注:对于查询内存地址(XXH)中的数据,可以打开memory window, 在地址栏输入Y : XXH,其中Y表示存储器类型,可以为C(ROM),D(RAM),I(寄存器间接寻址RAM,52系统RAM高128位只能用寄存器间接寻址)或X(外部RAM)。
(1
(2)外部RAM的数据传输
(3)加法指令练习
(4)减法指令练习
(8)顺序程序设计
顺序结构程序是一种最简单、最基本的程序(也称为简单程序),它是一种无分支的直线形程序,按照程序编写的顺序依次执行。
例题:将两个半字节数合并成一个一字节数。
假设内部RAM 40H,41H单元中分别存放着8位二进制数,要求取出两个单元中的低半字节,并成一个字节后,存入50H单元中。
在仿真状态,通过memory window自行给40H,41H单元输入数据,单步运转,观察运算结果是否正确。
参考程序如下:
ORG 0000H
START:MOV R1,#40H ;设置R1为数据指针
MOV A,@R1 ;取出第一个单元中的内容
ANL A,#0FH ;取第一个数的低半字节
SWAP A ;移至高半字节
INC R1 ;修改数据指针
XCH A,@R1 ;取第二个单元中的内容
ANL A,#0FH ;取第二个数的低半字节
ORL A,@R1 ;拼字
MOV 50H,A ;存放结果
SJMP $
END
(9)分支程序设计
将ASCII码制数转换为十六进制数。
如果不是十六进制数得ASCII码,用户标志位置1。
由ASCII码表知,30H~39H为0~9的ASCII码,41H~46H为A~F的ASCII码。
在这一范围的ASCII码减去37H就可以获得对应的十六进制。
设ASCII码放在累加器A中,转换结果放回A中。
程序流程图如下:
参考程序如下:
ORG 0000H
START:CLR C
SUBB A,#30H
JC NASC
CJNE A,# 0AH,MM MM:JC ASC
SUBB A,# 07H
CJNE A,# 0AH,NN NN:JC NASC
CJNE A,#10H,LL LL:JC ASC
NASC:SETB F0
ASC:SJMP $
END
(10) 循环程序设计
循环程序一般由4部分组成。
(1)置循环初值。
(2)循环体。
(3)循环修改。
(4)循环控制。
任务1:
假设从内存RAM的50H单元,连续存放一串字符,以回车符(其ASCII 码为0DH)作为结束标志,要求测出该字符串的长度。
测试方法可采用将该字符串的每一个字符与回车符依次相比,若不相等,则将统计字符串长度的计数器加l,继续比较;若比较相等,则表示该字符串结束,这时计数器中的值就是字节符串的长度。
参考程序如下:
ORG 0000H
COUNT:MOV R2,# 0FFH
MOV R0,# 4FH
LOOP:INC R0
INC R2
CJNE @R0,#0DH,LOOP
SJMP $
任务2:
从内存BLOCK单元开始有一个无符号数的数据块,其长度为LEN,试求出其最大值,并存入MAX单元。
这是一个搜索问题。
这里采用依次进行比较和取代的方法来寻找最大值。
具体做法是:先取出第一个数作为基准,和第二个数比较,若比较结果基准数大,不作变动;若比较结果基准数小,则用大数来代替原基准数,然后再和下一个数作比较。
到比较结束时,基准数就是所求的最大值。
为了进行两数的比较,采用两数相减以后判断CY的值来确定哪个数大,这比用CJNE指令更简单。
比较时将基准数放在累加器A中。
若A中先放入零,比较次数等于LEN;若A中先放入第一个数,则比较次数等于LEN-1。
采用R2作为计数器,R1作为地址指针。
程序流程如图所示。
源程序:
ORG 0000H
COMP:CLR A
MOV R2,#LEN
MOV R1,#BLOCK
LOOP:CLR C ;清CY
SUBB A,@R1 ;用减法作比较
JNC NEXT ;若(A)>((R1)),转移
MOV A,@R1 ;若(A)<((R1)),则((R1))→(A)
SJMP NEXT1
NEXT:ADD A,@R1 ;恢复(A)
NEXT1:INC R1
DJNZ R2, LOOP ;判循环结束条件
MOV MAX,A ;存最大数
SJMP $
LEN EQU 0AH
MAX EQU 40H
BLOCK EQU 41H
END
五、预习内容
1.MCS-指令表
2. 顺序程序设计方法。
3.分支程序设计方法。
4.预习循环程序设计方法。
5.提前熟悉Keil C51环境。
六、实验报告要求
1.明确实验目的、熟悉实验设备、掌握实验内容。
2.实验步骤清晰。
3.实验报告内容充实。