实验1 汇编程序设计

合集下载

实验一 基础汇编语言程序设计

实验一 基础汇编语言程序设计

实验一基础汇编语言程序设计
一、实验目的
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’十个数字符。

《汇编语言程序设计》实验报告(一)

《汇编语言程序设计》实验报告(一)
MESS1 DB 'MATCH!’,13,10,’$'
MESS2 DB 'NO MATCH!’,13,10,’$'
DATA ENDS
对以上源程序重新汇编、连接、运行,结果输出为:MATCH!
七、实验总结
通过这次上机实践,我对汇编程序和连接程序的使用开始有一点了解。但刚开始还是很不顺的,总是出现找不到文件,后来经过同学的指导,终于知道自己的错误,原来是路径错误。所以还需要勤加练习,多多实践。
四、实验材料、工具、或软件
多媒体计算机、WINDOWS XP系统或纯DOS系统、MASM6.11以上版本或汇编语言程序设计实验集成环境。
五、实验要求
1. 编写一程序,要求比较两个字符串STRING1和STRING2所含字符是否相同,若相同则显示‘MATCH’,若不相同则显示‘NO MATCH’。用串比较功能来完成程序所要求的功能。
2.完成课堂例题,并用DEBUG运行,观察结果。
六、试验内容与步骤:(附上必要的调试过程及运行结果截图,可加附页)
试编写一程序,要求比较两个字符串STRING1和STRING2所含字符是否相同,若相同则显示‘MATCH’,若不相同则显示‘NO MATCH’。用串比较功能来完成程序所要求的功能。上机步骤如下:
《汇编语言程序设计》实验报告(一)
姓名
学号
系别
班级
指导教师
实验日期
课程名称
《汇编语言程序设计》
同组实验者
一、实验名称:实验一汇编程序和连接程序的使用
二、实验目的:
1. 熟悉汇编语言的上机环境;
2. 学习EDIT,MASM,LINK程序的使用;3. 掌握建立、汇、链接、运行汇编语言程序的过程。

单片机汇编语言程序设计实验报告

单片机汇编语言程序设计实验报告

单片机实验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

汇编语言程序设计 实验1

汇编语言程序设计实验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⽂件为⽌。

汇编语言实验一

汇编语言实验一

汇编语言实验一上机一 EDIT、MASM、LINK、DEBUG程序的使用一、实验目的1.熟悉使用DOS命令:DIR,CD等命令的使用;2.熟悉建立、汇编、连接、调试和运行汇编语言程序的过程。

3. 掌握调试程序DEBUG中的U、G、Q命令的使用。

二、实验内容1.四个要使用到的程序文件用DIR和CD命令找出汇编程序设计工作环境中的4个必要的程序文件:(这4个文件在c:\cai\masm文件夹中), MASM.EXE, LINK.EXE, 2.编辑、汇编、连接和执行程序(操作时要注意路径)。

程序如下:3. Debug命令的使用用U、G、Q命令调试程序。

三、实验过程总的来说,整个过程分为以下几步:1、输入程序(使用到,也可以使用记事本) → 3、编辑程序(使用到MASM.EXE) → 3、连接程序(使用到LINK.EXE,) →4、运行程序(使用到)1.用EDIT编辑源程序(也可以用记事本输入,存盘后再改名),启动EDIT编辑器有两种方法:●在DOS状态下:C:\>EDIT●在windows状态下:开始---运行(运行对话框中输入“EDIT”)①屏幕显示EDIT的编辑界面;②选择File菜单→New命令(激活菜单项用”Alt”键),输入源程序清单。

③待程序输入完后,存盘,文件名为:D:\EX1.ASM。

(注意:扩展名一定为ASM)余下操作在Dos下进行:启动Dos窗口方法:”开始”---“程序”---“附件”---“命令提示符”如图所示:2. 利用宏汇编程序MASM 对EX1.ASM 进行汇编。

(MASM.EXE, LINK.EXE, 都放在c:\cai\Masm 文件夹中,使用时要注意路径)操作如下:① 进入到汇编程序所在文件夹,如图所示:② 将汇编源程序ex1.asm 汇编成目标程序ex1.obj,方法:输入masm d:\ex1.asm 按回车,如图所示:③ 余下操作阅读教材P52~P54。

基础汇编语言程序设计实验报告

基础汇编语言程序设计实验报告
11110
单步、手动置指令、微程序控制器、联机、16位机
11010
16位机、脱机运算器实验
1XX00
三、仿真终端软件的操作步骤:
1. 在PC机上建一个文件夹TEC-XP;
2. 取出配套的用户盘,将应用程序PCEC16拷贝到用户机器硬盘上该文件夹里;
3.双击PCEC16图标,出现如图所示的界面:
5.系统默认选择串口1,用户可根据实际情况选择串口1或是串口2(这里的串口指的是和 TEC-XP教学实验系统相连的PC机的串口),按回车后出现如图界面:
1.准备一台串口工作良好的PC机;
2.将TEC-XP放在实验台上,打开实验箱的盖子,确定电源处于断开状态;
3.将黑色的电源线一端接220V交流电源,另一端插在TEC-XP实验箱的电源插座里;
4.取出通讯线,将通讯线的9芯插头接在TEC-XP实验箱上的串口“COM1”或“COM2”上,另一端接到PC机的串口上;
1)例1:设计一个小程序, 从键盘上接收一个字符并在屏幕上输出显示该字符。
<1>在命令行提示符状态下输入:
A 2000↙ ;
屏幕将显示:
2000:
输入如下形式的程序:
2000: IN 81 ;判键盘上是否按了一个键
2001:SHR R0 ;即串行口是否有了输入的字符
2002:SHR R0
2003:JRNC 2000 ;未输入完则循环测试
7.在PC机上运行PCEC16.EXE文件,根据连接的PC机的串口设置所用PC机的串口为“1”或“2”, 其它的设置一般不用改动,直接回车即可。(具体步骤附后)
8.按一下“RESET”按键,再按一下“START”按键,主机上显示:
TEC-2000CRTMONITOR

汇编语言程序设计实验报告

汇编语言程序设计实验报告

《汇编语言程序设计》实验报告院系专业年级学号姓名目录实验1 Masm6.11的使用方法............................................ 错误!未定义书签。

实验2 比较两个字符串的大小 . (9)实验3 求学生名次 (16)实验4 求员工年工作量 (29)实验5 子程序和主程序之间的参数传递 (37)实验6 C语言和汇编语言混合编程下的排序算法 ......................................... .42实验7 采用汇编语言对C语言函数调用的方法求平均数.. (46)实验一 Masm6.11的使用方法一、实验目的1、创建一个新的汇编语言程序,熟练掌握汇编语言开发工具的使用方法,并对开发环境中一些坏境变量进行设置。

2、创建一个工程文件,对该工程文件进行编译,连接,并运行;3、对建立的工程文件进行调试,在运行过程中查看各个寄存器的值,内存单元的值等。

二、实验环境该试验包括的硬件和软件条件如下:1、硬件环境(1)Intel i5 3317U(2)内存4G2、软件环境(1)Window XP Professor(2)MASM6.11开发软件三、实验步骤1、将Masm6.11安装程序拷贝到D盘根目录下,并执行d:\Masm611目录下Setup.exe文件,按照安装提示将程序安装到C盘根目录。

2、将C:\masm611\Bin目录下的所有文件拷贝到C:\Masm611\binr目录下,将C:\Masm611\help目录下的所有文件拷贝到c:\Masm61\binr目录下。

3、执行C:\Masm611\Binr目录下的pwb.exe文件,打开开发环境。

4、在PWB编辑窗口中输入实验1.1中的程序,并保存为test.asm文件。

5、执行Project菜单下New Project子菜单创建一个新的工程文件,并命名为test.mak,将test.asm文件加入到该工程文件中。

实验一 汇编语言程序设计

实验一  汇编语言程序设计

实验一汇编语言程序设计实验一汇编语言程序设计一、实验目的1、掌握Lab6000p实验教学系统基本操作;2、掌握8088/8086汇编语言的基本语法结构;3、熟悉8088/8086汇编语言程序设计基本方法二、实验设备装有emu8086软件的PC机三、实验内容1、有一个10字节的数组,其值分别是80H,03H,5AH,FFH,97H,64H,BBH,7FH,0FH,D8H。

编程并显示结果:如果数组是无符号数,求出最大值,并显示;如果数组是有符号数,求出最大值,并显示。

2、将二进制数500H转换成二-十进制码,并显示“500H 的BCD是:”3、将二-十进制码7693转换成ASCII码,并显示“BCD码7693的ASCII是:”4、两个长度均为100的内存块,先将内存块1全部写上88H,再将内存块1的内容移至内存块2。

在移动的过程中,显示移动次数1, 2 ,3…0AH…64H5、键盘输入一个小写字母(a~z),转换成大写字母显示:请输入一个小写字母(a~z):转换后的大写字母是:6、实现4字节无符号数加法程序,并显示结果,如99223344H + 99223344H = xxxxxxxxH 四、实验代码及结果、实验代码:第1页DATA SEGMENTSZ DB 80H,03H,5AH,0FFH,97H,64H,0BBH,7FH,0FH,0D8H;存进数组SHOW DB 'THE MAX IS: ','$' DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA ;把数据的基地址赋给DS MOV DS,AXMOV DX,OFFSET SHOW ;调用DOS显示字符串MOV AH,09HINT 21HMOV SI ,OFFSET SZ ;数组的偏移地址赋给SI MOV CX,10;存进数组的长度给CX MOV DH,80H ;将数组的第一个数写进DH NEXT:MOV BL,[SI];将数组的第一个数写进BL CMP DH,BL ;比较DH和BL中数的到校JAE NEXT1 ;如果DH中的数大于BL中,将跳转到NEXT1 MOV DH,BL ;如果DH中的数小于BL中,将BL中的数赋给DH NEXT1:INC SI ;偏移地址加1LOOP NEXT;循环,CX自减一直到0,DH中存数组的最大值;接下来的程序是将将最大值DH在屏幕上显示输出MOV BX,02H第 2 页NEXT2:MOV CL,4ROL DH,CL;将DH循环右移四位MOV AL,DHAND AL,0FH ;将AL高位清零,一位一位进行ASCII码转换CMP AL,09H ;与09H比较大小 JBE NEXT3 ;若小于,跳转至NEXT3,证明数值在0-9之间ADD AL,07H ;若大于,则证明为字母,因为字母与数字的ASCII码相差7,所以要加上7 NEXT3:ADD AL,30H ;因为转换为ASCII码要加30H MOV DL,ALMOV AH,2;DOS中断显示INT21H DEC BX JNZ NEXT2 MOV DL,'H' MOV AH,2 INT 21H CODE ENDS END START 实验结果:第 3 页第 4 页、实验代码 DATA SEGMENTSZ DB 80H,03H,5AH,0FFH,97H,64H,0BBH,7FH,0FH,0D8H;存进数组SHOW DB 'THE MAX IS: ','$' DATA ENDS CODE SEGMENTASSUME CS:CODE,DS:DATA START:MOV AX,DATA ;把数据的基地址赋给DS MOV DS,AXMOV DX,OFFSET SHOW ;调用DOS显示字符串MOV AH,09HINT 21HMOV SI ,OFFSET SZ ;数组的偏移地址赋给SI MOV CX,10;存进数组的长度给CX MOV DH,80H ;将数组的第一个数写进DH NEXT:MOV BL,[SI];将数组的第一个数写进BL CMP DH,BL ;比较DH和BL中数的到校JGE NEXT1 ;如果DH中的数大于BL中,将跳转到NEXT1 ;此为无符号数与有符号数的唯一差别,JGE是无符号数的跳转MOV DH,BL ;如果DH中的数小于BL中,将BL中的数赋给DH NEXT1:INC SI ;偏移地址加1LOOP NEXT ;循环,CX减1,一直到CX减为0,DH 中存数组的最大值第 5 页;接下来的程序是将最大值DH在屏幕上显示输出MOV BX,02H NEXT2:MOV CL,4ROL DH,CL;将DH循环右移四位MOV AL,DHAND AL,0FH ;将AL高位清零,一位一位进行ASCII码转换CMP AL,09H ;与09H比较大小 JBE NEXT3 ;若小于,跳转至NEXT3,证明数值在0-9之间ADD AL,07H;若大于,则证明为字母,因为字母与数字的ASCII码相差7,所以要加上7 NEXT3:ADD AL,30H ;因为转换为ASCII码要加30H MOV DL,ALMOV AH,2;DOS中断显示INT21H DEC BX JNZ NEXT2 MOV DL,'H' MOV AH,2 INT 21H CODE ENDS END START 实验结果第 6 页第 7 页2、实验代码DATA SEGMENT BNUM DW 0500HDNUM DB 4 DUPMES DB 'THE BCD OF '500H' IS: ','$' DATA ENDS CODE SEGMENTASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AXMOV DX,OFFSET MES MOV AH,09H INT 21HMOV AX,BNUM LEA BX,DNUM MOV DL,0 ;计算1000的个数 COUNT1:SUB AX,03E8H JC NEXT1INC DL JMP COUNT1 NEXT1:ADD AX,03E8H;将字符串偏移量写入DX ;将0500H存入AX中;取DNUM的偏移量;AX-1000;不够减,即若CF=1,有借位,转NEXT1 ;DL+1;跳转AGAIN1 ;AX+1000第 8 页MOV [BX],DL ;将DL(即千位数)存入DNUM中INC BX ;BX+1 MOV DL,0 ;DL清零 ;计算100个数 COUNT2:SUB JC INC JMP NEXT2:ADD MOV INC MOV ;计算10个数 COUNT3:SUB JC INC JMP NEXT3:ADD MOV INC MOVAX,0064H NEXT2 DL COUNT2 AX,0064H[BX],DL BX DL,0 AX,000AH NEXT3 DL COUNT3 AX,000AH[BX],DL BX [BX],AL ;AX-100 ;将DL(即百位数)存入DNUM中 ;AX-10 ;将DL(十位数)存入DNUM中 ;计算个位数第 9 页;接下来的程序是将数值转化为ASCII并在屏幕上显示MOV CX,4LEA SI,DNUM ;取DNUM的地址偏移量 NEXT4:MOV AL,[SI] ;将DNUM中所存的各个数值转换为ASCII码; ;在屏幕上输出显示CMP AL,09H JBE NEXT5ADD AL,07H NEXT5:ADD AL,30H MOV DL,AL MOV AH,2 INT21H INC SI DEC CX JNZ NEXT4 CODE ENDS END START 实验结果第 10 页第 11 页3、实验代码 DATA SEGMENTOUP DB 'THE ASCII OF 7963 IS:','$' A1 DB 07H,09H,06H,03H DATA ENDS CODE SEGMENTASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AXMOV DX,OFFSET OUP MOV AH,09H INT 21H MOV CL,4 MOV SI,0 NEXT:MOV AL,A1[SI] ;将A1的第SI个数据传给AL MOV BL,ALOR AL,30H ;加30转换为ASCII码值SHR AL,4AND AL,0FH ;将右移后的高位清零ADD AL,30H ;因为ASCII码与值之间相差30 MOV DL,ALMOV AH,2 ;输出对应的ASCII码INT 21H 第 12 页MOV AL,BL AND AL,0FH ADD AL,30H MOV DL,AL MOV AH,02H INT 21H MOV DL,' ' MOV AH,02H INT 21H INC SI LOOP NEXT EXIT:MOV AH,4CH INT 21H CODE ENDS END START 实验结果第 13 页第 14 页4、实验代码DATA SEGMENTYI DB 100 DUP(88H)ER DB 100 DUP(00H) ;定义数组MES DB 'THE NUMBER OF COUNTER IS: ','$' DATA ENDS CODE SEGMENTASSUME CS:CODE,DS:DATA MAIN PROC FAR START: MOV AX,DATA MOV DS,AXMOV CL,100MOV CH,00H LEA SI,YI LEA DI,ER NEXT: MOV AL,[SI]MOV [DI],AL INC SI INC DI INC CHMOV DX,OFFSET MES MOV AH,9 INT 21HCALL COUNT DEC CL;计数器初值;转移次数统计,初值 ;将内存块1的偏移量给SI ;将内存块2的偏移量给DI ;将YI中的数据复制到ER中;显示字符串;调用子程序 ;计数减1第 15 页JNZ NEXT ;计数不为零,跳转执行HLTMAIN ENDP ;主程序结束 ;下面是子程序,实现屏幕显示转移次数功能COUNT PROC NEAR ;定义子程序属性NEXT2: NEXT3:PUSH CX MOV DH,CH MOV BX,02HMOV CL,4 ROL DH,CL MOV AL,DH AND AL,0FH CMP AL,09H JBE NEXT3 ADD AL,07HADD AL,30H MOV DL,ALMOV AH,2 INT 21H DEC BX JNZ NEXT2MOV DL,'H' MOV AH,2 INT 21HMOV DL,0AH ;CX进栈;将DH循环右移四位;将AL高位清零 ;与09H比较大小 ;若小于,跳转至NEXT3 ;加30H ;DOS中断显示 ;显示H ;回车第 16 页MOV AH,2 INT 21HMOV DL,0DH ;换行MOV AH,2 INT 21HPOP CX ;CX出栈RET COUNT ENDP ;子程序结束 CODE ENDS END START 实验结果第 17 页第 18 页5、实验代码DATA SEGMENTINP DB 'PLEASE INPUT (a~z): ','$' ;设置字符串OUP DB 'THE TRANSFORMATION(A~Z) IS:','$' DATA ENDS CODE SEGMENTASSUME CS:CODE,DS:DATA MAIN PROC FAR START: MOV AX,DATA MOV DS,AXMOV DX,OFFSET INP ;显示字符串,提示输入MOV AH,9 INT 21HMOV AH,1 ;DOS中断调用,从键盘中读取一个字符INT 21HPUSH AX ;AX入栈PUSH DXMOV DL,0DH ;中断调用,回车MOV AH,2INT 21HMOV DL,0AH ;中断调用,换行MOV AH,2INT 21HMOV DX,OFFSET OUP ;显示字符串,输出提示MOV AH,9第 19 页INT 21HPOP DX ;DX出栈POP AX ;AX出栈SUB AL,32 ;AL减去32,使大写转化为小写 ;大小写之间的ASCII 码值相差32MOV DL,AL ;DOS中断显示结果MOV AH,2 INT 21H MAIN ENDP CODE ENDS END START 实验结果:第 20 页实验一汇编语言程序设计一、实验目的1、掌握Lab6000p实验教学系统基本操作;2、掌握8088/8086汇编语言的基本语法结构;3、熟悉8088/8086汇编语言程序设计基本方法二、实验设备装有emu8086软件的PC机三、实验内容1、有一个10字节的数组,其值分别是80H,03H,5AH,FFH,97H,64H,BBH,7FH,0FH,D8H。

实验一汇编语言程序设计一

实验一汇编语言程序设计一
02
在实验过程中,我遇到了问题并积极寻找解决方案,提高了自己的问 题解决能力。
03
通过实验,我认识到汇编语言在底层系统编程中的重要性和应用价值 ,为后续的学习和实践奠定了基础。
04
在未来的学习中,我需要进一步加强实践和练习,提高自己的编程能 力和经验。
05
CATALOGUE
参考文献
参考文献
汇编语言程序设计教程
02 理解程序的控制结构,如顺序、分支和循环等。 03 掌握子程序调用的实现方法,包括参数传递和返
回值处理。
02
CATALOGUE
实验内容
汇编语言指令学习
01
总结词
掌握汇编语言的基本指令和功能。
指令格式
了解指令的基本格式和参数要求。
03
02
指令分类
数据传输指令、算术指令、逻辑指 令、控制指令等。
实验结果
汇编语言程序运行结果展示
1
程序运行正常,实现了预期的功能,没有出现错 误或异常。
2
程序运行效率较高,能够快速完成计算和输出结 果。
3
程序输出结果准确,符合预期结果。
实验过程中遇到的问题及解决方案
问题
汇编语言指令集不熟悉,导致编写 程序时出现错误。
解决方案
通过查阅相关资料和教程,深入学 习汇编语言指令集,掌握常用指令 的使用方法和语法规则。
实验一:汇编语言 程序设计一
目 录
• 实验目的 • 实验内容 • 实验步骤 • 实验结果 • 参考文献
01
CATALOGUE
实验目的
掌握汇编语言基础知识
了解汇编语言的起源 、发展及其应用领域 。
掌握汇编语言的常用 伪指令,如ORG、 DB、DW等。

汇编程序设计实验报告

汇编程序设计实验报告

实验一、认识Tddebug集成操作软件 0实验二、I/O程序设计 (4)实验三、代码转换程序设计 (8)实验四、循环程序设计实验报告 (11)实验一、认识Tddebug集成操作软件实验题目:认识Tddebug集成操作软件实验目的:1.熟悉汇编程序的开发过程。

2.认识Tddebug集成操作软件。

3.掌握在Tddebug集成环境中编辑、编译、连接汇编语言程序方法。

4.掌握INT 21H软件中断来调用DOS内部子程序的方法实验要求:PC微机一台实验主要步骤:1.运行Tddebug软件,选择Edit菜单编写实验程序2.使用Compile菜单中的Compile和Link对实验程序进行汇编、连接,生成执行文件。

3.使用Rmrun菜单中的Run运行程序,观察运行结果。

4.使用Rmrun菜单中的Debug调试程序,查看程序段、数据段、附加段装入内存后的分配情况。

单步执行数据传送指令后,观察各寄存器及数据区的内容。

过程如下:5.按F7单步执行,在代码区中有一个三角,表示正在执行的指令。

每一条指令的执行一定会使目标寄存器和状态寄存器发生变化,从相关窗口看结果。

6.检查内存数据区的内容,关键是找出用户程序的数据段和附加段:7.方法1:在CPU窗口按Tab键使内存数据显示区成为活动区,按Ctrl+G键,输入:“DS或ES寄存器的值:偏移地址”,即可显示用户指定的数据区8.方法2:选择菜单View| Dump,弹出内存数据显示窗口。

9.3) 查看执行结果:按Alt+F5,切换到用户窗口。

10.更改数据区中的数据,考察、调试程序的正确性。

程序清单:DDATA SEGMENTMSR DB "HELLO,WORLD!$"LEN EQU $- MSRDDATA ENDSEXDA SEGMENTMSD DB LEN DUP(?)EXDA ENDSMYSTACK SEGMENT STACKDW 20 DUP(?)MYSTACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DDA TA,ES:EXDASTART: MOV AX,DDATAMOV DS,AXMOV AX,EXDAMOV ES,AXMOV SI,OFFSET MSRMOV DI,OFFSET MSDMOV CX,LENMOV BX,0NEXT: MOV AL,MSR[BX] ;开始传输数据MOV ES:MSD[BX],ALINC BXLOOP NEXTPUSH ESPOP DSMOV DX,OFFSET MSDMOV AH,9INT 21HMOV AX,4C00HINT 21HCODE ENDSEND START实验结果:1、编译结果:2、单步执行结果:≡File Edit View Run Breakpoints Data Options Window Help READY┌─────Module: noname File: d:\456789\noname.asm 24────────────────────1────────┐│╔═[■]═CPU P?ntium Pro════════════════ds:0003 = 4C╤═══════3═[↑][↓]═╗││•║#noname#next ▲ax 144C │c=0║││•║cs:0016►8A870000 ♦ NEXT: MO V AL,MSR[BX] ■bx 0003 │z=0║││•║cs:001A 2688870000 ♦ MOV ES:MSD[BX],AL ▒ cx 000A │s=0║││•║cs:001F 43 ♦ INC BX ▒ dx 0000 │o=0║││•║cs:0020 E2F4 ♦ LOOP NEXT ▒ si 0000 │p=1║││•║cs:0022 06 ♦ PUSH ES ▒ di 0000 │a=0║││•║cs:0023 1F ♦ POP DS ▒ bp 0000 │i=1║││•║cs:0024 BA0000 ♦ MOV DX,OFFSET MSD ▒ sp 0028 │d=0║││►║cs:0027 B409 ♦ MOV AH,9 ▒ ds 1418 │║││•║cs:0029 CD21 ♦ INT 21H ▒ es 1419 │║││•║cs:002B B8004C ♦ MOV AX,4C00H ▒ ss 141A │║││•║cs:002E CD21 ♦ INT 21H ▒ cs 141D │║││•║cs:0030 FB sti ▼ip 0016 │║││•╟◄■▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒►┤│║││•║1408:0000 CD 20 FB 9F 00 9A F0 FE ═√ƒÜ≡■││║││•║1408:0008 1D F0 32 0B D2 10 0F 07 ↔≡2♂╥►☼•├────────────┴───╢││•║1408:0010 28 0E 56 01 16 04 0B 0E (♫V☺▬♦♂♫│ss:002A 0000 ║│└──║1408:0018 01 01 01 00 02 FF FF FF ☺☺☺ ☻│ss:0028►0000 ║─────────┘┌──╚════════════════════════════════════════════════╧═══════════════─┘2────────┐││└──────────────────────────────────────────────────────────────────────────────┘Alt: F2-Bkpt at F3-Close F4-Back F5-User F6-Undo F7-Instr F8-Rtn F9-To F10-SMenu实验二、I/O程序设计实验题目:I/O程序设计实验目的:1.理解软中断的调用方法及中断过程。

汇编实验报告

汇编实验报告

实验一(1)熟悉汇编语言程序调试环境及顺序程序设计一、实验目的及要求:1.学习及掌握汇编语言源程序的书写格式和要求,明确程序中各段的功能和相互之间的关系。

2.学会使用EDIT、MASM、LINK、DEBUG等软件工具。

3.熟练掌握在计算机上建立、汇编、连接、调试及运行程序的方法。

二、熟悉汇编语言程序调试环境1.汇编语言源程序的建立本例中给出的程序是要求从内存中存放的10个无符号字节整数数组中找出最小数,将其值保存在AL寄存器中。

设定源程序的文件名为ABC。

DATA SEGMENTBUF DB 23H,16H,08H,20H,64H,8AH,91H,35H,2BH,7FHCN EQU $-BUFDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: PUSH DSXOR AX,AXPUSH AXMOV AX,DATAMOV DS,AXMOV BX,OFFSET BUFMOV CX,CNDEC CXMOV AL,[BX]INC BXLP: CMP AL,[BX]JBE NEXTMOV AL,[BX]NEXT: INC BXDEC CXJNZ LPMOV AH,4CHINT 21HCODE ENDSEND START键入以下命令:C:\>EDIT ABC.ASM此时屏幕的显示状态如图1所示。

图1 用EDIT编辑ABC.ASM程序窗口程序输入完毕后一定要将源程序文件存入盘中,以便进行汇编及连接,也可以再次调出源程序进行修改。

2.将源程序文件汇编成目标程序文件一般情况下,MASM汇编程序的主要功能有以下3点:(1)检查源程序中存在的语法错误,并给出错误信息。

(2)源程序经汇编后没有错误,则产生目标程序文件,扩展名为.OBJ。

(3)若程序中使用了宏指令,则汇编程序将展开宏指令。

源程序建立以后,在DOS状态下,采用宏汇编程序MASM对源程序文件进行汇编,其操作过程如图2所示。

汇编实验报告

汇编实验报告

《汇编程序设计》实验报告班级网络工程3班姓名院系计算机科学学院学号指导教师郭荣佐计算机科学学院目录实验一Debug命令的使用一,实验目的及要求1,汇编语言调试环境Debug的使用,重点掌握常用命令(A R D E T)的使用,其他指令在以后的学习中逐步掌握。

2,利用Debug命令,调试采用不同寻址方式的指令的执行结果,从实践中加深对寻址方式和MOV指令的理解。

二,实验内容1,Debug程序的调入和退出2,Debug常用调试命令的使用3,MOV.XCHG.XLAT指令的调试三,实验步骤(一)、DOS常用命令练习:1.查看目录下所有的文件:2.键入 CD进入上级目录,再查看的结果:3.用COPY复制一个文件:4.用RENAME重命名一个文件:4.用DEL删除一个文件:(二)、DEBUG练习1,输入代码2,分步执行代码3,显示内存4,修改0100处的指令5,修改2000单元的值四,扩展题1,MOV指令的调试2,XCHG指令的调试3,XLAT指令的调试五、18条指令1。

.2.比较命令3.显示命令D:4.修改命令E:5‘填充内存指令F:6执行命令G:7.十六进制算求算运算指令H:8.断口输入命令I:9.读盘命令L:10.内存搬家命令M:11.命名待读/写文件命令N:12.段口输出命令O:13.结束debug返回DOS命令Q14.显示修改寄存器命令R15.搜索指定寄存器内容命令S16.执行并显示系统环境命令T 17.反汇编命令U18.写盘命令W实验二、基本汇编指令的使用一、实验目的及要求1.继续熟悉汇编语言调试环境Debug的使用,掌握常用调试命令。

2.用基本指令编写的程序段,并在Debug环境中调试,从实践中加深对基本汇编语言指令的执行过程的理解。

3.实验前要做好充分准备,包括汇编程序段清单、调试步骤、调试方法,以及对程序结果的分析等二、实验内容1单步调试一下程序段,给出每条指令执行后AL的值,以及CF、ZF、SF、OF 的状态。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验一、汇编语言程序设计
一、实验目的
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.实验报告内容充实。

相关文档
最新文档