微机实验1(内存块的移动与清零)

合集下载

微机原理实验报告清零程序

微机原理实验报告清零程序

竭诚为您提供优质文档/双击可除微机原理实验报告清零程序篇一:微机原理实验报告微机原理与应用课程实验报告实验分工:报告人同组人实验时间:20XX.12.10课程设计一、题目要求(1)在数据段首址为0100h开始的内存区1按从大到小的顺序顺次存入二进制数15~0共16个字节的数据;(2)将上述源区内容传送到目的内存区2(首址为1100h)中;(3)检验上述传送过程是否正确,如有错误,在紧跟内存区2后的第一个字节开始写入AscII码“eRRoR”,否则写入“oK”。

(4)用冒泡法将上述内存区2的数据,按从小到大的次序重新排列,排列后存放在内存区3(开始地址为2100h)。

(5)将上述内存区2和内存区3的第100个数据分别乘以2,并转为bcD码,保存在各自存储区的末尾。

再将上述两个bcD码相乘,其结果保存在内存区1的末尾处。

二、实验程序框图三、程序代码codesegmentassumecs:codeDATA1db16dup(?)DATA2dbeRRoRDATA3dboK;在数据段首址为0100h开始的内存区1按从大到小的顺序顺次存入二进制数15~0共16个字节的数据start:movax,0100h;规定目标程序存放单元的偏移量movds,ax;数据段地址moves,axmovsi,offsetDATA1;偏移地址movcx,0010h;循环次数movbx,0100hmoval,ofhs1:movcs:[si],almov[bx],cs:[si]incsiincbxdecalloops1nop;将内存区1数据搬移到内存区2中movcx,16movsi,0100hmovbx,1100hs2:moval,[si]mov[bx],alincbxloops2nop;对比内存区1的数据与内存区2的数据是否相同mov cx,16movsi,0100hmovbx,1100hcomp:movax,[si]movdx,[bx]cmpax,dxjneerroincsiincbxloopcomp;数据如果都相同,说明上述传输过程正确movsi,offsetDATA3movdi,1110hmovbl,0movcx,2enteroK:movbl,cs:[si]mov[di],blincsiincdiloopenteroKnopjmps3;如果有一个数据不相同,说明上述传输过程不正确err:movsi,offsetDATA2movdi,1110hmovbl,0movcx,5entereRR:movbl,cs:[si]mov[di],blincdiloopentereRR;将内存区2数据搬移到内存区3中s3:movsi,1100hmovcx,0010hmovbx,2100hmoval,0movcx,16fil:moval,[si]mov[bx],alincsiincbxloopfilnop;用冒泡法将内存区3的数据按从小到大重新排列s4: movbl,0movcx,16movsi,2110hdecsideccxagain:moval,[si]cmpal,[si-1]jaenextxchgal,[si-1]mov[si],almovbl,1next:decsiloopagaincmpbl,0jnestart1nopmovsi,1109hmoval,[si]movcl,2mulcl;结果在al中movdx,0movbx,10divbxshlal,4addal,dl;把二进制数转换成bcD码mov[1112h],almovsi,2109hmoval,[si]movcl,2mulcl;结果在al中movdx,0movbx,10divbxshlal,4addal,dl;把二进制数转换成bcD码mov[2110h],al;两个bcD码相乘,其结果保存在内存区1的末尾处。

单片机实验报告

单片机实验报告

单片机实验报告实验一:存储器块清零或赋值一、实验目的1 熟悉存储器的读写方法,熟悉51汇编语言结构。

2 熟悉循环结构程序的编写。

3 熟悉编程环境和程序的调试。

二、实验内容指定存储器中某块的起始地址和长度,要求将其内容清零或赋值。

例如将4000H开始的10个字节内容清零或全部赋值为33H。

注意:1 文件不要用中文名称保存时不要用中文路径(目录),不要放在“桌面”上,源文件和工程要放在同一个文件夹下,文件名称和路径名称不要太长。

2 查看存储器菜单使用:窗口---数据窗口---XDATA 观察存储器内容3 查看SFR:窗口---CPU窗口查看CPU寄存器SFR4 单步执行:执行---单步执行(F8),每执行一步,查看每条语句涉及到的寄存器和存储器内容的变化结果,是否是指令所要得到的结果,如不是,检查错误原因,修改。

5利用多种执行方法和观察各种窗口调试程序,直至程序满意为止。

三、实验仪器微机、VW,WA VE6000编程环境软件,(单片机实验箱)Lab6000/Lab6000通用微控制器MCS51实验四、实验步骤1、新建工程文件。

(注意:文件不要用中文名称保存时不要用中文路径)2、编写程序。

3、运行和调试过程。

外部数据存储器(4000H为首地址的10个字节)中初始状态(随便赋值FFH):单步执行程序,观察SFR中外部地址指针的变化;全速执行程序,可以看到外部数据存储器已赋值33H:五、实验结果可以看到外部数据存储器已赋值33H:六、问题讨论本次实验能够清楚地了解存储器中数据的移动和赋值过程,通过单步执行,对于每一步的指令操作过程能够了解如何执行,查看每条语句涉及到的寄存器和存储器内容的变化结果。

同时,学习掌握汇编程序的编写和调试过程。

实验二:存储块移动一、实验目的1 熟悉51汇编语言程序结构。

2 熟悉循环结构程序的编写,进一步熟悉指令系统。

3 熟悉编程环境和程序的调试。

二、实验内容将指定源地址(3000H)和长度(10字节)的存储块移动到目的地址(3050H)。

实验1存储器块清零

实验1存储器块清零

实验一存储器块清零软件操作过程:新建文件→保存文件(汇编语言后缀.ASM、C语言后缀.C)→新建项目(出现3个对话框)→对话框1:加入模块文件(选择要加的文件)→对话框2:加入包含文件(头文件之类的,没有可以点取消)→对话框3:保存项目(输入项目名称,注意项目和加入的文件必须在同一个文件夹中)→打开相应的模块文件,输入程序→点击绿色“开始”按钮,运行检查错误修改,直到没有错误为止。

窗口:CPU窗口——特殊功能寄存器窗口、工作寄存器窗口数据窗口——DATA片内数据存储器XDAT片外数据存储器CODE程序存储器BIT 位存储区仿真器设置:点仿真器→仿真器设置→选择仿真(Lab2000p仿真)→选择仿真头(MCS51实验)→选择CPU(8031/8032)→选择是否使用软件模拟器→点击好请编写程序,将片内RAM 30H-4FH单元中的内容清零。

MOV R0,#30HMOV R1,#32L0:MOV @R0,#00HINC R0DJNZ R1,L0SJMP $请编写程序,将片内RAM 60H-7FH单元中的内容置为FEH。

MOV R0,#60HMOV R1,#32L0:MOV @R0,#0FEHINC R0DJNZ R1,L0SJMP $1、片外ram50h—7fh内容置为:fehMOV DPTR,#50HMOV R1,#48MOV A,#0feHL0:MOVX @DPTR,AINC DPTRDJNZ R1,L0SJMP $2、片内RAM 20H-4FH中内容置为(20h)=00h,(21h)=01h,(22h)=02h, ,(4fh)=2fh MOV A,#00HMOV R1,#20HMOV R0,#48MOV @R1,ALOOP: INC AINC R1MOV @R1,ADJNZ R0,LOOPEND。

单片机实验一片内外清零、数据块的传送

单片机实验一片内外清零、数据块的传送

单片机实验报告专业:电子信息工程班级:姓名:学号:指导教师:单片机实验报告实验项目名称:片内外清零、置位和数据块传送程序实验日期: 2010-10-27 实验成绩:实验评定标准:1)实验内容否完整A()B()C()2)实验结果分析是否正确A()B()C()3)实验报告是否按照规定格式A()B()C()一、实验目的1、掌握汇编语言中对芯片内外存储器的清零,置位。

2、掌握8031 内部RAM 和外部RAM 之间的数据传送方法;掌握这两部分RAM 存贮器的特点与应用,掌握各种数据传送方法。

二、实验内容及要求1、将片内从50H开始的连续30个地址内容清零;将片外7000H_79FFH单元内容清零;将片内从20H开始的连续30个地址内容设置为0FEH。

2、试编写将外部的数据存贮区6030~607FH 的内容写入外部RAM 3030~307H 中。

三、实验步骤1、片内外清零、置位打开Keil程序,执行菜单命令“Project”→“New Project ”创建“片内外清零置位”项目,并选择单片机型号为AT89C51。

执行菜单命令“File”→“New ”创建文件,输入源程序,保存为“片内外清零置位.A51”。

在“Project”栏的File项目管理窗口中右击文件组,选择“Add Files to Group ‘Source Group1’”将源程序“片内外清零置位.A51”添加到项目中。

执行菜单命令“Project”→Options for Target ‘Target 1’”,在弹出的对话框中选择“Output”选项卡,选中“Greate HEX File”。

执行菜单命令“Project”→“Build Target 1”,编译源程序。

如果编译成功,则在“Outp ut Window”窗口中显示没有错误,并创建了,“片内外清零置位. HEX”文件。

执行菜单命令“Debug”→“Start/Stop Debug Seesion”,按键F11键,单步运行程序。

实验一 存储器块清零

实验一   存储器块清零

实验一存储器块清零一、实验目的:1、掌握存储器读写方法;2、了解存储器的块操作方法。

二、实验设备:电脑和THGZ-1单片机.CPLD/FPGA综合开发实验装置三、实验说明:实验给出存储器的起始地址和长度,要求能将其内容清零。

通过实验了解单片机读写存储器的方法,了解单片机编程、调试方法。

四、实验内容及步骤1、推上左侧空气开关;2、启动计算机,打开伟福仿真软件 Keil Uvsion2,进入仿真环境,⑴、建立工程项目:点击主菜单 PROJEKT→NEW PROJECT→工程名 XXX.UV2(保存在桌面上)a、CPU选择:ATMEL公司→ AT89C51Copy Standrrd 8051 Startup Code……? 否⑵、进行仿真器的设置:打开 View →PROJECT WINDOW 界面,右键点击TARGET1 选择 OPTIONS FOR TARGET TARGET1b、目标机晶振选择:TARGET → XTAL → (24.0 改为 11.0592 MHZ)c、调试选项:DEBUG →⊙USE SIMULATOR⑶、创建程序文件:FILE→NEW FILE→在 TEXT 文本界面(英文输入状态)输入源程序START EQU 8000HORG 0000HAJMP MAINORG 0030HMAIN: MOV DPTR, #START ;起始地址MOV R0,#00H ;设置256字节计数值CLR ALOOP: MOVX @DPTR,AINC DPTR ;指向下一个地址DJNZ R0,LOOP ;计数值减一LJMP $END输入完毕,另存文件 SAVE AS名 XXX.ASM(保存在桌面上)⑷、添加程序到工程组:点开TARGET1→SOURCE GROUP →ADD FILES TO GROUP “SOURCE GROUP1”在文件类型窗口选择: ALL FILES在文件名窗口输入要调试的程序文件名 : 桌面: ???.ASM点击“ADD”键,并关闭此窗口⑸、查看源程序:双击 SOURCE GROUP 下的文件名 ???.ASM (SOURCE GROUP下只允许一个文件,其他用 REMOVE FILE FROM SOURCE GROUP 删去)打开XXX.ASM 源程序,阅读、理解、分析该程序。

实验1 存储器块清零程序

实验1  存储器块清零程序

实验1 存储器块清零程序一、实验要求指定存储器中某块的起始地址和长度,将其内容清零。

二、实验目的1、学习使用模拟软件,编辑简单程序;2、掌握存储器的读写方法;3、了解存储器块操作块操作方法三、实验内容1、实验步骤启动PC机,打开uVision2软件。

创建工程Project文件,然后创建main.c源程序,。

实现对数据块Da[10]的清零函数ClearDataZone:void ClearDataZone(unsigned char* Data,int n){}int main(){unsigned char Da[10]={0,1,2,3,4,5,6,7,8,9};ClearDataZone(Da,10);while(1);}2、对代码进行编译,编译无误后,进入Debug运行程序,打开数据窗口(DATA),点击暂停按钮,观察要清零的数据区是否被清零。

同时打开反汇编代码窗口,找出这段C代码用到的汇编指令有哪些?并对反汇编代码截图。

指令:MOV SJMP LJMP ORL CLR JNZ JZ LCALL DEC3、针对2中你看到的每一句汇编代码写出相应的含义,并标出。

C:0x011B 7808 MOV R0,#0x08含义:将0x08这个数据传送到R0寄存器中C:0x0138 12013D LCALL ClearDataZone(C:013D)含义:长调用指令,调用ClearDataZone函数C:0x013B 80FE SJMP C:013B含义:短转移指令C:0x0144 1D DEC R5含义:减1指令。

将R5寄存器中的数据减一C:0x0145 7001 JNZ C:0148含义:若不为0就跳转C:0x014A 6010 JZ C:015C含义:若为0就跳转C:0x0149 4C ORL A,R4含义:逻辑或指令。

将A和R4寄存器中的数据做或运算,所得结果放在R4中。

C:0x0156 E4 CLR A含义:清0指令四、实验总结懂得了实验里边一些汇编代码所包含的意思。

微机原理与接口技术-清零程序实验报告

微机原理与接口技术-清零程序实验报告

《微机原理与接口技术》课程实验报告
一、实验目的和要求
实验目的:掌握汇编语言设计和调试方式;
实验要求:通过本实验,掌握8051汇编程序设计以及仿真实验的流程及方法。

二、实验环境
DVCC单片机仿真实验系统独立工作以及连PC机。

三、实验内容及实施
【实验内容】把50H~5FH单元的内容清零。

【源程序】
【实验步骤】
DVCC仿真实验系统连PC机时
(1)连接好相应的实验线路;
(2)在闪动“P.”状态,按PCDBG键;
(3)在PC机处于在Win95/98软件平台下,单击DVCC图标;
(4)在系统设置选项中设定仿真模式应设定为内程序、外数据;
(5)根据屏幕提示进入51/96动态调试菜单;
(6)连接DVCC实验系统;
(7)装载目标文件;
(8)设置PC起始地址;
(9)从起始地址开始连续运行程序;
(10)调出外部数据窗口,检查50H~5FH单元的内容是否全部被清零。

四、实验结果
五、实验讨论
通过8051汇编程序的设计、编译及运行,调出外部数据窗口,我们可以观察到从50H~5FH单元的内容已经被全部清零。

刚开始我们并没有做到全部单元清零,后来通过不断地调试错误和运行,实现了实验目的。

通过本次实验,掌握了汇编语言的设计,实现了清零操作,并且熟悉了仿真实验系统的键盘操作以及基本仿真软件的使用。

单片机软件实验1清零实验

单片机软件实验1清零实验

单片机软件实验1-清零实验姓名:学号:班级:同组人:指导老师:报告日期:软件设计实验1:清零实验➢实验目的:掌握汇编语言设计和调试方法。

➢实验内容:使用AT89C52单片机对单片机内部RAM进行清零操作,实验内容如下:1.把 90H-AFH的内容置为#55H;2.把90H-9FH的内容清零。

➢实验问答:1.清零之后,90H-9FH的内容是什么?A0H-AFH的内容是什么?答:90H-9FH内容:00H;A0H-AFH:#55H2.累加器A、堆栈指针SP的初始状态是什么?答:累加器A:00H,堆栈指针SP:07H。

➢实验程序:================================================ $NOMOD51$INCLUDE (80C52.MCU);======================= ======================== ; DEFINITIONS;======================= ========================;======================= ======================== ; VARIABLES;======================= ========================;======================= ======================== ; RESET and INTERRUPT Loop:jmp Loop;======================= ======================== ENDVECTORS;======================= ========================; Reset Vectororg 0000hjmp Start;======================= ======================== ; CODE SEGMENT;======================= ========================org 0100hStart:MOV R0,#90HMOV R3,#20HLOOP1:MOV @R0,#55HINC R0DJNZ R3,LOOP1MOV R2,#10HMOV R1,#90HCLR0:MOV @R1,#00HINC R1DJNZ R2,CLR0; Write your codehere** 单个实验报告内容限制在两页之内,采用双面打印,所有报告统一装订;表头内容需要手工签写。

存储器块清零实验报告

存储器块清零实验报告

存储器块清零实验报告班级:11级计科班姓名:苏靖学号:1120070544 日期:2012-12-19一、实验目的:1、掌握存储器读写方法2、了解存储器的块操作方法.二、实验要求:设定从外部数据存储器4000h起始地址开始,将之后的256字节清零。

三、实验内容:1、写出本程序运行结果2、写出本程序调试过程三、使用试验的软件:keil。

四、试验器材:1、综合试验仪2、PC机五、试验内容:指定存储器中某块的起始地址和长度,要求能将其内容清零。

通过本实验,学生可以了解单片机读写存储器的读写方法,同时也可以了解单片机编程,调试方法。

如何将存储器块的内容置成某固定值(例全填充为0FFH)请同学们修改程序,完成此操作。

程序框图:六、试验步骤打开软件keil,建立工程文件—>project—>New project—>输入文件名(命名一个工程文件夹)—>选择单片机型号—>Atmel—>选择AT89c52型号,点确定。

然后新建文件,并命名—>输入程序保存(.asm或.c,对应汇编语言或C语言)添加目标文件,然后调试程序及理解:Org 0000hLjmp start1start1:Mov dptr,#3000h ;起始地址mov r2,#08h ;清零mov a, #00hloop:Movx @dptr, a ;指向下一个地址inc dptr ;记数减一djnz r2, loopSjmp $end然后启动仿真调试:最后把程序从PC机下载到综合试验仪里面,观察灯的闪烁情况。

七、试验中遇到的难题R0的地址以及程序代码的编写。

六、实验后的心得体会熟练掌握了存储器读写方法,了解了存储器的块操作方法,并对代码的编写有了更深的体会。

微机实验1(内存块的移动与清零)

微机实验1(内存块的移动与清零)
地址加 1
否 是否清除完 是 结束
1
2.内存块移动 1. 进入 Wave6000,输入程序,并检查,保存程序。 2.“编译”程序。 3. 在指令“jmp $”处设断点。 4. “全速执行”程序。 5. 在“数据窗口(MEMOREY) ”查看: a)0400H、0401H、0402H 三个单元的内容,记录并分析实验结果。 b) 分别查看 0400H、0500H 开始 256 个单元的内容,记录并分析实验结果。
3
djnz ljmp end
r7, Loop $
;r7 自减 1 并判断是否等于 0,若不等则跳转到 Loop
六、实验结果分析 该实验达到了预期效果,实现了内存块的清零与内存块;该两个寄存器存放 4000h ;由 0 开始递减,可执行 256 次
cjne r1, #0ffh, Goon1 ;判断 r1 是否为 0xff,若不是则跳转到 Goon1 inc r0 ;r0 自增 1 Goon1: inc r1 ;r1 自增 1
cjne r3, #0ffh, Goon2 ; 判断 r3 是否等于 0xff, 若不是则跳转到 Goon2 inc r2 ;r2 自增 1 Goon2: inc r3 ;r3 自增 1
设置块的源地址
设置块的目标地址
设置移动长度
从源地址取数
保存到目标地址中
源地址加 1

目标地址加 1
是否移动完 是 结束
2
五、实验原始程序 1. 存储器块清零 Block equ 4000h
mov dptr, #Block ; 起始地址 mov r0, #0 ; 清 256 字节 clr a Loop: movx @dptr, a inc dptr djnz r0, Loop ljmp end 2. 内存块移动 mov mov mov mov mov Loop: mov mov movx mov mov movx dph, r0 dpl, r1 ;将 3000h 赋给 dptr a, @dptr dph, r2 dpl, r3 ;将 4000h 赋给 dptr @dptr, a r0, #30h r1, #00h r2, #40h r3, #00h r7, #0 $ ; 指向下一个地址 ; 记数减一

实验一清零实验

实验一清零实验

实验一清零实验一、实验目的掌握汇编语言设计和调试方法,熟悉键盘操作。

二、实验内容把7000H~70FFH的内容清零。

三、实验程序框图四、实验步骤1、当DVCC单片机仿真实验系统独立工作时(1)将固化区EPROM中实验程序目标码传送到仿真RAM区,操作如下:输入0后按F1键,再输入0FFF后按F2键,再输入0后按EPMOV稍等,系统返回初始状态,显示“P.”。

(2)根据表2—1所示,通过键盘输入实验程序的起始地址0030H,再按执行键EXEC,表示连续运行该程序,稍侯,按RESET键退出运行;如果以单步运行程序,则输入0030后,按SETP键,按一次执行一条语句,直到执行到003CH为止,按MON键退出运行;如果以断点运行程序,则先输入003CH(断点地址),再按F1键,再输入0030(起始地址),然后按EXEC键执行程序,当执行到003CH时自动停下来,此时按MON键退出。

(3)用存贮器读写方法检查7000H~70FFH中的内容应全是00H。

2、当DVCC仿真实验系统联PC机时(1)在闪动“P.”状态,按PCDBG键;(2)在PC机处于在Win95/98软件平台下,单击DVCC图标。

(3)在“系统设置”选项中设定仿真模式为内程序、内数据。

对硬件实验4、5、6、7、8、9、12、15而言,仿真模式应设定为内程序、外数据。

(4)根据屏幕提示进入51/96动态调试菜单。

(5)联接DVCC实验系统(Ctrl+H)(6)装载目标文件(Ctrl+L)(7)设置PC起始地址(8)从起始地址开始连续运行程序(F9)或单步(F8)或断点运行程序(9)单步、断点运行完后,在存贮器窗口内检查7000H~70FFH中的内容是否全为00H一、思考:假使要把7000~70FFH中的内容改成FF,如何编制程序。

实验二拆字实验一、实验目的掌握汇编语言设计和调试方法。

二、实验内容把7000H的内容拆开,高位送7001H低位,低位送7002H低位。

微机原理实验指导书 (1)

微机原理实验指导书 (1)

实验一系统操作及程序调试举例1.实验目的学习并掌握实验系统的基本操作,为以后的实验打下基础。

2.实验设备DICE-8086B实验系统一台3.实验准备工作系统一经连好,检查无误后,就可以通电运行。

系统提供两种启动方式,即:系统自动完成后,显示器上会显示“>”提示符,等待键入操作命令。

4.实验内容及步骤(1)系统操作练习(一)要求:从3500内存单元开始建立0~15共16个数据。

程序流程图如下:实验步骤①输入与修改:在“﹥”提示符下键入A2000,此时显示器上将会显示程序的段地址CS和偏移地址IP(=2000H),接着就可以在光标处输入程序。

注:在输入过程中,若发现本行有错误,则可以按“ ”键删除并重新输入;若回车后系统提示“ERROR!”,则要在原地址指针处重新正确输入。

输入程序后可通过反汇编查看程序。

(U操作)②程序运行:在DICE-8086B实验系统上,程序的运行方式有单步、连续和断点运行几种方式。

可参考(T操作,G操作,GB操作等)③内存单元的修改与显示:用(D操作)可显示内存单元的内容,用(E操作)可修改内存单元的内容。

(分别参考前)。

④运行程序观察从3500H单元开始连续存放的16个数据为多少?任意修改AX的值,再运行程序,显示运行结果是否正确?流程图及参考程序如下:地址机器码助记符注释2000 BF 3500 MOV DI,3500 ;设数据区首址2003 B9 0010 MOV CX,0010 ;字节数送CX2006 B8 0000 MOV AX,00002009 9E SAHF200A 88 05 MOV B[DI],AL ;写入一字节200C 47 INC DI ;修改地址指针200D 40 INC AX ;修改数据200E 27 DAA ;十进制调整200F E2 F9 LOOP 200A ;未填完转移2011 CD 00 INT(2)系统操作练习(二)要求:将内存3500单元开始的0~15共16个数传递到3600单元开始的数据区中。

微机技术试验1存储器块清零

微机技术试验1存储器块清零

微机技术实验一1一、实验要求指定存储器中某块的起始地址和长度,要求能将其内容清零。

二、实验目的1.熟悉实验软件的运行环境和操作面板2.握存储器读写方法3.解存储器的块操作方法三、实验说明通过本实验,学生可以了解微机读写存储器的读写方法,同时也可以了解微机编程,调试方法。

如何将存储器块的内容置成某固定值(例全填充为0FFH)? 请学生修改程序,完成此操作。

四、程序框图1学生:李坤洪;学号:19720132203348;专业:电子信息科学与技术;年级:三五、 实验内容11 DS 0000H~0014H0FFH0000H~0014H55H13 BX 0000H 0000H 14 CX 0000H 0014H17 BX 0000H 0001H 0001H 55H0001H00H17 BX 0001H 0002H 18 CX 0013H 0012H ……15~18循环20次,每次DS 地址递增,BX 递增,CX 递减311 DS 0000H~0014H0FFH0000H~0014H30H13 BX 0000H 0000H 14 CX 0000H 0014H 环10000H30H0000H10H17 BX 0000H 0001H 环20001H 30H0001H10H17 BX 0001H 0002H 18 CX 0013H 0012H……15~18循环20次,每次DS 地址递增,BX 递增,CX 递减六、实验总结第一次实验的内容总体较为简单,代码已经具体给出,不需要自己再做编写,但是初次接触汇编语言的编译程序,很不熟练,因此开始时进度非常缓慢,并且汇编语言与以前学过的高级语言相比功能相对简单,并且面向的对象更为底层,直接针对具体的存储器、寄存器甚至某一存储单元,因而感觉会更为繁琐,但是细节上也更为直观。

微机原理实验报告软件实验1

微机原理实验报告软件实验1

一、实验目的1.掌握存储器读写方法2.了解存储器的块操作方法、实验原理存储器读写和块操作三、实验设备仪器及材料计算机,WAVE 6000软件data endscode segme ntassume cs:code, ds:datastart proc n earmov ax, datamov ds, axmov bx, offset Block ;起始地址movcx, 256 ; 清256字节Againmov [bx], byte ptr 0inc bx;地址+1Loop Agai n ;记数减一jmp $ ; 死循环code endsend start四、实验过程Sl.asm data segme nt Block db 256 dup(55h) 代码流程图(1)进入Wave6000,输入程序并检查,保存程序。

⑵“编译”程序。

(3) “全速执行”程序。

⑷“暂停”程序运行,在“数据窗口( MEMOREY )”查看0400H 起始的单元 内容,并记录。

(5)在指令“jmp $”处设断点。

“全速执行”程序。

⑹ 在“数据窗口( MEMOREY )”查看0400H 起始的单元内容,记录并分析实 验结果。

六、实验结果及总结 1、在“数据窗口( MEMOREY )”查看0400H 起始的单元内容 运行前:2、调试:如何将存储器块的内容置成某固定值(例全填充为0FFH) ?总结:通过本实验,我了解到单片机读写存储器的读写方法, 同时也了解到单片 机编程,调试方法。

学会内存的移动方法,也加深对存储器读写的认识。

实验步骤运行后:511H C \UB200Qf \E X&6ASM \S1. ASM(0400 00 0G 00 00 (I) 00 00 CO 00 00 041000 00 00 OG oo 10420 00 □0 00 oo □0 關皿 00 GO oo □0 0440 oa 00 00 oo oo00 □0 co oo oo 0400 00 00 DC oo □.1JJ00 00 0D □0 00 oo_ tJ D 00 oa tK 00 aoon XJ 00 (K 0D oo00 00 co 00 00 oo00 00 co (K ) 00 ooC - \LAB2000F\EXS6kSM \51. ASM地址:0400)(oa 00 W W 00 OO^d r.实验课程名微机原理实验成绩实验项目名称实验二、二进制到BCD码转换指导老师、实验目的1. 了解BCD值和ASCII值的区别2.了解如何将BCD值转换成ASCII值。

实验1存储器块清零

实验1存储器块清零

实验一存储器块清零软件操作过程:新建文件→保存文件(汇编语言后缀.ASM、C语言后缀.C)→新建项目(出现3个对话框)→对话框1:加入模块文件(选择要加的文件)→对话框2:加入包含文件(头文件之类的,没有可以点取消)→对话框3:保存项目(输入项目名称,注意项目和加入的文件必须在同一个文件夹中)→打开相应的模块文件,输入程序→点击绿色“开始”按钮,运行检查错误修改,直到没有错误为止。

窗口:CPU窗口——特殊功能寄存器窗口、工作寄存器窗口数据窗口——DATA片内数据存储器XDAT片外数据存储器CODE程序存储器BIT 位存储区仿真器设置:点仿真器→仿真器设置→选择仿真(Lab2000p仿真)→选择仿真头(MCS51实验)→选择CPU(8031/8032)→选择是否使用软件模拟器→点击好请编写程序,将片内RAM 30H-4FH单元中的内容清零。

MOV R0,#30HMOV R1,#32L0:MOV @R0,#00HINC R0DJNZ R1,L0SJMP $请编写程序,将片内RAM 60H-7FH单元中的内容置为FEH。

MOV R0,#60HMOV R1,#32L0:MOV @R0,#0FEHINC R0DJNZ R1,L0SJMP $1、片外ram50h—7fh内容置为:fehMOV DPTR,#50HMOV R1,#48MOV A,#0feHL0:MOVX @DPTR,AINC DPTRDJNZ R1,L0SJMP $2、片内RAM 20H-4FH中内容置为(20h)=00h,(21h)=01h,(22h)=02h, ,(4fh)=2fh MOV A,#00HMOV R1,#20HMOV R0,#48MOV @R1,ALOOP: INC AINC R1MOV @R1,ADJNZ R0,LOOPEND。

微机原理实验报告清零程序

微机原理实验报告清零程序

微机原理实验报告清零程序竭诚为您提供优质文档/双击可除微机原理实验报告清零程序篇一:微机原理实验报告微机原理与应用课程实验报告实验分工:报告人同组人实验时间:20XX.12.10课程设计一、题目要求(1)在数据段首址为0100h开始的内存区1按从大到小的顺序顺次存入二进制数15~0共16个字节的数据;(2)将上述源区内容传送到目的内存区2(首址为1100h)中;(3)检验上述传送过程是否正确,如有错误,在紧跟内存区2后的第一个字节开始写入AscII码“eRRoR”,否则写入“oK”。

(4)用冒泡法将上述内存区2的数据,按从小到大的次序重新排列,排列后存放在内存区3(开始地址为2100h)。

(5)将上述内存区2和内存区3的第100个数据分别乘以2,并转为bcD码,保存在各自存储区的末尾。

再将上述两个bcD码相乘,其结果保存在内存区1的末尾处。

二、实验程序框图三、程序代码codesegmentassumecs:codeDATA1db16dup(?)DATA2dbeRRoRDATA3dboK;在数据段首址为0100h开始的内存区1按从大到小的顺序顺次存入二进制数15~0共16个字节的数据start:movax,0100h;规定目标程序存放单元的偏移量movds,ax;数据段地址moves,axmovsi,offsetDATA1;偏移地址movcx,0010h;循环次数movbx,0100hmoval,ofhs1:movcs:[si],almov[bx],cs:[si]incsiincbxdecalloops1nop;将内存区1数据搬移到内存区2中movcx,16movsi,0100hmovbx,1100hs2:moval,[si]mov[bx],alincbxloops2nop;对比内存区1的数据与内存区2的数据是否相同mov cx,16 movsi,0100hmovbx,1100hcomp:movax,[si]movdx,[bx]cmpax,dxjneerroincsiincbxloopcomp;数据如果都相同,说明上述传输过程正确movsi,offsetDATA3movdi,1110hmovbl,0movcx,2enteroK:movbl,cs:[si]mov[di],blincsiincdiloopenteroKnopjmps3;如果有一个数据不相同,说明上述传输过程不正确err: movsi,offsetDATA2movdi,1110hmovbl,0movcx,5entereRR:movbl,cs:[si]mov[di],blincdiloopentereRR;将内存区2数据搬移到内存区3中s3:movsi,1100hmovcx,0010hmovbx,2100hmoval,0movcx,16fil:moval,[si]mov[bx],alincsiincbxloopfilnop;用冒泡法将内存区3的数据按从小到大重新排列s4: movbl,0 movcx,16movsi,2110hdecsideccxagain:moval,[si]cmpal,[si-1]jaenextxchgal,[si-1]mov[si],almovbl,1next:decsiloopagaincmpbl,0jnestart1nop movsi,1109h moval,[si]。

单_片_机_实_验_报_告 -内存块移动

单_片_机_实_验_报_告 -内存块移动

单片机实验报告
姓名___ _ 学号_2010__
一、实验项目内存块移动
二、实验要求
1.将指定源地址和长度的存储块移到指定目标位置。

三、实验目的
1.了解内存的移动方法
2.加深对存储器读写的认识
四、实验说明
块移动是计算机常用操作之一,多用于大量的数据复制和图象操作。

本程序是给出起始地址,用地址加一方法移动块,请思考给出块结束地址,用地址减一方法移动块的算法。

另外,若源块地址和目标块地址有重叠,该如何避免?
五、程序框图
六、源程序
org 0000h
Start:
mov r0, #00h
mov r1, #00h
mov r2, #00h
mov r3, #10h
mov r7, #10 Loop:
mov dph, r0
mov dpl, r1
movx a, @dptr
mov dph, r2
mov dpl, r3
movx @dptr, a
cjne r1, #0ffh, loop1
inc r0
loop1:
inc r1
cjne r3, #0ffh, loop2
inc r2
loop2:
inc r3
djnz r7, Loop
ljmp $
end
七、实验小结。

实验一 清零程序

实验一 清零程序

实验一清零程序一、实验目的: 掌握汇编语言设计和调试方法,熟悉键盘操作。

二、实验内容:把2000H~20FFH 的内容清零。

三、实验程序框图四、实验步骤: 用连续或单步方式运行程序,检查2000~20FF 中执行程序前后的内容变化。

五、思考:假使把1000H~10FFH 中的内容改成FF,如何修改程序,请分别用连续和单步方式运行程序来完成校验证六、程序清单(1)基本程序(文件名SW01.ASM)ORG 0000HLJMP SE01ORG 0640HSE01: MOV R0,#00H ;(00H)送R0,R0 为计数器MOV DPTR,#2000H ;(2000H)送DPTRLOO1: CLR A ;累加器A 清零MOVX @DPTR,A ;存储空间内容清零INC DPTR ;DPTR 加1INC R0 ;R0 加1CJNE R0,#FFH,LOO1 ;若R0 不等于00,则跳转至LOO1 继续循环LOOP: SJMP LOOPEND七、思考:假使把1000H~10FFH 中的内容改成FF程序如下:ORG 0000HLJMP SE01ORG 0640HSE01: MOV R0,#00H ;(00H)送R0,R0 为计数器MOV DPTR,#1000H ;(2000H)送DPTRLOO1: MOV A,#FF;累加器A 置FFMOVX @DPTR,A ;存储空间内容置FFINC DPTR ;DPTR 加1INC R0 ;R0 加1CJNE R0,#FFH,LOO1 ;若R0 不等于00,则跳转至LOO1 继续循环LOOP: SJMP LOOPEND现象:运行第一条程序可以发现1000H~10FFH 中的内容变成FF,运行第二条程序1000H~10FFH 中的内容改成00.而其它单元的内容不变。

心得:该实验的内容比较简单。

实验二P3.3 口输入,P1 口输出一、实验目的:掌握P3 口、P1 口简单使用。

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

设置块的源地址
设置块的目标地址
设置移动长度
从源地址取数
保存到目标地址中
源地址加 1

目标地址加 1
是否移动完 是 结束
2
五、实验原始程序 1. 存储器块ห้องสมุดไป่ตู้零 Block equ 4000h
mov dptr, #Block ; 起始地址 mov r0, #0 ; 清 256 字节 clr a Loop: movx @dptr, a inc dptr djnz r0, Loop ljmp end 2. 内存块移动 mov mov mov mov mov Loop: mov mov movx mov mov movx dph, r0 dpl, r1 ;将 3000h 赋给 dptr a, @dptr dph, r2 dpl, r3 ;将 4000h 赋给 dptr @dptr, a r0, #30h r1, #00h r2, #40h r3, #00h r7, #0 $ ; 指向下一个地址 ; 记数减一
地址加 1
否 是否清除完 是 结束
1
2.内存块移动 1. 进入 Wave6000,输入程序,并检查,保存程序。 2.“编译”程序。 3. 在指令“jmp $”处设断点。 4. “全速执行”程序。 5. 在“数据窗口(MEMOREY) ”查看: a)0400H、0401H、0402H 三个单元的内容,记录并分析实验结果。 b) 分别查看 0400H、0500H 开始 256 个单元的内容,记录并分析实验结果。
.
开课实验室:电子信息楼 学院 年级、专 业、班
微机
实验报告
年 月 日
电子 101
姓名
学号
指导教 课程 实验项目 汇编语言程 微机 成绩 序设计实验 师签名 名称 名称 一、实验目的 1.掌握 Lab6000 实验系统的使用。 2.练习初级程序的编写与调试。 3.掌握存储器读写方法。 4.了解存储器的块操作方法。 5.了解内存的移动方法。 二、实验内容 1.存储器块清零 指定存储器中某块的起始地址和长度,要求能将其内容清零。 2. 内存块移动 将指定源地址(3000 H)和长度(256 字节)的存储块移到指定目标位置(4000H)。
三、使用仪器、材料 1、电脑 2、伟福编译器 四、实验步骤 1.存储器块清零 (1) 进入 Wave6000,输入程序并检查,保存程序。 设置块起始地址 (2) “编译”程序。 (3) “全速执行”程序。 (4) “暂停”程序运行,在“数据窗口(MEMOREY) ” 设置块长度 查看 0400H 起始的单元内容,并记录。 (5) 在指令“jmp $”处设断点。 当前地址内容清零 (6) “全速执行”程序。 (7) 在“数据窗口(MEMOREY) ”查看 0400H 起始的单元内容,记录并分析实验结果。
;该两个寄存器存放 3000h ;该两个寄存器存放 4000h ;由 0 开始递减,可执行 256 次
cjne r1, #0ffh, Goon1 ;判断 r1 是否为 0xff,若不是则跳转到 Goon1 inc r0 ;r0 自增 1 Goon1: inc r1 ;r1 自增 1
cjne r3, #0ffh, Goon2 ; 判断 r3 是否等于 0xff, 若不是则跳转到 Goon2 inc r2 ;r2 自增 1 Goon2: inc r3 ;r3 自增 1
3
djnz ljmp end
r7, Loop $
;r7 自减 1 并判断是否等于 0,若不等则跳转到 Loop
六、实验结果分析 该实验达到了预期效果,实现了内存块的清零与内存块的移动。
4
相关文档
最新文档