习题三答案单片机汇编程序设计基础.doc_第1页
习题三答案单片机汇编程序设计基础.doc_第2页
习题三答案单片机汇编程序设计基础.doc_第3页
习题三答案单片机汇编程序设计基础.doc_第4页
习题三答案单片机汇编程序设计基础.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单片机汇编程序设计基础 习题答案一、填空题1、给程序做注释使用 ;(或半角分) 号来标识。2、注释可以写在 一行指令上 ,也可以写在 一个指令 之后。3、在设计汇编语言源程序时,可以使用顺序结构的程序,也可以使用某些指令构成分支 结构、循环 结构和 子程序调用 结构的程序。4、寻址方式是指 寻找操作数的方式 。5、机器语言是 机器码的集合 。6、MCS-51单片机的指令的一般格式中,包括 标号 、助记符 、 目的操作数 、源操作数 和 注释等部分。7、MCS-51汇编语言源程序的扩展名为 asm。二、程序设计题1、求50H与40H单元内容之和,结果存入20H,进位位存入2lH。解答: MOV A。50 H ADD A,40H MOV 20HA CLR A ADDC A#00H MOV 21H,A SJMP $2、编程实现双字节加法运算(R1)(R0)+(R7)(R6)一(31H)(30H)。解答:MOV AR0 ADD A,R6 MOV 30HA MOV A,R1 ADDC AR7MOV 31H,ASJMP $3、试编写程序,求出内部RAM20H单元中的数据含“1”的数,并将结果存入21H单元。解答 MOV 21H,#00HMOV A,20HCLR C MOV R7,#08HLOOP: RLC AJNC NEXTINC 21HNEXT: DJNZ R7,LOOPSJMP $4、试编写程序,将内部RAM的20H2FH共16个连续单元清零。解答:MOV R0,#20HMOV R7,#10HCLR A NEXT:MOV R0,AINC R0DJNZ R7,NEXT SJMP $5、编程将片内RAM30H单元开始的B的数据传送到片外RAM3000H开始的单元中去。解答:STRAT:MOV R0,#30H MOV R7,#0FH MOV DPTR,#3000H LOOP: MOV A,R0 MOVX DPTR,A INC R0 INC DPTR DJNZ R7,LOOP RET6、片内RAM30H开始的单元中有10B的二进制数,请编程求它们之和(和256 )解答: ADDIO:MOV R0,30H MOV R7,#9 MOV A,R0 LOOP: INC R0 ADD A,R0 DJNZ R7,LOOP MOV 30H,A RET7、 试编写程序,查找在内部RAM的30H50H单元中出现FFH的次数,并将查找的结果存入51H单元。解答:MOV 51H,#00HMOV R1,#30HMOV R7,#21HLOOP:CJNE R1,#0FFH,NEXT INC 51HNEXT:INC R1DJNZ R7,LOOPSJMP $8、设单片机的fosc=6MHz,编写实现100ms延时的子程序。解答:DELAY: MOV R7,#64HA0: MOV R6,#0FAH DJNZ R6,$DJNZ R7,A0RET9、 从内部RAM的30H单元开始存放一组用补码表示的带符号数,其数目以存放在20H单元。编写程序统计出其中的正数、0和负数的数目,并奖结果分别存入21H、22H、23H单元。解答:MOV R0,#30HMOV 21H,#00HMOV 22H,#00HMOV 23H,#00HMOV A,R0JZ NEXT1JB ACC.7,NEXT2INC 23HSJMP NEXT3NEXT2: INC 21HSJMP NEXT3NEXT1:INC 22HNEXT3:INC R0DJNZ 20H,LOOPSJMP $10、 在程序存储器中从tab开始的16个单元连续存放0-15的平方值,设计程序,任意给一个数x(0x15),查表求出z的平方值,并把结果存入y单元。解答:设x单元为30H,Y单元为31H。文件名:aasm ,查表求x的平方值,X的值在015之间。 ORG 3000H MOV DPTR,#tab MOV A,X MOVC A,A+DPTR MOV y,ASJMP $tab:DB 00H,01H,04H,09H,10H,19H,24H,31 H DB 40H,51H,64H,79H,90H,0A9H,0C4H,0E1H X DATA 30H Y DATA 31H END11、 从XX单元开始,连续存放10个无符号数,设计程序,从中找出最大值送入yy单元。解答:设XX单元为40H,YY单元为30H。 ORG 0020H MOV R0#xx MOV B,R0 MOV R7#09H INC R0LOOP: MOV A,B CLR C SUBB A,R0 JNC NEXT MOV B,R0NEXT:INC R0 DJNZ R7,LOOP MOV YY,BSJMP $XX DATA 40HYY DAIA 30HEND12、 从x单元开始,连续存放30个无符号数,统计奇数和偶数的个数,并分别存入y和z单元。解答:设x单元为30H,Y单元为50H,z单元为51H。 ORG 2000HSTART:MOV R1,#00H MOV R2,#00H MOV R7,#1EH MOV R0,#XLOOP:MOV A,R0 JNB ACC0,NEXT INC R1 SJMP A1NEXT:INC R2Al:INC R0 DJNZ R7,LOOP MOV y,R1 MOV Z,R2 SJMP $x DATA 30Hy DATA 50Hz DATA 5lH END13、从x单元开始,连续存放30个带符号数,求出各个数的绝对值,将结果存入原单元。解答:设 x 单元为30H START:MOV R7,#1EH MOV R0,#XLOOP: MOV A,R0JNB ACC.7,NEXTCPL AINC AMOV R0,ANEXT: INC R0DJNZ R7,LOOPSJMP $X DATA 30HEND14 、用查表法编一子程序,将R3中的BCD码转换成ASCII码.解:MAIN: MOV A,R3 ;待转换的数送A MOV DPTR,#TAR ;表首地址送DPTR MOVC A,A+DPTR ;查ASCII码表 MOV R3,A ;查表结果送R3 RET TAR DB 30H,31H,32H,33H,34H DB 35H,36H,37H,38H,39H15、 片内RAM40H开始的单元内有10B二进制数,编程找出其中最大值并存于50H单元中解: START: MOV R0,#40H ;数据块首地址送R0 MOV R7,#09H ;比较次数送 MOV A,R0 ;取数送 LOOP: INC R0 MOV 30H,R0 ;取数送H CJNE A,30H,NEHT ;(A)与(30H)相比 NEXT: JNC BIE1 ;(A)(30H)转BIR1 MOV A,30H ;(A)(30H),大数送A BIE1: DJNZ R7,LOOP ;比较次数减1,不为0,继续比较 MOV 50H,A ;比较结束,大数送50H RET 16、利用调子程序的方法,进行两个无符号数相加。请编主程序及子程序。解 用R0和R1作数据指针,R0指向第一个加数,并兼作“和”的指针,指向另一个加数,字节存放到中作计数初值。主程序:JAFA: MOV R0,#20H ;指向加数最低字节MOV R1,#29H ;指向另一加数最低字节MOV R2,#04H ;字节数作计数值ACALL JASUB ;调用加法子程

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论