微机实验报告(1)
微机实验报告
微机实验报告第⼀次实验1.写出完成下列功能的指令序列(1)传送20H到AL寄存器MOV AL , 20H(2)将(AL)*2 MOV AL , 02H MUL AL (3)传送25H到BL寄存器MOV BL , 25H (4)(AL)*BL MUL BL问最后结果(AX)=?AX=0940H2.分别写出完成下列指令要求的指令(1)将BX的低4位清零AND BX , F0H(2)将AX的⾼4位置1 OR AX , F0H(3)将DX的低4位取反;XOR DX , 0FH(4)将CX的中间⼋位清零AND CX , 0FF0H(5)将AX中与BX中的对应位不相同的位均置1 XOR AX , BX3.上机运⾏下⾯指令序列,分析运⾏后(AX)=?mov cl , 8sar ax ,cldec axmov cx ,8mul cxax=210.9h4. 4.设DS=当前段地址,BX=0300H,SI=0002H,请⽤DEBUG的命令将存储器偏移地址300-304H连续单元装⼊0AH0BH0CH0DH0EH。
在DEBUG状态下送⼊下⾯的程序,并⽤单步执⾏的⽅法,分析每条指令原源地址的形成过程?当数据传送完毕时,AX中的内容是什么?8.编程:求两个数的平均值。
这两个数分别放在X单元和Y单元中,⽽平均值放在Z单元中。
即Z=(X+Y)/2 data segmentx db 2y db 6z db ?data endscode segmentassume cs:code, ds;datastart:mov ax, datamov ds,axmov al, xmov ah,0add al,ymov bl,2div blint 21hcode endsend start9.输⼊下⾯源程序,并对程序进⾏会变,连接,调式并说明程序的功能。
data segment number dw 0168hdata endscode segmentassume cs;code, ds: dataorg 0100hstart:mov ax, datamov ds, axmov dx,0mov bx, 0001hmov di, 8000hmov si, 0mov ax, numbermov cx, 16next;test ax, bxjz continueor dx, diinc sicontinue:ror di, 1mov ah,4chint 21hcode endsend start1.编写程序: 求1+2+3+…..+100的和data segment number db 01hdata endscode segmentassume cs:code , ds:datastart:mov ax , datamov ds , axmov ax , datamov bx , numbermov ax , 0mov cx , 64hnext:add ax ,bxinc bxloop nextmov ah , 4chint 21hcode endsend start2.在内存中tab为⾸的地⽅存有1-9的平⽅值,从键盘输⼊⼀个数(1-9),将该数存⼊X单元,⽴⽅值存⼊XXX单元中data segmenttab db 0,1,4,9,16,25,36,49,64,81x db 10dup(?)xxx db 10dup(?)data endscode segmentassume cs:code ,ds: datastart:mov ax ,datamov ds , ax mov ax , datamov cx ,09hnext:mov ah , 1int 21hand ah ,0fhmov bx ,ahmov si , offset tabmov sp , offset xmov di , offset xxxmov dx , byte ptr[bx+si]mov al, blmul dxmov [bx+di] ,axmov [sp+bx] , bxmov ah , 4chint 21hcode endsend start第⼆次实验顺序程序设计从键盘输⼊两个1位⼗进制数,求这两个数的和,并将结果显⽰在屏幕上data segment infor1 db 'please input the first data (<10):$'infor2 db 0ah,0dh,'please input the second data (<10):$'infor3 db 0ah,0dh,'the result is:$'data endscode segmentassume cs:code,ds:datastart:mov ax,datamov ds,axmov dx,offset infor1mov ah,9int 21hmov ah,1int 21hand al,0fhmov ah,00000000000000000000mov bl,almov dx,offset infor2int 21hmov ah,1int 21hand ax,000fhadd al,blaaaor ax,3030hpush axmov dx,offset infor3 mov ah,9int 21hpop axmov dl,ahpush axmov ah,2int 21hpop axmov dl,almov ah,2int 21hmov ah,4chint 21hcode endsend startresult db 0ah,0dh,'cube result is :$' data endscode segmentassume cs:code,ds:datastart:mov ax,datamov ds,axmov dx,offset numbermov ah,9int 21hmov ah,1int 21hand ax,000fhmov bx,axmul blmul blmov cl,64hdiv clor al,30hpush axmov dx,offset resultmov ah,9int 21hpop axmov dl,alpush axmov ah,2int 21hpop axmov cl,0ahmov al,ahmov ah,0div clor ax,3030hpush axmov ah,2int 21hpop axmov dl,ahmov ah,2int 21hmov ah,4chint 21hcode endsend start分⽀程序设计1.某程序可从键盘接收命令(0-5),分别专项6个⼦程序,⼦程序⼊⼝地址分别为p0-p5,编制程序,⽤跳转表实现分⽀结构程序设计,记录实验结果data segmentmessage db 'please input key (0-5):$'crmessage db 0ah,0dh,'$'errormessage db 'you hit error key !',0ah,0dhdb 'please try again(0-5):$'message0 db 'you hit the key 0',0ah,0dh,'$'message1 db 'you hit the key 1',0ah,0dh,'$'message2 db 'you hit the key 2',0ah,0dh,'$'message3 db 'you hit the key 3',0ah,0dh,'$'message4 db 'you hit the key 4',0ah,0dh,'$'message5 db 'you hit the key 5',0ah,0dh,'$'code segmentassume cs:code,ds:data start:mov ax,datamov ds,axmov ah,9lea dx,messageint 21htryagain:mov ah,1int 21hmov bl,almov ah,9mov dx,offset crmessage int 21hcmp bl,'0'jz key0cmp bl,'1'jz key1cmp bl,'2'jz key2cmp bl,'3'jz key3cmp bl,'4'jz key4cmp bl,'5'jz key5error:mov ah,9mov dx,offset errormessage int 21hjmp tryagainkey0:lea dx,message0mov ah,9int 21hjmp exitkey1:lea dx,message1 mov ah,9int 21hjmp exitkey2:lea dx,message2 mov ah,9int 21hjmp exitkey3:lea dx,message3 mov ah,9int 21hjmp exitkey4:lea dx,message4 mov ah,9int 21hjmp exitkey5:lea dx,message5 mov ah,9int 21hexit:mov ah,4chint 21hcode endsend start第三次实验循环程序设计1.从⾃然数1开始累加,直到累加和⼤于1000为⽌,统计被累加的⾃然数的个数,并把统计的个数送⼊N单元,把累加和送⼊SUM单元。
南邮微机原理实验报告
微机原理硬件实验报告实验一 I/O 地址译码一、实验目的1、掌握 I/O 地址译码电路的工作原理。
二、实验内容及原理实验电路如图1-1所示,其中74LS74为D触发器,可直接使用实验台上数字电路实验区的D触发器,74LS138为地址译码器。
译码输出端Y0~Y7在实验台上“I/O地址“输出端引出,每个输出端包含8个地址,Y0:280H~287H,Y1:288H~28FH,…… 当CPU执行I/O指令且地址在280H~2BFH范围内,译码器选中,必有一根译码线输出负脉冲。
根据图1-1,我们可以确定A9~A3,AEN,IOW,IOR的值。
要使译码电路正常工作,必须使处于低电平有效。
因而可以确定A6=A8=0,A7=A9=1,AEN=0,IOW与IOR不可同时为1(即不能同时读写)。
当要从Y4输出低脉冲时,A5A4A3=100;从Y5输出时,A5A4A3=101。
综上所述,Y4输出时,应设置值2A0H(A9~A0=1010100000B);Y5输出时,应设置值2A8H(A9~A0=1010101000B)。
执行下面两条指令MOV DX,2A0HOUT DX,AL(或IN AL,DX)Y4输出一个负脉冲到D触发器的CLK上,因为D=1(接了高电平+5V),所以Q被赋值为1.延时一段时间(delay);执行下面两条指令;MOV DX,2A8HOUT DX,AL(或IN AL,DX)Y5输出一个负脉冲到CD,D触发器被复位,Q=0。
再延时一段时间,然后循环上述步骤。
利用这两个个负脉冲控制L7闪烁发光(亮、灭、亮、灭、……),时间间隔通过软件延时实现。
三、硬件接线图与软件流程图硬件接线:Y4/IO 地址接 CLK/D 触发器Y5/IO地址接 C/D触发器D/D触发器接 SD/D角发器接+5VQ/D触发器接 L7(LED灯)或逻辑笔软件流程图:四、源程序OUTPORT1 EQU 2A0H ;预置,方便修改OUTPORT2 EQU 2A8HCODE SEGMENTASSUME CS:CODESTART: MOV DX,OUTPORT1 ;根据原理图设定A9~A0 的值(Y4)OUT DX,AL ;让译码器Y4 口输出一个负脉冲CALL DELAY ;延时MOV DX,OUTPORT2 ;根据原理图设定A9~A0 的值(Y5)OUT DX,AL ;让译码器Y5 口输出一个负脉冲CALL DELAY ;延时MOV AH,1 ;调用1 号DOS 功能,等待键盘输入INT 16HJE START ;若有键盘输入则退出程序,否继续循环MOV AH,4CHINT 21HDELAY PROC NEAR ;延时子程序MOV BX,200 ;时延长度 (200)A: MOV CX,0B: LOOP BDEC BXJN E ARETDELAY ENDPCODE ENDSEND START五、实验结果LED 灯处于闪烁状态,键盘有输入后,成功退出。
南理工微机实验报告
南理工微机实验报告篇一:微机实验报告实验1 基本操作实验一、实验目的(1)掌握TD- PITC 80X86微机原理及接口技术教学实验系统的操作,熟悉Wmd86联机集成开发调试软件的操作环境。
(2)掌握使用运算指令类编程及调试方法。
(3)掌握运算类指令对各状态标志位的影响及其测试方法。
(4)学习使用软件监视变量的方法。
二、实验设备PC机一台,TD- PITC实验装置一套三、实验内容及步骤通过对样例程序的操作,学会使用在TD- PITC环境下,如何输入汇编语言程序,如何进行汇编语言源程序的汇编、连接、下载和运行;在调试程序的学习过程中,应学会:如何设置断点,如何单步运行程序,如何连续运行程序,怎样查看寄存器的内容,怎样修改寄存器的内容,怎样查看存储器的内容,怎样修改存储器的内容实验内容一——BCD码转换为二进制实验内容将四个二位十进制数的BCD码存放于3500H起始的内存单元中,将转换的二进制数存入3501H起始的内存单元中,自行绘制流程图并编写程序。
实验步骤:1)运行Wmd86软件,进入Wmd86集成开发环境。
2)根据程序设计使用语言的不同,通过在“设置”下拉列表来选择需要使用的语言。
语言选择后,下次再启动软件,语言环境保持这次的修改不变。
在这里我们选择汇编语言。
3)语言选择后,点击新建来新建一个文档。
默认文件名为Wmd861.4)编写实验程序。
并保存,此时系统会提示输入新的文件名,输完后点击保存。
实验程序清单如下:SSTACK SEGMENT STACKDW 64 DUPSSTACK ENDSCODE SEGMENTASSUME CS:CODESTART:XOR AX,AXMOV SI 3500HMOV DI 3510HA1:MOVE AL,[SI]ADD AL,ALMOV BL,ALADD AL,ALADD AL,ALADD AL,BLINC SIADD AL,[SI]MOV [DI],ALINC SIINC DILOOP A1A2:JMP A2CODE ENDSEND START5)点击编译文件,若程序无误,再点击进行连接。
微机原理与接口技术实验报告
微机原理与接口技术实验报告
本次实验是关于微机原理与接口技术的实验报告,通过本次实验,我们将深入
了解微机原理与接口技术的相关知识,并通过实际操作来加深对这些知识的理解和掌握。
实验一,微机原理。
在本次实验中,我们首先学习了微机的基本原理,包括微机的组成结构、工作
原理和基本功能。
通过实际操作,我们了解了微机的主要组成部分,如中央处理器(CPU)、内存、输入输出设备等,并学习了它们之间的工作原理和相互配合关系。
同时,我们还学习了微机的基本指令系统和数据传输方式,加深了对微机工作原理的理解。
实验二,接口技术。
在接口技术的实验中,我们学习了微机与外部设备之间的接口技术,包括并行
接口、串行接口和通用接口等。
我们通过实际操作,了解了这些接口技术的工作原理和应用场景,学会了如何通过接口技术实现微机与外部设备的数据交换和通信。
实验三,实验综合。
在本次实验的最后,我们进行了一个综合实验,通过实际操作来综合运用微机
原理和接口技术的知识,实现一个具体的功能。
通过这个实验,我们加深了对微机原理与接口技术的理解,掌握了如何将理论知识应用到实际操作中。
总结。
通过本次实验,我们深入学习了微机原理与接口技术的相关知识,并通过实际
操作加深了对这些知识的理解和掌握。
微机原理与接口技术作为计算机科学与技术的基础知识,对我们今后的学习和工作都具有重要意义。
希望通过这次实验,能够对大家的学习和工作有所帮助,并为今后的学习打下坚实的基础。
以上就是本次实验的实验报告,希望对大家有所帮助。
感谢大家的阅读!。
微机原理的实验报告
一、实验目的1. 理解微机的基本组成和各部件的功能;2. 掌握微机的工作原理和指令系统;3. 熟悉汇编语言程序设计的基本方法;4. 提高动手能力和实际操作技能。
二、实验内容1. 微机系统组成实验(1)实验目的:了解微机的基本组成和各部件的功能。
(2)实验内容:观察并记录微机系统的各个部件,如CPU、内存、硬盘、主板等,并了解它们的功能。
(3)实验步骤:①观察微机系统各个部件的连接情况;②了解各个部件的功能和作用;③分析微机系统的整体结构。
2. 微机工作原理实验(1)实验目的:掌握微机的工作原理。
(2)实验内容:观察并记录微机工作过程中的各个阶段,如指令的取指、译码、执行等。
(3)实验步骤:①观察微机工作过程中的各个阶段;②了解各个阶段的功能和作用;③分析微机工作原理。
3. 指令系统实验(1)实验目的:熟悉汇编语言指令系统。
(2)实验内容:学习汇编语言的基本指令,如数据传送指令、算术运算指令、逻辑运算指令等。
(3)实验步骤:①学习汇编语言的基本指令;②编写简单的汇编语言程序,实现数据传送、算术运算、逻辑运算等功能;③调试程序,观察程序运行结果。
4. 汇编语言程序设计实验(1)实验目的:提高汇编语言程序设计能力。
(2)实验内容:编写一个汇编语言程序,实现以下功能:①计算两个数的和;②判断一个数是否为偶数;③输出程序运行结果。
(3)实验步骤:①编写汇编语言程序,实现上述功能;②调试程序,观察程序运行结果;③分析程序运行过程,确保程序正确性。
三、实验结果与分析1. 微机系统组成实验:通过观察和记录微机系统的各个部件,了解了微机的基本组成和各部件的功能。
2. 微机工作原理实验:通过观察微机工作过程中的各个阶段,掌握了微机的工作原理。
3. 指令系统实验:通过学习汇编语言的基本指令,熟悉了汇编语言指令系统。
4. 汇编语言程序设计实验:通过编写汇编语言程序,提高了汇编语言程序设计能力。
四、实验心得通过本次微机原理实验,我对微机的基本组成、工作原理和指令系统有了更深入的了解。
微机 实验一
实验一汇编语言程序上机过程
一、实验目的
1.掌握EDIT、MASM、LINK 等软件工具的使用。
2.掌握在计算机上建立、汇编、连接、调试及运行程序的方法。
二、实验内容
1.将DISP 单元中存放的一压缩BCD码内容显示出来。
(如果能显示为(DISP)=XXH 更好)
2.将字节变量DISP 的内容(00H-FFH 任意值)显示出来。
(如果能显示为(DISP)=XXH 更好)
3.编一程序连续显示两个字符串(内容自选,第一串比第二串长,能更好检验结果),通过实验理解回
车、换行的区别。
(通过在两个字符串间1无回车、换行2仅回车3仅换行4回车+换行验证,分别
记录不同情况的结果)
三、实验准备
1.了解实验操作方法,准备好实验程序和数据。
2.记录汇编、连接过程产生的错误及解决办法,设置相关的出错情况,查看汇编结果;3.记录运行结果,更改数据再运行,记录结果。
四、实验报告
(进实验室前必须准备好实验报告,编写好实验程序,在每个实验内容之后留一定空间用于记录结果,实验过程中注意记录汇编出错信息及分析出错原因)
(1)将DISP 单元中存放的一压缩BCD码内容显示出来。
程序:
实验结果记录:
(2)将字节变量DISP 的内容(00H-FFH 任意值)显示出来。
程序:
实验结果记录:
(3)编一程序连续显示两个字符串(内容自选),通过实验理解回车、换行的区别。
程序:
实验结果记录:
五.实验总结。
微机原理实验报告
微机原理实验报告实验⼀DEBUG 调试实验类型:实验课时:指导教师:时间:2013 年⽉⽇课次:第节教学周次:第周实验分室:实验台号:实验员:⼀、实验⽬的1.练习使⽤DEBUG,调试简单汇编程序。
⼆、实验要求1.掌握DEBUG的使⽤,调试程序。
2.读懂程序中各条指令,说明程序功能。
三、实验内容1.启动DEBUG,⽤A命令输⼊并汇编下列程序段。
100 MOV SI,200103 MOV CX,10106 MOV AL,0108 MOV [SI ],AL10A INC SI10B INC AL10D DEC CX10E JNZ 108110 INT 3四、实验结果及分析实验⼆简单汇编语⾔设计实验类型:实验课时:指导教师:时间: 2012 年⽉⽇课次:第节教学周次:第周实验分室:实验台号:实验员:⼀、实验⽬的1.巩固DEBUG及宏汇编的使⽤。
2.加深对指令的理解。
⼆、实验要求1.设堆栈指针SP=2000H,(AX)=3000H,(BX)=5000H。
请编⼀程序将AX的内容和BX的内容进⾏交换。
请⽤堆栈作为两寄存器交换内容的中间存储单元,⽤DEBUG调试程序进⾏汇编与调试。
2.设DS=当前段指地址,(BX)=0300H,(SI)=0002H,请⽤DEBUG的命令将存储器偏移地址300H~304H连续单元顺序装⼊0AH、0BH、0CH、0DH、0EH。
在DEBUG状态下送⼊下⾯程序,并⽤单步执⾏的⽅法,分析每条指令源地址的形成过程?当数据传送完毕时,AX中的内容是什么?程序清单如下:MOV AX,BXMOV AX,0304HMOV AX,[0304H]MOV AX,[BX]MOV AX,0001[BX]MOV AX,[BX][SI]MOV AX,0001[BX][SI]HLT3.设(AX)=0002H,编⼀个程序段将AX的内容乘10,要求⽤移位的⽅法完成。
三、思想描述实验内容1将两个寄存器的内容进⾏交换时,必须有⼀个中间寄存器才能进⾏内容的交换,如果⽤堆栈做为中间存储单元,必须遵循先进后出的原则。
微机系统实验报告
LENS EQU $-BUF
MESG DB 'THE RECEIVED CHARACTERS:','$'
DATA ENDS
CODE SEGMENT USE16
ASSUME CS:CODE,DS:DATA
BEG:
MOV AX,DATA
MOV DS,AX
CALL I8250
实验报告
(2016--2017学年第1学期)
课程名称
微型计算机原理与接口技术
实验名称(1)排除语法错误(2)测试微机系统串行口
实验时间
2016
年
12
月
11
日
指导单位
南京邮电大学
指导教师
李爱群
学生姓名鞠黄杰班级学号B14020230
学院电子科学与工程专业电子科学与技术
实验报告(一)
实验名称
排除语法错误
END BEG
四、实验小结(包括问题和解决方法、心得体会、意见与建议等)
通过这次实验我对串行通信的基本知识,8251、8255的结构更加的了解了也加深对串行接口的控制端口、数据端口工作方式的理解。
五、指导教师评语
成绩
批阅人
李爱群
日期
MOV BX,OFFSET NUM
MOV CH,0
MOV CL,9
AGAIN: CMP BYTE PTR [BX] ,0
JG NEXT1
INC AB
CMP BYTE PTR [BX], CH
JG NEXT1
MOV CH,BYTE PTR [BX]
NEXT1: INC BYTE PTR BX
微机控制实验报告
实验一采样与保持仿真实验一、实验目的与要求1、了解数/模转换器的零阶保持器作用。
2、验证零阶保持器在控制系统中的作用。
3、验证采样周期对系统稳定性的影响。
4、学习控制系统计算机辅助设计软件MATLAB及其仿真环境SIMULINK的使用。
二、仿真软硬件环境PC机,MATLAB R2009。
三、实验原理其中零阶保持器描述回路的采样功能和D/A转换器的保持功能。
四、SIMULINK仿真结构图+ R五、仿真实验记录六、思考题1、在微机控制系统中采样周期T的选择应注意哪些方面?答:采样周期取越小值,复现精度就越高,也就是说“越真”。
若采样周期太长。
计算机控制系统受到的干扰就得不到及时克服而带来很大误差,使系统动态品质恶化,甚至导致计算机控制系统的不稳定。
2、若模拟量在A/D转换时变化较大,是否要加保持器?为什么?答:从启动信号转换到转换结束的数字输出,经过一定时间,而模拟量转换期间,要求模拟量信号保持不变,所以必须用采样保持器.该电路具有两个功能:采样跟踪输入信号;保持暂停跟踪输入信号,保持已采集的输入信号,确保在A/D转换期间保持输入信号不变。
在A/D转换期间,为了使输入信号不变,保持在开始转换时的值,通常要采用一个采样保持电路。
对于MCS-96单片机的A/D转换器,启动转换实际上是把采样开关接通,进行采样,过一段时间后,开关断开,采样电路进入保持模式,才是A/D真正开始转换。
3、D/A转换器为什么会具有零阶保持器的作用?答:在这种结构中每一个通道都有一个D/A转换器。
D/A转换器是按照采样周期T对控制器输出的数字量进行D/A转换的,但由于D/A转换器具有数据输入锁存功能,它能够在接收下一组数字量之前,一直保持前一组数字量不变,因而D/A转换器的输出模拟量,能够在一个采样周期内保持不变,也就是说,D/A转换器本身就具有零阶保持器的功能。
4、计算机控制系统模拟量输出通道中若无零阶保持器会出现什么问题?答:模拟量输出通道中要有输出保持器,这是因为计算机控制是分时的,每个输出回路只能周期地在一个时间片上得到输出信号,即这时执行部件得到的是时间上离散的模拟信号,而实际的执行部件却要求连续的模拟信号,因此为了使执行部件在两个输出信号的间隔时间内仍然能得到输出信号,就必须有输出保持器,通过它将前一采样控制时刻的输出信号保持下来,直到下一个采样控制时刻到来,重新得到新的输出信号计算机控制系统中通常采用零阶保持器,即前一采样时刻的输出值原封不动的(理想化的)保持到下一采样时刻到来。
微机原理与接口技术实验报告
微机原理与接口技术实验报告实验一,微机原理实验。
1. 实验目的。
本实验旨在通过对微机原理的实验,加深学生对微机原理相关知识的理解,提高学生的动手能力和实验技能。
2. 实验内容。
本实验主要包括微机原理的基本知识、微处理器的结构和功能、微机系统的总线结构、存储器与I/O接口。
3. 实验步骤。
(1)了解微机原理的基本知识,包括微处理器的分类、功能和工作原理。
(2)学习微机系统的总线结构,掌握总线的分类、功能和工作原理。
(3)了解存储器与I/O接口的基本概念和工作原理。
(4)进行实际操作,通过实验板进行微机原理实验,加深对微机原理知识的理解。
4. 实验结果。
通过本次实验,我深刻理解了微机原理的基本知识,掌握了微处理器的结构和功能,了解了微机系统的总线结构,以及存储器与I/O接口的工作原理。
通过实际操作,我对微机原理有了更深入的认识,提高了自己的动手能力和实验技能。
实验二,接口技术实验。
1. 实验目的。
本实验旨在通过对接口技术的实验,加深学生对接口技术相关知识的理解,提高学生的动手能力和实验技能。
2. 实验内容。
本实验主要包括接口技术的基本知识、接口电路的设计与调试、接口技术在实际应用中的作用。
3. 实验步骤。
(1)了解接口技术的基本知识,包括接口的分类、功能和设计原则。
(2)学习接口电路的设计与调试,掌握接口电路设计的基本方法和调试技巧。
(3)了解接口技术在实际应用中的作用,包括各种接口的应用场景和实际案例。
(4)进行实际操作,通过实验板进行接口技术实验,加深对接口技术知识的理解。
4. 实验结果。
通过本次实验,我深刻理解了接口技术的基本知识,掌握了接口电路的设计与调试方法,了解了接口技术在实际应用中的作用。
通过实际操作,我对接口技术有了更深入的认识,提高了自己的动手能力和实验技能。
总结。
通过微机原理与接口技术的实验,我对微机原理和接口技术有了更深入的理解,提高了自己的动手能力和实验技能。
希望通过今后的学习和实践,能够更加深入地掌握微机原理与接口技术的知识,为将来的工作和研究打下坚实的基础。
微机原理及接口技术-小灯闪烁仿真实验实验报告
实验报告
课程名称微机原理及接口技术
实验名称实验报告(一):小灯闪烁仿真实验
实验目标:利用Keil的仿真实验环境,编程实现使连接到P1.0引脚的小灯亮灭闪烁。
请图文结合详细描述实验流程与实验结果,给出带注释的源代码以及实验结论等。
1.实验流程
·新建一个工程项目文件,并取名为“led闪烁”,同时选择目标器件AT89C51。
由于是汇编语言,故而选择“否”
·将文件添加到项目中并键入程序
创建文件,保存为“led闪烁.asm”,并将文件添加到项目中。
将程序键入。
·为工程项目设置软硬件调试环境并生成.hex文件。
·程序文件的编译·软件仿真、调试
在调试窗口调试,观察P1观察口。
运行程序可观察到P1窗口闪烁变化。
2. 实验结果
·编译结果
·P1.0引脚的小灯亮灭闪烁结果
3. 带注释的源代码
4. 实验结论、建议和意见
实验结论:
利用Keil的仿真实验环境,可以通过设置延时来编程实现并观察到P1.0引脚的小灯亮。
微机实验报告
实验1 基本操作实验一、实验目的(1)掌握TD- PITC 80X86微机原理及接口技术教学实验系统的操作,熟悉Wmd86联机集成开发调试软件的操作环境。
(2)掌握使用运算指令类编程及调试方法。
(3)掌握运算类指令对各状态标志位的影响及其测试方法。
(4)学习使用软件监视变量的方法。
二、实验设备PC机一台,TD- PITC实验装置一套三、实验内容及步骤通过对样例程序的操作,学会使用在TD- PITC环境下,如何输入汇编语言程序,如何进行汇编语言源程序的汇编、连接、下载和运行;在调试程序的学习过程中,应学会:如何设置断点,如何单步运行程序,如何连续运行程序,怎样查看寄存器的内容,怎样修改寄存器的内容,怎样查看存储器的内容,怎样修改存储器的内容3.1 实验内容一——BCD码转换为二进制实验内容将四个二位十进制数的BCD码存放于3500H起始的内存单元中,将转换的二进制数存入3501H起始的内存单元中,自行绘制流程图并编写程序。
实验步骤:1)运行Wmd86软件,进入Wmd86集成开发环境。
2)根据程序设计使用语言的不同,通过在“设置”下拉列表来选择需要使用的语言。
语言选择后,下次再启动软件,语言环境保持这次的修改不变。
在这里我们选择汇编语言。
3)语言选择后,点击新建来新建一个文档。
默认文件名为Wmd861.4)编写实验程序。
并保存,此时系统会提示输入新的文件名,输完后点击保存。
实验程序清单如下:SSTACK SEGMENT STACKDW 64 DUP(?)SSTACK ENDSCODE SEGMENTASSUME CS:CODESTART:XOR AX,AXMOV SI 3500HMOV DI 3510HA1:MOVE AL,[SI]ADD AL,ALMOV BL,ALADD AL,ALADD AL,ALADD AL,BLINC SIADD AL,[SI]MOV [DI],ALINC SIINC DILOOP A1A2:JMP A2CODE ENDSEND START5)点击编译文件,若程序无误,再点击进行连接。
微机原理实验报告
微机原理实验报告实验目的,通过本次实验,掌握微机原理的基本知识,了解微机系统的组成和工作原理,掌握微机系统的组装和调试方法。
实验一,微机系统组成及工作原理。
1.1 微机系统的组成。
微机系统由中央处理器(CPU)、内存、输入设备、输出设备和外部设备等组成。
其中,CPU是微机系统的核心部件,负责控制整个系统的运行。
1.2 微机系统的工作原理。
微机系统的工作原理是通过CPU对内存中的指令进行解释和执行,从而实现各种功能。
CPU通过总线与内存、输入输出设备进行数据传输和控制信号的交换,实现对整个系统的控制和管理。
实验二,微机系统的组装和调试。
2.1 微机系统的组装。
在组装微机系统时,首先要选择合适的主板、CPU、内存、硬盘等配件,然后按照正确的安装顺序和方法进行组装。
组装完成后,还需连接电源、显示器、键盘、鼠标等外部设备。
2.2 微机系统的调试。
组装完成后,需要对微机系统进行调试,检查各个部件是否连接正确,是否能够正常工作。
通过BIOS设置和操作系统的安装,完成对微机系统的调试和配置。
实验三,微机系统的应用。
3.1 微机系统的应用领域。
微机系统广泛应用于各个领域,如办公、教育、科研、娱乐等。
在办公领域,微机系统可以用于文字处理、表格制作、图像处理等;在教育领域,微机系统可以用于多媒体教学、网络教学等。
3.2 微机系统的发展趋势。
随着科技的不断发展,微机系统也在不断更新换代,性能不断提升,体积不断缩小,功耗不断降低。
未来,微机系统将更加智能化、便携化,成为人们生活、工作不可或缺的一部分。
结论,通过本次实验,我对微机原理有了更深入的了解,掌握了微机系统的组成和工作原理,了解了微机系统的组装和调试方法,对微机系统的应用和发展趋势也有了一定的认识。
这对我今后的学习和工作将有很大的帮助。
微机组装实验报告
微机组装实验报告一、实验目的本实验旨在通过实际操作,掌握微机组装的基本原理和方法,提高学生的动手能力和解决问题的能力。
二、实验器材和材料1. 主机板、CPU、内存条、硬盘、光驱、显示器等微机组装所需器材。
2. 螺丝刀、镊子、电线、散热片等组装工具。
三、实验步骤1. 安装主机板将主机板轻轻放置在干净的工作台上,然后将CPU插入主板的CPU插槽中,确保对齐无误。
接着,将散热片安装在CPU上,并使用螺丝固定好。
最后,将内存条、显卡等插入对应的插槽上,然后将主板固定在机箱内。
2. 连接电源和硬盘通过电线将电源连接到主板上,确保电源稳定。
然后将硬盘插入机箱内的硬盘托架上,并连接数据线和电源线。
3. 安装光驱将光驱插入机箱内的光驱托架上,然后连接数据线和电源线。
4. 连接显示器和鼠标、键盘将显示器的数据线插入显卡的接口上,确保连接牢固。
然后将鼠标、键盘等外设插入相应的USB接口上。
5. 连接电源并开机测试将电源线插入主机电源插座,并打开电源开关。
此时主机开始供电,可以通过按下电源开机按钮启动计算机。
在开机过程中,观察主板上的指示灯是否正常亮起,显示器是否正常显示。
如果出现问题,需要检查硬件连接是否正确。
四、实验注意事项1. 在组装过程中要保持工作台整洁,避免静电对电子元件的损坏。
2. 组装过程中要小心操作,确保各元件插槽间的对齐和连接正确。
3. 连接电源时,必须确保电源开关处于关闭状态,避免触电事故。
4. 启动计算机前,应检查各硬件设备的连接是否牢固,以及电源线的连接是否正确。
五、实验结果与分析经过以上的实验步骤,我们成功地组装了一台微机。
在启动计算机后,我们观察到主板上的指示灯正常亮起,显示器也正常显示。
这表明我们的组装工作是成功的。
六、实验心得通过本次微机组装实验,我对微机的组装原理和方法有了更深入的了解。
在实际操作中,我遇到了一些问题,但通过仔细观察和耐心解决,最终成功地完成了组装。
这次实验让我体会到了动手实践的重要性,同时也提高了我解决问题的能力。
微机实验排序实验报告
一、实验目的1. 熟悉排序算法的基本原理和实现方法;2. 掌握冒泡排序、选择排序、插入排序等常用排序算法;3. 通过实验,加深对排序算法的理解,提高编程能力。
二、实验环境1. 操作系统:Windows 102. 编程语言:C++3. 开发环境:Visual Studio 2019三、实验内容1. 冒泡排序2. 选择排序3. 插入排序四、实验原理1. 冒泡排序:冒泡排序是一种简单的排序算法,它重复地遍历待排序的序列,比较相邻的元素,如果它们的顺序错误就把它们交换过来。
遍历序列的工作是重复地进行,直到没有再需要交换,也就是说该序列已经排序完成。
2. 选择排序:选择排序是一种简单直观的排序算法。
它的工作原理是:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
以此类推,直到所有元素均排序完毕。
3. 插入排序:插入排序是一种简单直观的排序算法。
它的工作原理是:将一个记录插入到已经排好序的有序表中,从而得到一个新的、记录数增加1的有序表。
对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。
五、实验步骤1. 冒泡排序(1)定义一个函数,用于实现冒泡排序算法;(2)在主函数中,定义一个整数数组,并对其进行初始化;(3)调用冒泡排序函数,对数组进行排序;(4)打印排序后的数组。
2. 选择排序(1)定义一个函数,用于实现选择排序算法;(2)在主函数中,定义一个整数数组,并对其进行初始化;(3)调用选择排序函数,对数组进行排序;(4)打印排序后的数组。
3. 插入排序(1)定义一个函数,用于实现插入排序算法;(2)在主函数中,定义一个整数数组,并对其进行初始化;(3)调用插入排序函数,对数组进行排序;(4)打印排序后的数组。
六、实验结果与分析1. 冒泡排序实验结果:```原始数组:5 3 8 6 2排序后数组:2 3 5 6 8```分析:冒泡排序在最好情况下(已排序)的时间复杂度为O(n),在平均和最坏情况下(逆序)的时间复杂度为O(n^2)。
微机原理实验报告
微机原理实验报告微机原理实验报告班级:自动化72组员梁慕佳 07054031张乐 07054033张林鹏 07054034实验一:8255 并行接口实验1 实验目的1. 学习并掌握8255 的工作方式及其应用;2. 掌握8255 典型应用电路的接法。
2 实验设备PC机一台,TD-PITE 实验装置一套。
3 实验内容1. 基本输入输出实验。
编写程序,使8255 的A口为输入,B口为输出,完成拨动开关到数据灯的数据传输。
要求只要开关拨动,数据灯的显示就发生相应改变。
2. 流水灯显示实验。
编写程序,使8255 的A口和B口均为输出,数据灯D7~D0由左向右,每次仅亮一个灯,循环显示,D15~D8与D7~D0 正相反,由右向左,每次仅点亮一个灯,循环显示。
4 实验原理并行接口是以数据的字节为单位与I/O 设备或被控制对象之间传递信息。
CPU和接口之间的数据传送总是并行的,即可以同时传递8 位、16 位或32 位等。
8255可编程外围接口芯片是Intel公司生产的通用并行I/O 接口芯片,它具有A、B、C三个并行接口,用+5V单电源供电,能在以下三种方式下工作:方式0--基本输入/输出方式、方式1--选通输入/输出方式、方式2--双向选通工作方式。
8255的内部结构及引脚如图2-6-1 所示,8255工作方式控制字和C口按位置位/复位控制字格式如图2-6-2所示。
图2-6-1 8255内部结构及外部引脚图图2-6-2 8255控制字格式5 实验步骤1. 基本输入输出实验本实验使8255 端口A工作在方式0 并作为输入口,端口B工作在方式0 并作为输出口。
用一组开关信号接入端口A,端口B 输出线接至一组数据灯上,然后通过对8255 芯片编程来实现输入输出功能。
具体实验步骤如下述:(1)实验接线图如图2-6-3所示,按图连接实验线路图;(2)编写实验程序,经编译、连接无误后装入系统;(3)运行程序,改变拨动开关,同时观察LED 显示,验证程序功能。
微机实验报告
实验一I/O地址译码与交通灯控制实验一、实验目的1、掌握并行接口8253的基本原理2、掌握8253的编程方法二、实验内容如图所示,L7、L6、L5作为南北路口的交通灯与PC7、PC6、PC5相连,L2、L1、L0作为东西路口的交通灯与PC2、PC1、PC0相连。
编程使六个灯按交通变化规律燃灭。
三、编程分析1、8255地址分析:控制寄存器地址: 0C40BHA口地址: 04C408HC口地址: 04C40AH2、十字路口交通灯的变化规律要求(1)南北路口的绿灯、东西路口的红灯同时亮三秒;(2)南北路口的黄灯闪烁三次,同时东西路口的红灯继续亮;(3)南北路口的红灯、东西路口的绿灯同时亮三秒;(4)南北路口的红灯继续亮、同时东西路口的黄灯亮闪烁三次;(5)转(1)重复。
3、C口置数分析由于发光二极管是共阴极相连,所以若要其发亮应给高电平;黄灯闪烁是让其不断交替亮灭来实现;同时分析可知只要有绿灯亮,灯就会持续亮三秒,黄灯亮就会闪烁三次。
4、程序设计流程图四、汇编语言程序STACK1 SEGMENT STACKDB 100 DUP(0)STACK ENDSCODE SEGMENTASSUME CS:CODE, SS:STACK1 DY PROC NEARPUSH CXMOV AX, 0FFFFH ;延时程序MOV CX, 02FFFHL0:DEC AXJNZ L0LOOP L0POP CXPOP AXRETDY ENDPSTART: MOV DX, 0C40BHMOV AL, BOUT DX, ALMOV DX, 0C40AHMOV BL, 6H ;设置延迟3秒L1:MOV AL, 00100100B ;南北绿灯亮,东西红灯亮OUT DX, ALCALL DY ;调用延迟子程序DEC BLJNZ L1MOV BL, 4H ;设置第二次闪烁3次L2:MOV DX, 0C40AHMOV AL, 01000100B ; 南北黄灯亮,东西红灯亮OUT DX, ALCALL DYMOV AL, 00000100B ;南北黄灯灭,东西红灯亮,实现要求闪的功能 OUT DX,ALCALL DYJNZ L2MOV BL,6H ;第三次设置亮灭时间为3秒L3:MOV AL,B ; 南北黄灯亮,东西红灯亮OUT DX,ALCALL DYDEC BLJNZ L3MOV BL,4HL4:MOV AL,B ;南北红灯亮,东西黄灯亮OUT DX,ALCALL DYMOV AL,B ;南北红灯亮,东西黄灯灭,实现闪的功能OUT DX,ALCALL DYDEC BLJNZ L4MOV DL,0FFH ;判断是否有键按下,结束程序 MOV AH,06HINT 21HJZ START ;没有键按下,进入下一次循环 MOV AH,4CHINT 21HCODE ENDSEND START五、实验现象:红黄绿灯变化规律如下:南北路口的绿灯、东西路口的红灯同时亮3秒左右;南北路口的黄灯闪烁若干次,同时东西路口的红灯继续亮;南北路口的红灯、东西路口的绿灯同时亮3秒左右;南北路口的红灯继续亮,同时东西路口的黄灯闪烁若干次;依次重复。
微机原理与接口技术实验报告.
实验一、认识Tddebug集成操作软件一.实验内容(一)实验题目:数据传送实验1. 编程将数据段中的一个字符串传送到附加段中,并输出附加段中的目标字符串到屏幕上。
2. 修改此程序,采用字符串传送指令完成。
(二)实验目的:通过对该程序进行调试,查看程序段、数据段、附加段装入内存后的分配情况。
单步执行数据传送指令后,观察各个寄存器及数据区的内容。
(三)实验步骤:1. 运行Tddebug软件,选择Edit菜单编写实验程序2.使用Compile菜单中的Compile和Link对实验程序进行汇编、连接,生成执行文件。
3.使用Rmrun菜单中的Run运行程序,观察运行结果。
4.使用Rmrun菜单中的Debug调试程序,查看程序段、数据段、附加段装入内存后的分配情况。
单步执行数据传送指令后,观察各寄存器及数据区的内容。
过程如下:1)按F7单步执行,在代码区中有一个三角,表示正在执行的指令。
每一条指令的执行一定会使目标寄存器和状态寄存器发生变化,从相关窗口看结果。
2)检查内存数据区的内容,关键是找出用户程序的数据段和附加段:●方法1:在CPU窗口按Tab键使内存数据显示区成为活动区,按Ctrl+G键,输入:“DS或ES寄存器的值:偏移地址”,即可显示用户指定的数据区●方法2:选择菜单View| Dump,弹出内存数据显示窗口。
3) 查看执行结果:按Alt+F5,切换到用户窗口。
5.更改数据区中的数据,考察、调试程序的正确性。
二.分析设计思想,绘制实验原理图、流程图。
汇编语言程序的开发过程如图1.1所示,这个过程主要有编辑、编译、链接几个步骤构成。
三.程序清单及相关注释。
DDATA SEGMENT ;定义源数据段MSR DB "HELLO,WORLD!$"LEN EQU $- MSRDDATA ENDSEXDA SEGMENT ;定义附加数据段MSD D B LEN DUP(?)EXDA ENDSMYSTACK SEGMENT ;定义堆栈段STACK DW 20 DUP(?)MYSTACK ENDSCODE SEGMENT ;定义代码段ASSUME CS:CODE,DS:DDATA,ES:EXDASTART: MOV AX,DDATAMOV DS,AX ;装载数据段寄存器MOV AX,EXDAMOV ES,AX ;装载附加数据段寄存器MOV SI,OFFSET MSRMOV DI,OFFSET MSDMOV CX,LENMOV BX,0NEXT: MOV AL,MSR[BX] ;开始传输数据MOV ES:MSD[BX],ALINC BXLOOP NEXTPUSH ESPOP DS ;将附加段寄存器指向的段值赋给数据段寄存器MOV DX,OFFSET MSDMOV AH,9INT 21H ;显示字符串MOV AH,4CHINT 21H ;返回DOS状态CODE ENDSEND START四.实验结果并分析。
微机原理实验报告(杜姗姗,南京理工大学,朱红)
南京理工大学微机原理实验报告汇编语言练习及其应用专业:电子科学与技术专业班级:09042402姓名:阴盼强学号:0916120146阴盼强2012/5/22目录实验一系统认识实验 (1)实验二数码转换实验 (2)实验三显示程序实验 (4)实验四子程序设计实验 (5)实验五键盘扫描及显示设计实验 (8)实验六 8245定时/计数器 (10)实验七电子发声设计实验 (12)实验一系统认识实验一、实验目的(1)掌握TD系列微机原理及接口技术教学试验系统的操作,熟悉Wmd86联机集成开发调试软件的操作环境。
(2)掌握汇编语言中与数据有关的不同的寻址方式。
二、实验设备PC机一台,TD-PITE实验装置或TD-PITC装置一套。
三、实验内容编写实验程序,将数据段段地址为1000H,从3000H到3007H的八个字节存入到从3010H到301FH的16个存储单元里,每个字节连续存入两次。
四、实验步骤1、运行Wmd86软件,进入Wmd86集成开发系统。
2、新建文件,编写实验程序,保存。
3、编译程序无误,链接并加载程序,运行程序查看输出结果。
五、程序设计程序单如下:六、实验结果通过利用E命令编辑数据段的数据,如1000H~1007H:01,02,03,04,05,06,07,08,输出得到3010H~301FH:01,01,02,02,03,03,04,04,05,05,06,06,07,07,08,08。
可见,程序实现了所要求的功能。
实验二数码转换实验一.实验目的(1)掌握不同进制数及编码相互转换的程序设计方法,加深对数值转换的理解。
(2)熟悉程序调试的方法。
二、实验设备PC机一台,TD-PITE实验装置一套。
三、实验内容将ASCII码表示的十进制数转换成二进制数十进制数可以表示为:Dn×10n+Dn-1×10n-1+…+D0×100 =Di×10i 其中Di代表十进制数1、2、3…9、0。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《微机实验》报告实验名称 KeilC的使用与汇编语言上机操作指导教师刘小英专业班级中法1201 姓名肖洋学号 U3 联系电话一、任务要求1.掌握KeilC环境的使用1)字节拆分、合并:调试程序,观察相关寄存器和单元的内容。
2)数据块填充:调试程序,观察相关寄存器和单元的内容。
2. 编写两个十六位数的加法程序。
有两个十六位无符号数,分别存放在从20H和30H开始的数据区中,低八位先存,高八位在后,和存于R3(高八位)和R4(低八位),进位位存于R2。
二、设计思路1.字节拆分、合并程序:利用汇编语言中的 XCHD 和 SWAP 两个语句来实现将八位二进制数拆分为两个四位二进制数并分别存储于不同的存储空间的功能,BCD 码与 30H 相或(加上 30H)得到 ASCII 码。
将两个 ASCII 码和 0FH 相与(高四位清零)得到 BCD 码,利用 SWAP 语句将高位数放至高四位,将高位数和低位数相或可实现字节的合并。
2.数据块填充程序:将 R0 用作计数器,DPTR 用作片外数据指针,A 作为原始数据来源,依顺序在片外的存储单元内容填充数据。
利用循环语句来减少程序长度,并控制填充单元个数为片外 100H 个。
(通过 R0 的进位控制)3.两个十六位数加法程序:把第一个十六位无符号数的地八位和高八位分别存于 20H 和21H 中,把第二个十六位无符号数的地八位和高八位分别存于 30H 和 31H 中,对 20H 和30H 中的两个低八位进行 ADD 加法操作,结果存于 R4 中;然后对 21H 和 31H 中的两个高八位进行 ADDC 带进位的加法操作,结果存于 R3 中.然后将累加器 A 清零,并和#00H进行 ADDC 带进位的加法操作,结果产生进位数并存于 R2 中,程序结束。
三、资源分配1. 字节拆分、合并程序:片内 30H 单位存放原 BCD 码,31H 和 32H 存放拆分后的两个 ASCII 码,33H 存放合并后的 BCD 码。
2.数据块填充程序:R0 作为计数器,DPTR 作为数据指针,片外RAM空间从 7000H 开始填充。
3.两个十六位数加法程序:20H,21H: 第一个数的低八位和高八位 30H,31H:第二个数的低八位和高八位 R4:加法结果的低八位 R3:加法结果的高八位 R2:加法结果的进位四、流程图1.字节拆分、合并程序2.数据块填充程序3.两个十六进制数相加程序五、源代码 (含文件头说明、语句行注释)1.字节拆分、合并程序File name:Description: 1字节BCD 码转换为2字节ASCII2字节ASCII 码转化为1字节BCD 码Source used: 30H: BCD data31H, 32H :ASCII data31H, 32H ->33HORG 0000HLJMP MAINORG 0100H MAIN: MOV SP, #40H ;赋堆栈指针MOV 30H, #49H ;30H单元赋值MOV R0, #32H ;R0指针赋值MOV @R0, #0 ;32H单元清零MOV A, 30HXCHD A, @R0 ;拆分字节ORL 32H, #30H ;转换为ASCIISWAP AORL A, #30H ;转换为ASCIIMOV 31H, A ;结果存于31H单元MOV A, 31H ;从31H单元取值ANL A, #0FH ;转换为BCDSWAP AMOV 33H, A ;结果存于33H单元MOV A, 32H ;从32H单元取值 ANL A, #0FH ;转换为BCDORL 33H, A ;合并字节HERE: SJMP HERE ;踏步END2.数据块填充程序:将片外RAM 7000H-70FFH单元按一定规律填充File name:Source used: R0: 计数器DPTR: 片外数据指针ORG 0000HLJMP MAINORG 0100HMAIN: MOV SP,#40HFILL: CLR A ;A寄存器清零MOV R0, #00H ;设循环计数器MOV DPTR, #7000H ;设数据指针FILL1: MOVX @DPTR, A ;传送到片外RAMINC A ;A内容加1INC DPTR ;修改数据指针INC R0 ;修改循环计数器CJNE R0, #00H, FILL1 ;判断是否结束HERE: SJMP HERE ;原地踏步END3.两个十六位数加法程序:File name:Description:Source used:ORG 0000HLJMP MAINORG 0100HMAIN:CLR C ;进位清零MOV 20H,#11H ;赋值MOV 21H,#19HMOV 30H,#90HMOV 31H,#09HMOV R0,#20H ;置数据指针MOV R1,#30HMOV A,@R0 ;取第一个数低位ADD A,@R1 ;两位数低位相加MOV R4,A ;存“和”低位ADDC A,#00H ;处理地位相加进位INC R0 ;修改指针INC R1MOV A,@R0 ;取第一个数高位ADDC A,@R1 ;两数高位相加MOV R3,A ;存“和”高位CLR AADDC A,#00H ;处理高位相加进位MOV R2,A ;最终进位存于R2HERE: SJMP HERE ;原地踏步END六、程序测试方法与结果1.字节拆分、合并程序:测试方法:单步调试观察寄存器变量和片内RAM的存储空间。
结果如图:性能分析:该程序能很方便地实现将一个BCD码拆分为两个ASCII码以及将两个ASCII码合并成一个BCD码的功能。
2.数据块填充程序:测试方法:利用程序的运行和停止控制来观察最终的寄存器变量和片内RAM的存储空间。
结果如图:性能分析:从寄存器变量DPTR最后的取值(7100H)来看,该程序能实现片外RAM从7000H到70FFH的数据填充。
程序中利用R0从00H到FFH 的计数中产生的进位很巧妙地控制了循环的次数。
3.两个十六进制数相加测试方法:手动输入两个加数,运行程序,观察结果是否正确。
在调试过程中,跟踪A,R2,R3,R4的值,看是否与预期相同。
结果如图:结果:输入两个十六进制数为1911H和0990H,得出合数为22A1H,进位为0,各项指标均与预期相同,程序正确。
七、思考题1.怎样查看工作寄存器、SFR、片内RAM、片外RAM及程序代码空间内容Disassembly 窗口有何作用(1)选择Debug下的Start/Stop Debug Session,在界面的左侧会出先程序代码的空间地址内容(2)Disassembly窗口可以显示编译之后的汇编代码2. 字节拆分、合并还有哪些方法,举一例说明(1)字节拆分可以利用与运算ANL,例如将30H单元中的数据从中间拆分,低字节存于31H,高字节存于32H:MOV A, 30HANL A, #0FHMOV 31H, AMOV A,30HANL A, #F0HMOV 32H,A(2)合并字节可以利用或运算ORL,例如将31H单元中的数据和32H单元中的数据合并,结果存放于30H中:MOV A,31HSWAP AORL A,32HMOV 30H,A3. 若按递减1规律填充数据块,应如何修改程序修改后程序如下ORG 0000HLJMP MAINORG 0100HMAIN: MOV SP,#40HFILL: CLR A ;A寄存器清零MOV R0, #FFH ;设循环计数器MOV DPTR, #70FFH ;设数据指针FILL1: MOVX @DPTR, A ;传送到片外RAMDEC A ;A内容减1DEC DPTR ;修改数据指针DEC R0 ;修改循环计数器CJNE R0, #FFH, FILL1 ;判断是否结束HERE: SJMP HERE ;原地踏步END4.若从7020H单元开始,连续填充10个字节,应该如何修改程序ORG 0000HLJMP MAINORG 0100HMAIN: MOV SP, #40HFILL: CLR A ;A寄存器清零MOV R0, #00H ;设循环计数器 MOV DPTR, #7020H ;设数据指针FILL1: MOVX @DPTR, A ;传送到片外RAM INC A ;A内容加1INC DPTR ;修改数据指针 INC R0 ;修改循环计数器 CJNE R0, #10H, FILL1 ;判断是否结束HERE: SJMP HERE ;原地踏步END5. 若完成双字节BCD码加法,应如何修改程序ORG 0000HLJMP MAINORG 0100HMAIN: MOV SP, #40HMOV 20H, #0ABHMOV 21H, #99HMOV 30H, #0CDHMOV 31H, #0EFHMOV A, 20HADD A, 30HDA AMOV R4, AMOV A, 21HADDC A, 31H DA AMOV R3, ACLR AADDC A, #00H DA AMOV R2, ASJMP $END。