51汇编程序练习题1
51单片机经典流水灯汇编程序

51单片机经典流水灯汇编程序(共8页)单片机流水灯汇编程序设计流水灯汇编程序8只LED为共阳极连接,即单片机输出端为低电平时即可点亮LED。
;用最直接的方式实现流水灯ORG 0000H START:MOV P1,#01111111B ;最下面的LED点亮 LCALL DELAY ;延时1秒 MOV P1,#B ;最下面第二个的L ED点亮 LCALL DELAY ;延时1秒 MOV P1,#B ;最下面第三个的LED点亮(以下省略) LCALL DELAY MOV P1,#B LC ALL DELAY MOV P1,#B LCALL DELAY MOV P1,#B LCALL DELAY MOV P1,#B LCALL DELAY MOV P1,#B LCALL DELA Y MOV P1,#B ;完成第一次循环点亮,延时约秒 AJMP START ;反复循环;延时子程序,12M晶振延时约250毫秒DELAY: ;大约值:2us*256*256*2=260ms,也可以认为为250msPUSH PSW ;现场保护指令(有时可以不加)MOV R4,#2 L3: MOV R2 ,#00HL1: MOV R3 ,#00HL2: DJNZ R3 ,L2 ;最内层循环:(256次)2个周期指令(R3减一,如果比1大,则转向L 2) DJNZ R2 ,L1 ; 中层循环:256次 DJNZ R4 ,L3 ;外层循环:2次 POP PSW RET END--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--51单片机汇编程序集(二)2008年12月12日星期五 10:27辛普生积分程序内部RAM数据排序程序(升序)外部RAM数据排序程序(升序)外部RAM浮点数排序程序(升序)BCD小数转换为二进制小数(2位)BCD小数转换为二进制小数(N位)BCD整数转换为二进制整数(1位)BCD 整数转换为二进制整数(2位)BCD整数转换为二进制整数(3位)BCD整数转换为二进制整数(N位)二进制小数(2位)转换为十进制小数(分离BCD码)二进制小数(M位)转换为十进制小数(分离BCD码)二进制整数(2位)转换为十进制整数(分离BCD码)二进制整数(2位)转换为十进制整数(组合BCD码)二进制整数(3位)转换为十进制整数(分离BCD码)二进制整数(3位)转换为十进制整数(组合BCD码)二进制整数(M位)转换为十进制整数(组合BCD码)三字节无符号除法程序(R2R3R4/R7)=(R2)R3R4 余数R7;二进制整数(2位)转换为十进制整数(分离BCD码);入口: R3,R4;占用资源: ACC,R2,NDIV31;堆栈需求: 5字节;出口: R0,NCNTIBTD21 : MOV NCNT,#00HMOV R2,#00HIBD211 : MOV R7,#0AHLCALL NDIV31MOV A,R7MOV@R0,AINC R0INC NCNTMOV A,R3ORL A,R4JNZ IBD211MOV A,R0CLR CSUBB A,NCNTMOV R0,ARET;二进制整数(2位)转换为十进制整数(组合BCD码);入口: R3,R4;占用资源: ACC,B,R7;堆栈需求: 3字节;出口: R0IBTD22 : MOV A,R0PUSH AMOV R7,#03HCLR AIBD221 : MOV @R0,AINC R0DJNZ R7,IBD221POP AMOVR0,AMOV R7,#10HIBD222 : PUSH ACLR CMOV A,R4RLC AMOV R4,AMOV A,R3RLC AMOV R3,AMOVB,#03HIBD223 : MOV A,@R0ADDC A,@R0DA AMOV @R0,AINC R0DJNZ B,IBD223POP AMOV R0,ADJNZR7,IBD222RET;二进制整数(3位)转换为十进制整数(分离BCD码);入口: R2,R3,R4;占用资源: ACC,R2,NDIV31;堆栈需求: 5字节;出口: R0,NCNTIBTD31 : CLR AMOV NCNT,AIBD311 : MOV R7,#0AHLCALL NDIV31MOV A,R7MOV @R0,AINCR0INC NCNTMOV A,R2ORL A,R3ORL A,R4JNZ IBD311MOV A,R0CLR CSUBB A,NCNTMOV R0,ARET;二进制整数(3位)转换为十进制整数(组合BCD码);入口: R2,R3,R4;占用资源: ACC,B,R7;堆栈需求: 3字节;出口: R0IBTD32 : MOV A,R0PUSH AMOV R7,#04HCLR AIBD321 : MOV @R0,AINC R0DJNZ R7,IBD321POP AMOVR0,AMOV R7,#18HIBD322 : PUSH ACLR CMOV A,R4RLC AMOV R4,AMOV A,R3RLC AMOV R3,AMOV A,R2RLC AMOV R2,AMOV B,#04HIBD323 : MOV A,@R0ADDC A,@R0DA AMOV @R0,AINC R0DJNZ B,IBD323POP AMOVR0,ADJNZ R7,IBD322RET第七个试验:流水灯数字显示综合练习----51单片机汇编语言试验教程收藏该程序运行结果为个位数码管轮流现实0,1,2,3,4,5,6,7,8然后十位数码管轮流现实0,1,2,3,4,5,6,7,8反复循环,, ,, ,, ,, 依次点亮然后轮流点亮小喇叭不停发出滴答声:注意该程序配套为我站的倚天版开发套件:如果是标准版:因他的数码管接法不同。
汇编练习题

汇编练习题一、选择题1. 在汇编语言中,指令MOV AX, [BX]表示将内存地址BX指向的内容移动到AX寄存器中。
以下哪个指令与MOV AX, [BX]等效?A. MOV AX, BXB. MOV AX, @BXC. MOV BX, AXD. MOV [BX], AX2. 下列哪个指令是将立即数5移动到寄存器AL中?A. MOV AL, 5B. MOV AL, [5]C. MOV AL, 5HD. MOV 5, AL3. 汇编语言中的指令ADD AX, BX表示将BX寄存器的内容加到AX寄存器中。
以下哪个指令与ADD AX, BX等效?A. ADD BX, AXB. SUB AX, BXC. INC AXD. DEC BX4. 汇编语言中的指令JMP LABEL跳转到标签LABEL处执行。
以下哪个指令与JMP LABEL功能不同?A. JE LABELB. JNE LABELC. JO LABELD. JNO LABEL5. 汇编语言中的指令CMP AX, BX用于比较AX和BX寄存器的值。
以下哪个指令与CMP AX, BX功能不同?A. SUB AX, BXB. MOV AX, BXC. ADD AX, BXD. OR AX, BX二、填空题6. 在汇编语言中,指令______用于将数据从内存移动到寄存器。
7. 指令______可以将AX寄存器的值与立即数10进行比较。
8. 汇编语言中的指令______用于无条件跳转到指定的标签处执行。
9. 指令______用于将寄存器AL中的值与寄存器BL中的值相加,并将结果存储在AL中。
10. 汇编语言中的指令______用于将AX寄存器的值减去立即数5。
三、简答题11. 解释汇编语言中的指令MOV AX, BX的作用是什么?12. 描述汇编语言中的指令SUB AX, BX和指令CMP AX, BX的区别。
13. 解释汇编语言中的指令JMP LABEL和JE LABEL的区别。
汇编语言平时练习题

2. 知识点:01 (根底知识)汇编语言属于〔〕A.用户软件B.系统软件C.高级语言D.机器语言6. 知识点:0201(80x86微处理器)IBM PC机的DOS是属于〔〕。
A.用户软件B.系统软件C.系统硬件D.一种语言8. 知识点:0203(中央处理机)8086/8088 CPU的存放器组中,8位的存放器共有〔〕个A.4B.6C.8D.109. 知识点:0203(中央处理机)8086/8088 CPU的存放器组中,16位的存放器共有〔〕个。
A.10B.12C.13D.1410. 知识点:0204(存储器)8086/8088 CPU执行算术运算时PSW共有〔〕个标志位会受影响。
A.4B.5C.6D.711. 知识点:0204(存储器)在程序执行过程中,IP存放器始终保存的是〔〕。
A.上一条指令的首地址B.本条指令的首地址C.下一条指令的首地址D.需计算有效地址后才能确定地址12. 知识点:0204(存储器)IBM PC机的存储器可分〔〕个段。
A.4B.256C.512D.6553613知识点:0204(存储器)当使用BP作编程地址时,此时使用的是〔〕段。
A.CSB.DSC.ESD.SS17知识点:0204(存储器)存储器的一个字节表示〔〕位。
A.8B.16C.32D.6418知识点:0101(基于微处理器的计算机系统构成)如果某个字变量的数据存放在奇地址单元,那么8086/8088 CPU读写该变量时需要〔〕个读写周期。
A.1B.2C.3D.419知识点:0203(中央处理机)在机器内部操作中,CPU与存储器之间的任何信息交换使用的都是〔〕地址。
A.逻辑B.物理C.有效D.相对21知识点:0204(存储器)物理地址的形成过程是将段地址左移〔〕位加偏移地址。
A.2B.3C.4D.527知识点:0205(外部设备)一般的外部设备接口电路中的状态存放器是用来存放外设或接口电路的〔〕信息。
A.数据B.控制C.状态D.前三者28知识点:0201(80x86微处理器)以下表达正确的选项是〔〕。
51基本汇编语言程序设计

MOV DS,AX
MOV AL,BCDBUF ;取出BCD码
MOV BL,AL
;送BL暂存
MOV CL,4
SHR AL,CL
;高4位变成低4位,高4位补0(96H→09H)
ADD AL,30H
;变成ASCII码(39H)
7
第 5 章 基本汇编语言程序设计
MOV
ASCBUF,AL;存储第1个ASCII码
27
循环程序设计
第 5 章 基本汇编语言程序设计
循环程序例题分析:
例5.5:计算100个数字之和。
仅用循环次数控制,且循环次数已知,比较简单。
例5.6:确定一个字变量中为1的最低位数。
从最低位向高位依次测试,最多测试16次;测试 到某位为1,即可结束程序,测试结果用ZF标志反映, 因此可用LOOPE或LOOPZ控制循环(结果非0,退出)。
基本汇编语言程序设计
指令按程序中的书写顺序逐条执行,称为顺序程序。
除非编程解决非常简单的问题,顺序程序并不多见,
但是顺序程序往往是复杂程序结构的一部分,如分支
结构的一个分支,循环结构的循环体等。
4
5.1顺序程序设计(e)
第 5 章 基本汇编语言程序设计
例5.1:设有3个字变量x,y和z,求出三者之和,结果 存入字变量w。
16
双分支
第 5 章 基本汇编语言程序设计
⑵分支的嵌套形成多分支,嵌套形式多种多样。 例1:求符号函数 1 当 X>0
Y= 0 当 X=0 -1 当 X<0
X≥0?
Y
N Y=-1
X=0?
Y
N
Y=1
Y=0
实际是双分支的组合。
17
汇编语言编程练习题

将片外RAM2008H单元中的内容送到片内38H单元的程序段为: MOV MOVX DPTR ,#2000H A ,@DPTR ; DPTR←#2000H ; A←(2000H)
MOV
30H , A
;(30H)←A
练习题
将片外RAM1000H单元中的内容送到片外2000H单元的程序段为: MOV DPTR ,#1000H ; DPTR←#1000H
(2)D7H(11010111)是负数,程序向前转移,D7H=(– 29H)补,所以:目的地址 = PC+ 2+ rel = 2300H+2+(–29H )= 22D9H
练习题
将片外RAM首地址为DATA1的一个数据块传送到片内RAM首地址为 DATA2的存储区中,当遇到传送的数据为零时,停止传送。
程序段即可。
练习题
程序段: MOV A,R1 RL A #2000H @A+DPTR
MOV DPTR MOVC A
MOV
INC MOVC MOV
30H
A A 31H
A
@A+DPTR A
练习题
设R0 = 30H,30H = 4AH,A = 28H,则执行下列指令的结果分别 为:
XCH
XCHD
A,@R0
←低4位> 9,加6修正 ←高4位> 9, 加6修正 ←得到BCD码加法的正确结果
11000011
执行后A=(00100011)BCD= 23,C=1,运算结果为123。
练习题
设有两个16位无符号数,被加数存放在内部RAM的30H(低位字
节)和31H(高位字节)中,加数存放在40H(低位字节)和 41H(高位字节)中。试写出求两数之和,并把结果存放在30H 和31H单元中的程序。
汇编语言练习题及习题答案

选择1、用户为了解决自己的问题,用汇编语言所编写的程序,称为___________。
A 、目标程序B、源程序C、可执行程序D、汇编程序2、无论BH中原有的数是奇数或偶数,若要使BH中的数一定为奇数,应执行的指令是___________。
A、ADD BH,01HB、OR BH,01HC、XOR BH,01HD、TEST BH,01H3、设AL=20H,SI=0500H,DS=3000H,(30500H)=0C0H,CF=1,执行SBB AL,[SI]后,正确的结果是___________。
A、AL=5FH SF=1 CF=1B、AL=60H SF=1 CF=0C、AL=5FH SF=0 CF=1D、AL=60H SF=0 CF=04、设AX=1000HNEG AXNOT AX执行上述指令后,正确的结果是___________。
A、AX=1001HB、AX=0FFFHC、AX=1000HD、AX=0111H5、CBW指令的功能是___________。
A、把源操作数的符号位扩展到目的操作数中B、把AL中的符号位扩展到AH中C、把AH中的符号位扩展到AL中D、把AX中的符号位扩展到DX中6、AND,OR,XOR,NOT为四条逻辑运算指令,下面的解释正确的是A、指令XOR AX,AX执行后,AX内容不变,但设置了标志位B、指令OR DX,1000H执行后,将DX最高位置1,其余各位置0C、指令AND AX,OFH执行后,分离出AL低四位D、NOT AX,执行后,将AX清07、执行下列指令序列后,正确的结果是___________。
MOV AL,81HADD AL,ALADC AL,ALA、AL=05HB、AL=204HC、AL=04HD、AL=205H4、TEST DL,55HJE NEXT….NEXT:……上述程序段,执行JE指令时能产生转移的情况是。
A、DL>55HB、DL<55HC、DL=55HD、DL中第0、2、4、6位均为05、设CL=05H,要获得CL=0AH,可选用的指令是。
烟台大学《汇编语言程序设计》期末考试复习题及参考答案

B. 03200H
C. 20120H
D. 21200H
答 案:C
48、下列指令中不能将AX清0的指令是( )。(2分)
A. SUB AX,AX
B. TEST AX,0
C. XOR AX,AX
D. AND AX,0
答 案:B
49、设AL=0A8H,CX=2,CF=1,执行RCLAL,CL指令后,AL中的值为( )(2分)
A. 80H
B. 160H
C. 80
D. 160
答 案:D
3、设AL=0AH,下列指令执行后能使AL=05H的是( )(2分)
A.NOT AL
B.AND AL,0FH
C.XOR AL,0FH
D.OR AL,0FH
答 案:C
4、CPU要访问的某一存储单元的实际地址称(2分)
A.段地址
B.偏移地址
C.物理地址
CBW
(2分)
A. AX=0FF82H
B. AX=8082H
C. AX=0082H
D. AX=0F82H
答 案:A
31、下面的数据传送指令中,错误的操作是( )(2分)
A. MOV SS:(BX+DI),1000H
B. MOV DX,1000H
C. MOV WORDPTR(BX),1000H
D. MOV DS,2000H
add ax,0f510h
A. of=1
B. cf=1
C. sf=1
D. zf=1
答 案:C
12、JMPWORDPTR(DI)的源操作数的物理地址是( )(2分)
A. 16D×(DS)+(BX)+(SI)
51单片机试题及答案

51单片机试题及答案【篇一:51单片机习题及答案】t>第一章1-1选择1.计算机中最常用的字符信息编码是( a )aasciib bcd码c 余3码 d 循环码a 1.5b 3c 1d 0.53.mcs-51的时钟最高频率是 ( a ).a 12mhzb 6 mhzc 8 mhzd 10 mhz4.以下不是构成的控制器部件(d):a 程序计数器、 b指令寄存器、 c指令译码器、 d存储器5.以下不是构成单片机的部件( d)a 微处理器(cpu)、b存储器c接口适配器(i\o接口电路) d 打印机6.下列不是单片机总线是( d)a 地址总线b 控制总线c 数据总线d 输出总线7.-49d的二进制补码为.( b)a 11101111b 11101101c 0001000d 111011008.十进制29的二进制表示为原码( c )a 11100010b 10101111c 00011101d 000011119. 十进制0.625转换成二进制数是( a )a 0.101b 0.111c 0.110d 0.10010 选出不是计算机中常作的码制是( d )a 原码b 反码 c补码 d ascii1-2填空1.2.十进制29的二进制表示为3.十进制数-29的8位补码表示为4.单片微型机.5.若不使用mcs-51片内存器引脚必须接地.6..7.十进制数-47用8位二进制补码表示为8.-49d的二进制补码为9.计算机中最常用的字符信息编码是10.计算机中的数称为机器数,它的实际值叫真值。
1-3判断1.我们所说的计算机实质上是计算机的硬件系统与软件系统的总称。
(√ )3.使用可编程接口必须处始化。
(√ )。
4.8155的复位引脚可与89c51的复位引脚直接相连。
(√ )8.计算机中常作的码制有原码、反码和补码(√ )9.若不使用mcs-51片内存器引脚ea必须接地. (√ )1-4简答1.何谓单片机?单片机与一般微型计算机相比,具有哪些特点?答:单片机是在一块集成电路上把cpu、存储器、定时器/计数器及多种形式的i/o接口集成在一起而构成的微型计算机。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机汇编程序设计练习
一、存储器之间的数据传送
1、编程实现将单片机内部RAM60H开始的连续32个单元置为FFH。
MOV R0,#60H
MOV R7,#32
MOV R1,#0FFH
MOV A,R1
LOOP: MOV @R0,A
INC R0
DJNZ R7,LOOP
SJMP $
END
2、编程实现将内部RAM30H开始的连续16个数传送到内部RAM50H开始的连
续单元中。
MOV R0,#30H
MOV R1,#50H
MOV R7,#16
LOOP: MOV A,@R0
MOV @R1,A
INC R0
INC R1
DJNZ R7,LOOP
SJMP $
END
3、编程实现将单片机外部RAM2000H为首地址的数据块传送到单片机内部
RAM30H开始的单元中,数据块的长度为32个字节。
4、编程实现将单片机内部RAM30H为首地址的数据块传送到外部RAM2000H
开始的单元中,数据块的长度存放于内部RAM的20H单元。
5、编程实现将单片机外部RAM2000H为首地址的数据块传送到单片机内部
RAM30H开始的单元中,直到数据内容为0DH时停止传送。
6、编程实现将ROM1000H地址的内容传送到内部RAM的25H单元。
7、编程实现将ROM2000H开始的连续10个地址的内容传送到内部RAM的25H
开始的单元。
8、编程实现将ROM1000H开始的连续100个地址的内容传送到外部RAM2000H
开始的连续单元中。
二、查表程序设计
1、编写查表程序,要查表的数据存放在R7中,其范围为0~9。编程查其平方值,
并存放于40H。
2、编写查表程序,要查表的数据存放在R7中,其范围为0~9。编程查其立方值,
并存放于R6。
3、单片机外部ROM TAB1地址开始存放一组ASCII码表,试用查表方法,将
R2的内容(范围为0~F)转换为与其对应
的ASCII码,并从P1口输出。
4、使用8051的P1口作为段控驱动共阳
LED数码管,硬件连接如图。
编程实现将8051 R7单元内容(在
00H-09H之间)显示在数码管上。00H-09H
的共阳字形代码如下表所示。
(60H) 00H 01H 02H 03H 04H 05H 06H 07H 08H 09H
字形代码
C0H F9H A4H B0H 99H 92H 82H F8H 80H 90H
三、多字节无符号数的加减法
1、编一个三字节无符号数的减法程序。被减数存放在内部RAM的30H开始的
连续三个单元中(高位在高地址),减数存放在内部RAM的40H开始的连续三
个单元中(高位在高地址),请将差存放在内部RAM的50H开始的连续三个单
元中(高位在高地址),借位存放在01H位地址
2、编一个四字节无符号数的加法程序。被加数存放在内部RAM的25H开始的
连续四个单元中(高位在高地址),加数存放在内部RAM的55H开始的连续四
个单元中(高位在高地址),请将和存放在内部RAM的25H开始的连续四个单
元中(高位在高地址),进位存放29H字节地址中。
3、编一个N字节无符号数的加法程序。被加数存放在内部RAM的符号地址AAA
开始的连续单元中(高位在低地址),加数存放在内部RAM的符号地址BBB开
始的连续单元中(高位在低地址),请将和存放在内部RAM的AAA开始的连续
单元中,进位存放符号地址JWEI字节。
四、多路散转
1、请编程实现根据A的值进行多路散转的程序。即当A=0时,调用PRO0子程
序;当A=1时,调用PRO1子程序„„,当A=10时,调用PRO10子程序。
2、
请编程实现根据R7 的值进行128路散转的程序。即当(R7)=0时,调用
CHULI0子程序;当(R7)=1时,调用CHULI1子程序„„,当A=128时,调
用CHULI128子程序。
五、软件定时程序设计
计算下面程序的延时时间:
1、 MOV R6,#TIME
LOOP:NOP
NOP
DJNZ R6,LOOP
计算当TIME=0、1、2、255时的延时时间
2、 MOV R7,#TIME1
LOOP0:MOV R6,#TIME2
LOOP1:NOP
NOP
DJNZ R6,LOOP1
DJNZ R7,LOOP0
六、数据检索程序设计
1、在内RAM20H~3FH地址的32个单元中,存放一批数据,试检索是否有与
R0寄存器内容相等的数,若检索成功,将该数据地址存放在R1,否则将FFH
存放在R1中。
2、在内RAM20H~29H地址的10个单元中,存放一批数据,试检索是否含有立
即数30H,若检索成功,将该数据地址存放在31H,否则将FFH存放在31H。
3、统计内RAM20H—4FH单元中内容为“0”的个数,并把结果存入50H单元。
七、极值查找
1、将内部RAM50H、51H单元两个无符号数中较大的数存入60H单元。
2、在内部RAM 40-4FH中存在16个无符号数,找出其中的最小数,存放到50H
单元。先画出程序框图,再编程。
3、内部RAM中有一个数据块,首地址为30H,长度存放在2BH单元,要求把
其中的最大值找出,并放到以20H单元。、
4、内部RAM以30H为首地址的一个数据块,第一个数据为该数据长度。试求
该数据的最大值,把结果放在内部RAM的70H单元中。画出程序流程图并编写
程序。
*5、内部RAM20H开始存放一组有符号的数,数据个数存放在内部RAM1FH单
元中,请编程统计其中大于0、等于0、小于0的数的个数,分别存放于70H、
71H、72H。
*6、内部RAM20H开始存放一组有符号的数,数据个数存放在内部RAM1FH单
元中,请编程将其中大于0、等于0、小于0的数分别存放于70H、60H、50H
开始的连续单元中。