第四章汇编语言程序设计.docx

上传人:b****0 文档编号:285392 上传时间:2022-10-08 格式:DOCX 页数:21 大小:34.66KB
下载 相关 举报
第四章汇编语言程序设计.docx_第1页
第1页 / 共21页
第四章汇编语言程序设计.docx_第2页
第2页 / 共21页
第四章汇编语言程序设计.docx_第3页
第3页 / 共21页
第四章汇编语言程序设计.docx_第4页
第4页 / 共21页
第四章汇编语言程序设计.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

第四章汇编语言程序设计.docx

《第四章汇编语言程序设计.docx》由会员分享,可在线阅读,更多相关《第四章汇编语言程序设计.docx(21页珍藏版)》请在冰豆网上搜索。

第四章汇编语言程序设计.docx

第四章汇编语言程序设计

第四章汇编语言程序设计

1、编程将片内40H~60H单元中的内容送到以3000H为首的存储区内。

答:

MOVR1,#40H

MOVR2,#21H

MOVDPTR,#3000H

L1:

MOVA,@R1

MOVX@DPTR,A

INCR1

INCDPTR

DJNZR2,L1

2、编程计算下列算式的程序

(1)23H+45H+ABH+03H=

MOVA,#23H

ADDA,#45H

ADDA,#0ABH

XCHA,B;溢出处理

ADDCA,#00H

XCHA,B

ADDA,#03H;A中为结果低位,B中为高位

(2)CDH+15H-38H-46H=

MOVA,#0CDH

ADDA,#15H

SUBBA,#38H

SUBBA,#46H

(3)1234H+8347H=

MOVA,#34H

ADDA,#47H

MOV30H,A

MOVA,#12H

ADDCA,#83H

MOV31,A;30H存结果低位,31H存结果高位

(4)AB123H-43ADCH=

CLRC

MOVA,#23H

SUBBA,DCH

MOV30H,A

MOVA,#0B1H

SUBBA,#3AH

MOV31H,A

MOVA,#0AH

SUBBA,,#04H

MOV32H,A;30H为低位,32H为高位

3、设有两个4位BCD码,分别存放在23H、22H单元和33H、32H单元中,求他们的和,并送入43H、42H单元中(低位在低字节,高位在高字节)。

答:

MOVA,22H

ADDA,32H

MOV42H,A

MOVA,23H

ADDCA,33H

MOV43H,A

4、略

5、编程计算片内RAM区50H~59H单元中数的平均值,结果存放在5AH中。

答:

MOVR0,#8

MOVR1,#50H

MOVA,#00H

L1:

ADDA,@R1

INCR1

DJNZR0,L1

MOVB,#8

DIVAB

MOV5AH,A

6、编写计算下式的程序。

设乘积和平方结果均小于255。

a、b值分别存在片外3001H和3002H单元中,结果存于片外3000H单元中。

(1)

MOVDPTR,#3001H

MOVXA,@DPTR

MOV30H,A;a暂存30H单元

INCDPL

MOVXA,@DPTR

CJNEA,30H,L1;是否a=b

MOVA,#25

SJMPSAVE

L1:

JNCL2

MOVB,30H

MULAB

SJMPSAVE

L2:

MOVB,A

MOVA,30H

DIVAB

SAVE:

MOVDPTR,#3000H

MOVX@DPRT,A

(2)

MOVDPTR,#3001H

MOVXA,@DPTR

MOV30H,A

INCDPTR

MOVXA,@DPTR

ADDA,30H

MOVB,A

MULAB;(a+b)2

MOV31H,A

CJNEA,#10,L1

SJMPSAVE

L1:

JCL2

CLRC

SUBBA,#10

SJMPSAVE

L2:

ADDA,#10

SAVE:

MOVDPTR,#3000H

MOVC@DPTR,A

7、设有两个长度均为15的数组,分别存放在以200H和210H为首地址的存储区中,试编程求其对应项之和,结果存放到以220H为首地址的存储区中。

答:

MOVDPH,#02H

MOVR1,#15

MOVR2,#00H;数组1首地址低位

MOVR3,#10H;数组2首地址低位

MOVR4,#20H;和首地址低位

L1:

MOVDPL,R2

MOVXA,@DPTR

MOVR1,A

MOVDPL,R3

MOVXA,@DPTR

ADDA,R1

MOVDPL,R4

MOVX@DTPR,A

INCR2

INCR3

INCR4

DJNZR1,L1

SJMP$

8、设有100个无符号数,连续存放在以2000H为首地址的存储区中,试编程统计正数、负数和零的个数。

答:

MOV30H,#00H;正数计数器

MOV31H,#00H;负数计数器

MOV32H,#00H;零计数器

MOVDPTR,#2000H

MOVR1,#100

L4:

MOVXA,@DPTR

INCDPTR

CJNEA,#0,L1

INC32H

SJMPL2

L1:

JCL3

INC30H

SJMPL2

L3:

INC31H

L2:

DJNZR1,L4

SJMP$

9、将片外数据存储器地址为1000H~1030H的数据块,全部搬迁到片内RAM30H~60H中,并将原数据块区域全部清零。

答:

MOVR0,#30H

MOVR2,#31H

MOVDPTR,#1000H

LP:

MOVXA,@DPTR

MOV@R0,A

ANDA,#00H

MOVX@DPTR,A

INCR0

INCDPTR

DJNZR2,LP

SJMP$

 

10、试编写一子程序,是R1、R0指向的两个片外RAM连续单元中的高4位二进制数,合并成一个字节,装入累加器A中。

已知R0指向低地址,并要求该单元高四位放在A中高四位。

答:

MOVXA,@R1

ANLA,#0F0H

SWAPA

MOVR2,A

MOVXA,@R0

ANLA,#0F0H

ORLA,R2

11、试编程把以2040H为首地址的连续50个单元的无符号数按降序排列,存放到以3000H为首地址的存储区中。

答:

MOVR2,#50

MOVR3,#20H

MOVR4,#40H;源地址

MOVR5,#30H

MOVR6,#00H;目的地址

SEND:

MOVDPH,R3;SEND将2040H数据块移入3000H存储区

MOVDPL,R4

MOVXA,@DPTR

INCDPTR

MOVR3,DPH

MOVR4,DPL

MOVDPH,R5

MOVDPL,R6

MOVX@DPTR,A

INCDPTR

MOVR5,DPH

MOVR6,DPL

DJNZR2,SEND

MOVR2,#49;重复次数

CMP1:

MOVDPTR,#3000H

MOVR3,#49;比较次数

CMP2:

MOVXA,@DPTR

MOVB,A

INCDPTR

MOVXA,@DPTR

CJNEA,B,L1

L1:

JCNOMOVE

MOV30H,A

CLRC

MOVA,DPL

SUBBA,#01H

MOVDPL,A

MOVA,30H

MOVX@DPTR,A

INCDPTR

MOVA,B

MOVX@DPTR,A

NOMOVE:

DJNZR3,CMP2;50个数重复一遍?

DJNZR2,CMP1;排序结束?

LJMP$

12、试编一查表程序,从首地址为2000H,长度为100的数据块中找出ASCII码为A,将其地址送到20A0H和20A1H单元中。

答:

MOVDPTR,#2000H

MOVR2,#100

GO_ON:

MOVXA,@DPTR

CJNEA,#41H,IFEND

MOVA,DPH

MOVB,DPL

MOVDPTR,#20A0H

MOVX@DPTR,A

INCDPTR

XCHA,B

MOVX@DPTR,A

SJMPOVER

IFEND:

INCDPTR

DJNZR2,GO_ON

OVER:

SJMPOVER

13、设在200H~204H单元中,存放5个压缩BCD码,编程将他们转换成ASCII码,存放到以205H单元为首地址的存储区。

答:

MOVR2,#05H

MOVR3,#02H

MOVR4,#00H

MOVR5,#02H

MOVR6,#05H

CHLP:

MOVDPH,R3

MOVDPL,R4

MOVXA,@DPTR

INCDPTR

MOVR3,DPH

MOVR4,DPL

MOVB,A

SWAPA

ANLA,#0FH

ORLA,#30H

MOVDPH,R5

MOVDPL,R6

MOVX@DPTR,A

INCDPTR

MOVA,B

ANLA,#0FH

ORLA,#30H

MOVX@DPTR,A

MOVR5,DPH

MOVR6,DPL

DJNZR2,CHLP

14、有一无符号数据块长度在30H单元中,其首地址为31H单元,求出数据块中最大值,并存入40H中。

答:

MOVR0,#31H

MOVR1,30H

MOV40H,#00H

LOOP:

MOVA,@R0

CJNEA,40H,L1

SJMPAGAIN

L1:

JNCL2

SJMPAGAIN

L2:

MOV40H,A

AGAIN:

INCR0

DJNZR1,LOOP

SJMP$

15、略

16、在以2000H为首地址的存储区内,存放20个用ASCII码表示的0~9之间的数,试编程,将它们转换成BCD码,并以压缩BCD码的形式存在3000H~3009H单元中。

答:

MOVR2,#10

MOVR3,#20H

MOVR4,#00H

MOVR5,#30H

MOVR6,#00H

LP:

MOVDPH,R3

MOVDPL,R4

MOVXA,@DPTR

ANLA,#0FH

SWAPA

XCHA,B

INCDPTR

MOVXA,@DPTR

ANLA,#0FH

ORLA,B

INCDPTR

MOVR3,DPH

MOVR4,DPL

MOVDPH,R5

MOVDPL,R6

MOVX@DPTR,A

INCDPTR

MOVR5,DPH

MOVR6,DPL

DJNZR2,LP

SJMP$

17、试编程实现下列逻辑表达式功能。

设P1.7~P1.0为8个变量的输入端,而其中P1.7又作为变量的输出端。

;输入端定义

X0EQUP1.0

X1EQUP1.1

X2EQUP1.2

X3EQUP1.3

X4EQUP1.4

X5EQUP1.5

X6EQUP1.6

X7EQUP1.7

(1)

MOVC,X0

ANLC,X1

ANLC,/X2

ORLC,X3

MOV00H,C

MOVC,X4

ANLC,X5

ANLC,X6

ORLC,/X7

ORLC,00H

MOVP1.7,C

(2)

MOVC,X0

ANLC,X1

CPLC

MOV00H,C

MOVC,X2

ANLC,X3

ANLC,X4

CPLC

MOV01H,C

MOVC,X5

ANLC,X6

ANLC,X7

CPLC

ORLC,O1H

CPLC

ORLC,00H

MOVP1.7,C

18、略

19、略

20、试编写延时1s、1min、1h子程序。

;单片机时钟fosc=12MHz,计算为近似值

;1s延时子程序

DLY_1S:

MOVR0,#10

L3:

MOVR1,#200

L2:

MOVR2,#250

L1:

DJNZR2,L1

DJNZR1,L2

DJNZR0,L3

RET

;延时1min

DLY_1M:

MOVR3,#60

L4:

LCALLDLY_1S

DJNZR3,L4

RET

;延时1h

DLY_1H:

MOVR4,#60

L5:

LCALLDLY_1M

DJNZR4,L5

RET

 

21、用程序实现c=a2+b2。

设a、b均小于10,a存在31H单元中,b存在32H单元中,c存33H单元。

答:

ORG1000H

SR:

MOVA,31H

ACALLSQR

MOVR1,A

MOVA,32H

ACALLSQR

ADDA,R1

MOV33H,A

SJMP$

;求平方子程序如下(采用查平方表的方法)

SQR:

INCA

MOVCA,@A+PC

RET

TABLE:

DB0,1,4,9,16

DB25,36,49,64,81

EN

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1