第3章_单片机的汇编语言与程序设计题解

合集下载

第三章 80C51单片机汇编语言程序设计(本科)

第三章 80C51单片机汇编语言程序设计(本科)
返回
ORG START: CLR MOV MOVX MOV INC MOVX SUBB JNC XCH SJMP BIG1: MOVX BIGO: INC MOVX END
8000H C;进位清0 DPTR, #ST1; 设数据指针 A, @DPTR; A←((ST1)),取N1 R2, A; 暂存N1 DPTR; DPTR← ST2(指向N2单元) A, @DPTR; 取N2存于A中 A, R2;N1,N2比较(N2-N1,差在A中) BIG1;N2≥N1,转BIG1,N2<N1,顺序执行 A, R2;N1,N2互换,A ←N1 BIG0 A, @DPTR;A ←N2 DPTR; DPTR← ST3(指向N3单元) @DPTR, A;ST3 ←大数 返回
等、不相等等各种条件判断。
例:两个8位无符号二进制数比较大小。假设在外部RAM中有 ST1、ST2和ST3共3个连续单元(单元地址从小到大),其中ST1
、ST2单元中存放着两个8位无符号二进制数N1,N2,要求找出其
中的大数并存入ST3单元中。
解:(1)分析任务:比较两个数的大小
(2)算法:算术运算、控制转移 (3)程序结构:单分支 (4)数据类型:单字节、二进制、无符号数 (5)数据结构:单元地址升序排列
思考题
3) ORG MOV MOV MOVX ADD MOVX DEC DEC MOVX ADDC 1000H RO, R1, A, A, @R1, R0; R1; A, A, #52H;加数N1的低字节地址送地址指针R0 #55H;加数N2的低字节地址送地址指针R1 @R1; 取N2的低字节 @R0; N1、N2低字节相加 A; 保存N1、N2低字节和 修改加数N1的地址指针内容 修改加数N2的地址指针内容 @R1; 取N2的中间字节 @R0; N1、N2中间字节带低字节和进位相加

第三章MCS51单片机的指令系统和汇编语言程序示例(第5.

第三章MCS51单片机的指令系统和汇编语言程序示例(第5.

第三章MCS51单片机的指令系统和汇编语言程序示例(第5、6、7节)1.试分析单片机执行下列指令后累加器A和PSW中各标志位的变化状况?(1)MOV A,#19HADD A,#66H(2)MOV A,#5AHADD A,#6BH2.已知:A=85H,R0=30H,(30H)=11H, (31H)=0FFH,C=1,试计算单片机执行下列指令后累加器A和C中的值各是多少?(1)ADDC A,R0, (2)ADDC A,31H(3) ADDC A,@R0, (4) ADDC A,#85H3.已知M1和M2中分别存放两个16位无符号数的低8位,M1+1和M2+1中分别存放两个16位无符号数的高8位,计算两数之和(低8位存放在M1,高8位存放在M1+1,设两数之和不超过16位)。

4.试分析单片机执行下列指令后累加器A和PSW中各标志位的变化状况?CLR CMOV A,#52HSUBB A,#0B4H5.已知:A=0DFH,R1=40H,R7=19H,(30H)=00H,(40H)=0FFH,试分析单片机执行下列指令后累加器A和PSW中各标志位的变化状况?(1) DEC A (2) DEC R7 (3) DEC 30H (4) DEC @R16.试写出能完成85+59的BCD加法程序,并对工作过程进行分析。

7.已知:两个8位无符号乘数分别放在30H和31H单元中,编程实现他们乘积的低8位存放在32H,高8位存放在33H。

8.已知:R0=30H,(30H)=0AAH,试分析执行下列指令后累加器A和30H单元的内容是什么?(1)MOV A, #0FFH ANL A, R0(2)MOV A, #0FH ANL A, 30H(3)MOV A, #0F0H ANL A, @R0(4)MOV A, #80H ANL 30H, A9.设:A=0AAH和P1=0FFH,试编程把累加器A的低四位送入P1口的低四位,P1口的高四位保持不变。

第三章MCS51单片机的指令系统和汇编语言程序示例(第5范文

第三章MCS51单片机的指令系统和汇编语言程序示例(第5范文

第三章MCS51单片机的指令系统和汇编语言程序示例(第5、6、7节)1.试分析单片机执行下列指令后累加器A和PSW中各标志位的变化状况?(1)MOV A,#19HADD A,#66H(2)MOV A,#5AHADD A,#6BH2.已知:A=85H,R0=30H,(30H)=11H, (31H)=0FFH,C=1,试计算单片机执行下列指令后累加器A和C中的值各是多少?(1)ADDC A,R0, (2)ADDC A,31H(3) ADDC A,@R0, (4) ADDC A,#85H3.已知M1和M2中分别存放两个16位无符号数的低8位,M1+1和M2+1中分别存放两个16位无符号数的高8位,计算两数之和(低8位存放在M1,高8位存放在M1+1,设两数之和不超过16位)。

4.试分析单片机执行下列指令后累加器A和PSW中各标志位的变化状况?CLR CMOV A,#52HSUBB A,#0B4H5.已知:A=0DFH,R1=40H,R7=19H,(30H)=00H,(40H)=0FFH,试分析单片机执行下列指令后累加器A和PSW中各标志位的变化状况?(1) DEC A (2) DEC R7 (3) DEC 30H (4) DEC @R16.试写出能完成85+59的BCD加法程序,并对工作过程进行分析。

7.已知:两个8位无符号乘数分别放在30H和31H单元中,编程实现他们乘积的低8位存放在32H,高8位存放在33H。

8.已知:R0=30H,(30H)=0AAH,试分析执行下列指令后累加器A和30H单元的内容是什么?(1)MOV A, #0FFH ANL A, R0(2)MOV A, #0FH ANL A, 30H(3)MOV A, #0F0H ANL A, @R0(4)MOV A, #80H ANL 30H, A9.设:A=0AAH和P1=0FFH,试编程把累加器A的低四位送入P1口的低四位,P1口的高四位保持不变。

《单片机原理及应用》课后习题答案

《单片机原理及应用》课后习题答案
2.12 ALE信号有何功用?一般情况下它与机器周期的关系如何?在什么条件下ALE信号可用作外部设备的定时信号。
答案:ALE是地址锁存使能信号,是机器周期的二倍。当不使用单字节双周期的指令,如MOVX类指令时,可以作为外部设备的定时信号。
2.13 有那几种方法能使单片机复位?复位后各寄存器的状态如何?复位对内部RAM有何影响?
2.6 8051如何确定和改变当前工作寄存器组?
2.7 MCS-51单片机的程序存储器中0000H、0003H、000BH、0013H、001BH和0023H这几个地址具有什么特殊的功能?
2.8 8051单片机有哪几个特殊功能寄存器?可位寻址的SFR有几个?
2.9 程序状态寄存器PSW的作用是什么?常用标志有哪些位?作用是什么?
TH1、TL1、TH0、TL0的内容为00H,定时器/计数器的初值为0。
(TMOD)=00H,复位后定时器/计数器T0、T1为定时器方式0,非门控方式。
(TCON)=00H,复位后定时器/计数器T0、T1停止工作,外部中断0、1为电平触发方式。
(T2CON)=00H,复位后定时器/计数器T2停止工作。
可位寻址的SFR有11个。
2.9 程序状态寄存器PSW的作用是什么?常用标志有哪些位?作用是什么?
答案:PSW—程序状态字。主要起着标志寄存器的作用。常用标志位及其作用如下:
Cy——进(借)位标志,其主要作用是保存算术运算的进或借位并在进行位操作时做累加器。
在执行某些算术和逻辑指令时,可以被硬件或软件置位或清零。在算术运算中它可作为进位标志,在位运算中,它作累加器使用,在位传送、位与和位或等位操作中,都要使用进位标志位。
2.14 MCS-51的时钟振荡周期、机器周期和指令周期之间有何关系?

计算机接口技术课件 第三章 MCS-51单片机汇编语言与程序设计基础

计算机接口技术课件 第三章 MCS-51单片机汇编语言与程序设计基础

例2:编制一段程序,要求在端口线 :编制一段程序,要求在端口线P1.0,P1.1上分别产生周期为 , 上分别产生周期为 200us和400us的方波.设单片机的外接频率为 的方波. 和 的方波 设单片机的外接频率为12MHz. . 分析:利用定时器产生方波,将定时器设置成为工作方式 , 分析:利用定时器产生方波,将定时器设置成为工作方式3,将寄 存器T0定时 定时100us,T1定时 定时200us,达到定时时间后引起中断,在中 存器 定时 , 定时 ,达到定时时间后引起中断, 断服务程序中各自将P1.0和P1.1引脚取反. 引脚取反. 断服务程序中各自将 和 引脚取反 定时器预设值的设置: 定时器预设值的设置: 单片机的晶体振荡频率为12MHz,计时器的计时频率为1MHz,机 单片机的晶体振荡频率为 ,计时器的计时频率为 , 器周期为1us. 定时 定时100us,因此寄存器 需要计数 需要计数100次 器周期为 . T0定时 ,因此寄存器T0需要计数 次 ,其预 置值为64H+1=9CH. T1定时 定时200us,因此寄存器 需要计数 需要计数200次 置值为 . 定时 ,因此寄存器T1需要计数 次 其预置值为C8H+1=38H. ,其预置值为 . 定时器T0,T1的工作方式设置: 的工作方式设置: 定时器 的工作方式设置 T0采用工作方式 ,因此 采用工作方式3,因此TMOD寄存器的值设置为 寄存器的值设置为#22H. 采用工作方式 寄存器的值设置为 . 定时器T0,T1的控制设置: 的控制设置: 定时器 的控制设置 打开T0, ;要求TCON寄存器的值设置为 寄存器的值设置为#50H. 打开 ,T1;要求 寄存器的值设置为 .
定义存储区域的大小. 6. DS —定义存储区域的大小. 定义存储区域的大小 例: ORG 0350H DS 3

第3章_C51语言编程基础

第3章_C51语言编程基础
机器码
.
3
2、Keil C51语言简介
对于51单片机,目前广泛使用的是Keil C51语言,简称C51语言。
Keil C51语言是在标准C的基础上,针对51单片机的硬件特点进行 扩展,并向51单片机上移植的高效、简洁的实用高级语言。
与汇编语言相比的特点: (1)可读性好。 (2)可模块化开发。 (3)可移植性好。 (4)生成的代码效率较低。
unsigned char j ;
for(j=0; j<8; j++) {
buffer[j]=0; }
}
.
8
33
3、C51的基本运算 C51语言的基本运算与标准C类似,主要包括算术运算、关系运算、 逻辑运算、位运算和赋值运算及其表达式等。
1)算术运算符
.
34
2)关系运算符
关系表达式
int x=3; int y=6; int R;
bit的值可以是1(true),或0(false)。
格式: bit 变量名;
例如:
bit
flag;
flag = 0;
.
8
(2)特殊功能寄存器sfr 地址单元80H——FFH之间的片内数据存储区; “sfr” 数据类型占用一个内存单元; 利用它可以访问51单片机内部的所有特殊功能寄存器。 格式: sfr 寄存器变量名 = 字节地址常数;
01000000 | 11111111
00001000 << 3
.
38
【例】以字节操作方式对I/O口P1的P1.5清0 ,P1.1置为1, 其他位保持不变。
例如:
sfr
PSW = 0xd0;
//定义PSW寄存器地址为0xd0

第三章MCS51系列单片机指令系统及汇编语言程序设计

第三章MCS51系列单片机指令系统及汇编语言程序设计
AJMP addr11 绝对转移指令为2K地址范围内的转移指令,对转移目的地址的要求与 ACALL指令中对子程序入口地址的要求相同。 【3】短转移指令
SJMP rel ;PC+ 2 + rel→PC 短转移指令为一页地址范围内的相对转移指令。因为rel为1字节补码 偏移量,且SJMP rel指令为2字节指令,所以转移范围为-126D~+ 129D 【4】间接转移指令
表3.4 程序存储器空间中的32个基本2K地址范围
0000H~07FFH 0800H~0FFFH 1000H~17FFH 1800H~1FFFH 2000H~27FFH 2800H~2FFFH 3000H~37FFH 3800H~3FFFH 4000H~47FFH 4800H~4FFFH 5000H~57FFH
3. 寄存器寻址
以通用寄存器的内容为操作数的寻址方式。通用寄存 器包括:A,B,DPTR,R0~R7。其中,R0~R7必须在 工作寄存器组之中。
例如:INC R0 ;(R0)+1→R0
需要注意的是,A和B既是通用寄存器,又是具有直 接地址的特殊功能寄存器。
4. 寄存器间接寻址
以寄存器中的内容为地址,该地址中的内容为操作数的寻址方式。能够 用于寄存器间接寻址的寄存器有:R0,R1,DPTR,SP。其中,R0,R1必 须在工作寄存器组之中,SP仅用于堆栈操作。
MCS-51单片机共有111条指令,按功能分类, MCS-51指令系统可分为5大类:
➢ 数据传送类指令(共29条) ➢ 算术操作类指令(共24条) ➢ 逻辑操作类指令(共24条) ➢ 控制转移类指令(共17条) ➢ 布尔变量操作类指令(共17条)
1.数据传送类指令(共29条)
以累加器A为目的操作数类指令(4条)

单片机原理与应用-基于AT89S51+Proteus仿真 第2版 第3章 指令系统与汇编语言程序设计

单片机原理与应用-基于AT89S51+Proteus仿真 第2版 第3章 指令系统与汇编语言程序设计

3. 编写程序较为复杂 汇编语言要安排运算的每一个细节
4. 汇编语言用到大量的各类转移指令,这些跳转指 令加大了调试的难度
使用领域:
第3章 指令系统与汇编语言程序设计
要求执行效率高,反应快的领域 如:操作系统内核,实时系统
与硬件资源密切相关的软件开发 如:设备驱动程序
受存储容量限制的应用领域 如:家用电器的计算机控制功能
没有适当的高级语言开发环境
不宜使用的领域: 大型软件的整体开发
第3章 指令系统与汇编语言程序设计
汇编语言(Assembly Language)——用助记(字)符代替操 作码,用地址符号代替地址码的一种面向机器的程序 设计语言;
汇编语言特点——代码精炼、执行速度快,但不便于编写 较复杂的程序;
汇编程序处理过程——输入源程序→检查语法正确性(如有 语法错误,输出错误信息)→翻译成二进制目标程序。
单片机原理与应用
第3章 指令系统与汇编语言程序设计
第3章 单片机的工作就是执行程序,而程序是指令的有序集 合。汇编语言是最基本的编程方式,而C语言则是单 片机程序开发的主流。对于应用C语言程序开发的读 者来说,了解单片机的指令系统和汇编语言也是十分 必要的。本章主要介绍AT89S51单片机的指令系统与 汇编语言程序设计。 学习目标: 掌握51单片机指令系统与汇编语言程序的基本概念。 了解51单片机汇编指令的分类、语法规则、功能及程 序用法。 了解汇编语言程序设计步骤及编程方法。
;若A≠R0,转START ; A + 10H →A ; A←0 ;子程序返回
第3章 指令系统与汇编语言程序设计
[标号:] 操作码 [操作数] [;注释]
➢ 注释是对指令的解释性说明,用以提高程序的可读 性; ➢ 可用任何文字或符号描述,可以省略; ➢ 由(英文)分号开始,无需结束符号。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第3章单片机的汇编语言与程序设计习题1.MCS-51单片机有哪几种寻址方式?适用于什么地址空间?答:MCS-51单片机有7种寻址方式:直接寻址、寄存器寻址、寄存器间接寻址、立即寻址、变址寻址、位寻址、相对寻址。

直接寻址方式:操作数的地址由指令直接给出,适用于片内RAM的所有地址空间;如MOV A,68HMOV A,PSW寄存器寻址方式:指令给出的是寄存器的编码,操作数在编码指定的寄存器中,适用于片内00H至1FH的32个字节,用R0,…,R7表示,通过PSW的RS1和RS0选择组号确定对应32个字节中的其中8个,还有累加器A,以及乘除法指令中的A和B寄存器,位寻址方式中的布尔累加器C;MOV A,R1MUL ABINC DPTR寄存器间接寻址方式:指令给出的是寄存器的编码,操作数地址在编码指定的寄存器中,适用于片内RAM的全部空间,其中52系列中的80H至FFH只能用寄存器间接寻址;如MOV A,@R0MOV A,@R1MOVX A,@DPTR立即寻址方式:操作数本身在指令中直接,给出适用于用8位立即数对片内RAM所有地址单元赋值,也可用16位立即数对DPTR赋值;如MOV A,#0E2HMOV DPTR,#2000H变址寻址方式:以DPTR或PC作为基地址寄存器,以累加器A作为变址寄存器,将基址寄存器与变址寄存器的内容相加形成操作数的实际地址的一种寻址方式,变址寻址方式适用于程序存储器ROM,仅有三条指令如下:MOVC A,@A+DPTRMOVC A,@A+PCJMP @A+DPTR位寻址方式:指令中直接给出操作数所在单元的位地址,适用于片内RAM 中地址20H至2FH中的16个字节中的128个位地址空间和80H至FFH中地址中可以被8整除的所有SFR中的每个位地址空间;如MOV C,7FHMOV F0,CMOV C,ACC.7相对寻址方式:为相对转移指令而设,指令中直接给出转移的相对偏移量,其转移目标在当前指令-128至+127字节范围内的地址空间。

如SJMP STARTHERE: SJMP HERE ;等效于:SJMP $2.MCS-51单片机的PSW程序状态字中无ZERO(零)标志位,怎样判断某内部数据单元的内容是否为零?答:M CS-51单片机的PSW程序状态字中无ZERO(零)标志位,判断某内部数据单元的内容是否为零是能通过取数到A累加器,再判断A中的每一位是否为零来确定其值是否为零。

3.编程将内部RAM的20H--30H单元内容清零。

解:设一个片内RAM指针R0,先指向首地址20H,通过累加器A清零,然后采用间接寻址方式依次将A中的零值传送到指针所指的片内RAM单元,每传送一个字节,地址指针加1,直到达到地址为30H或达到计数器规定的17个字节为止。

程序1:MOV R0,#20H ;设地址指针初值CLR A ;累加器清0CONT: MOV @R0,A ;置0指针所指单元INC R0 ;地址指针加1CJNE R0,#31H,CONT ;指针未超过终点则继续SJMP $ ;暂停程序2:MOV R0,#20H ;设地址指针初值CLR A ;累加器清0MOV R7,#17 ;计数器赋初值,从20H到30H共17个字节CONT: MOV @R0,A ;置0指针所指单元INC R0 ;地址指针加1DJNZ R7,CONT ;计数器减1,非0,则继续SJMP $ ;暂停4.编程查找内部RAM的32H~41H单元中是否有0AAH这个数据,若有这一数据,则将50H单元置为0FFH,否则将50H单元清零。

解:设一个片内RAM指针R0,先指向首地址32H,比较@R0与#0AAH,若相等,则退出循环,给50H单元赋0FFH,若不相等,则R0加1为继续比较下一个字节做准备,直到达到地址为41H或达到计数器规定的16个字节为止还没找到,则给50H单元赋00H程序1:MOV R0,#32H ;设地址指针初值CONT: CJNE @R0,#0AAH,NEXT;比较查找值与指针所指单元的值,不相等转移MOV A,#0FFH ;相等,则准备好要赋的标志值0FFHSJMP DOWN ;转存到保存结果处NEXT: INC R0 ;修改地址指针CJNE R0,#42H,CONT ;若指针未越过终点,则继续MOV A,#00H ;查找失败,则将00H存入结果标志单元DOWN: MOV 50H,A ;将比较结果标志存入50H单元SJMP $ ;暂停END程序2:MOV R7,#16 ;计数器赋初值,从20H到30H共16个字节MOV R0,#32H ;设地址指针初值CONT: CJNE @R0,#0AAH,NEXT ;比较查找值与指针所指单元的值,不相等转移MOV A,#0FFH ;相等,则准备好要赋的标志值0FFHSJMP DOWN ;转存到保存结果处NEXT: INC R0 ;修改地址指针DJNZ R7,CONT ;计数器减1,非0,则继续MOV A,#00H ;查找失败,则将00H存入结果标志单元DOWN: MOV 50H,A ;将比较结果标志存入50H单元SJMP $ ;暂停END5.查找20H~4FH单元中出现00H的次数,并将查找结果存入50H单元。

解:从20H到4FH共48个字节MOV R7,#48 ;字节计数器赋初值MOV R0,#20H ;设地址指针初值CONT: CJNE @R0,#00H,NEXT ;比较查找值与指针所指单元的值,不相等转移INC R6 ;相等,0的个数计数器加1NEXT: INC R0 ;修改地址指针DJNZ R7,CONT ;计数器减1,非0,则继续MOV 50H,R6 ;保存O的个数计数值到50H单元SJMP $ ;暂停END6.已知A=83H,R0=17H,(17H)=34H,写出下列程序段执行之后的A中的内容。

ANL A,#17HORL 17H,AXRL A,@R0CPL A∨答:ANL A,#17H ;A=03HORL 17H,A ;(17H)=0011 0100 ∨ 0000 0011=0011 0111XRL A,@R0 ;A= 0000 0011 ∨ 0011 0111 =0011 0100CPL A ;A=1100 10117.已知单片机的晶振频率为12MHz,分别设计延时为0.1s、1s的子程序。

答:已知单片机的晶振频率为12MHz,则机器周期为1us,延时子程序是通过执行指令序列中机器周期数来达到,如果要0.1s,即100ms,也就是100000us,所以需要机器周期数达到100000。

要延时达到1S,可通过对延时为0.1秒的子程序调用10次来实现。

DELAY100MS: MOV R6,#200 ;1个机器周期D1: MOV R7,#250 ;1个机器周期D2: NOP ;1个机器周期DJNZ R7,D2 ;2个机器周期,3*251=753DJNZ R6,D1 ;2个机器周期,(1+753+2)*132=99792RET ;2个机器周期,1+99792+2=99795,约100msDELAY1S: MOV R7,#10 ;计数10次 1LOOP: ACALL DELAY100MS ;延时100ms子程序99795+2DJNZ R7,LOOP ;未达到10次则继续10*(2+99795+2)RET ;返回2+10*(2+99795+2)=9979928.内部RAM从20H单元开始处有一数据块,以ODH为结束标志,试统计该数据块的长度,将该数据块送到外部数据存储器7E01H开始的单元,并将长度存入7E00H单元。

解:从20H的指针用R0,从外部RAM7E01开始的指针用DPTR,计数器用R7 MOV R7,#0 ;字节计数器赋初值MOV R0,#20H ;设片内RAM地址指针初值MOV DPTR,#7E01H ;设片外RAM地址指针初值CONT: MOV A,@R0 ;取片内RAM中的一个字节MOVX @DPTR,A ;存入片外RAM指针所指单元INC R7 ;长度计数器加1INC R0 ;片内RAM地址指针加1INC DPTR ;片外RAM地址指针加1CJNE A,#0DH,CONT ;未达到结束标志MOV A,R7 ;取块计数长度值MOVX @DPTR,A ;保存SJMP $ ;暂停END9.内部RAM从DATA开始的区域中存放着10个单字节十进制数,求其累加和,并将结果存入SUM和SUM+1单元。

解:R7计数,R6保存累加和高8位,R0用作地址指针ORG 0000HLJMP MAINORG 100HSUM EQU 30HDATAA EQU 40HMAIN: MOV R7,#10 ;字节计数器赋初值MOV R0,#DATAA ;设片内RAM地址指针初值CLR A ;累加器清0MOV R6,A ;累加结果的高8位CONT: ADD A,@R0 ;加RAM中的一个字节到ACCDA AJNC NEXT ;若无进位则不用管高8位INC R6 ;有进位,高8位加1NEXT: INC R0 ;片内RAM地址指针加1DJNZ R7,CONT ;未完继续MOV SUM,A ;保存低8位SJMP $ ;暂停MOV SUM+1,R6 ;保存高8位END10.内部RAM从DATA1和DATA2单元开始处存放着两个等长的数据块,数据块的长度在LEN单元中。

请编程检查这两个数据块是否相等,若相等,将0FFH写入RESULT单元,否则将0写入RESULT单元。

解:从DATA1开始的指针用R0,从DATA2开始的指针用R1,计数器用R7LEN EQU 10DATA1 EQU 30HDATA2 EQU 40HRESULT EQU 50HMOV R7,#LEN ;字节计数器赋初值MOV R0,#DATA1 ;设片内RAM地址指针初值MOV R1,#DATA2 ;设片外RAM地址指针初值CONT: MOV A,@R0 ;取片内RAM R0所指的的一个字节MOV 7FH,@R1 ;将R1所指单元内容取到片内RAM地址7FH中CJNE A,7FH,NOEQ ;比较,不相等则结束INC R0 ;DATA1 RAM地址指针加1INC R1 ;DATA2 RAM地址指针加1DJNZ R7,CONT ;未完,继续MOV A,#0FFH ;相等,准备写入FFHSJMP DOWN ;转写入结果处NOEQ: MOV A,#0 ;不相等,准备写入00HDOWN: MOV RESULT,A ;保存比较结果标志SJMP $ ;暂停END11.编制程序,将内部RAM中M1、M2、M3和M4单元中的无符号数xl、x2、x3和x4相加,并把和存入RO和R1(R0中为高8位)中。

相关文档
最新文档