四五章所有例题的程序.docx

上传人:b****6 文档编号:16151743 上传时间:2023-07-10 格式:DOCX 页数:17 大小:18.93KB
下载 相关 举报
四五章所有例题的程序.docx_第1页
第1页 / 共17页
四五章所有例题的程序.docx_第2页
第2页 / 共17页
四五章所有例题的程序.docx_第3页
第3页 / 共17页
四五章所有例题的程序.docx_第4页
第4页 / 共17页
四五章所有例题的程序.docx_第5页
第5页 / 共17页
四五章所有例题的程序.docx_第6页
第6页 / 共17页
四五章所有例题的程序.docx_第7页
第7页 / 共17页
四五章所有例题的程序.docx_第8页
第8页 / 共17页
四五章所有例题的程序.docx_第9页
第9页 / 共17页
四五章所有例题的程序.docx_第10页
第10页 / 共17页
四五章所有例题的程序.docx_第11页
第11页 / 共17页
四五章所有例题的程序.docx_第12页
第12页 / 共17页
四五章所有例题的程序.docx_第13页
第13页 / 共17页
四五章所有例题的程序.docx_第14页
第14页 / 共17页
四五章所有例题的程序.docx_第15页
第15页 / 共17页
四五章所有例题的程序.docx_第16页
第16页 / 共17页
四五章所有例题的程序.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

四五章所有例题的程序.docx

《四五章所有例题的程序.docx》由会员分享,可在线阅读,更多相关《四五章所有例题的程序.docx(17页珍藏版)》请在冰点文库上搜索。

四五章所有例题的程序.docx

四五章所有例题的程序

第三四章所有例题程序

例3-1:

设内部RAM中30H的单元内容50H,试分析执行执行下面程序后各有关的单元内容

MOV60H,#30H;

MOVRO,#60H;

MOVA,@R0;

MOVR1,A,;

MOV40H,@R1;

MOV60H,30H;

例3-2:

将累加器A中的内容送入外部数据存储器的60H单元

MOVRO,#60H;

MOVX@R0,A;

例3-3:

进入中断服务程序后,(SP)=30H,(DPTR)=5544H

PUSHDPL;

PUSHDPH;

例3-4:

设(A)=0ABH,(R1)=12H,执行指令XCHA,R1;则结果为(A)=12H,(R1)=0ABH

SWAPA;

例3-5:

设(A)=0ABH,执行指令“SWAPA”后,(A)=0BAH

XCHDA,@Ri;

例3-6:

设(A)=12H,(R0)=30H,(30H)=45,执行指令“XCHDA,@R0”后则结果为(A)=15H,(30H)=42H

MOVXA,2DPTR;

MOVX@DPTR,A;

MOVX@Ri,A;

例3-7:

将外部存储数据器的2000H单元的内容传送到内部RAM的70H单元

MOVDPTR,#2000H;

MOVXA,@DPTR;

MOV70H,A;

例3-8:

执行下列指令

1232H:

MOVA,#30H

1234H:

MOVCA,@A+PC

1235:

MOV60H,A

……

1265H:

3FH

……

例3-9:

已知累加器A中有一个0~9范围内的数,试用以上查表指令编出能查找出该平方值得程序

MOVDPTR,#1000H;

MOVCA,@A+DPTR;

例3-11:

设有两个四位BCD码,分别存放在内部储存器的50H-51H单元和60H-61H单元中,试编写求这两数之和的程序,结果存放到40H-41H单元中

MOVA,50H;

ADDA,60H;

DAA;

MOV40H,A;

MOVA,51H;

ADDCA,61H;

DAA;

MOV41H,A;

例3-12:

设(A)=0BAH,(R1)=88H;执行指令

ADDA,R1

例3-13:

设(A)=0BAH,(R1)=88H;(CY)=1;执行指令

SUBBA,R1

例3-14:

试编写计算“123H+5678H”的程序

MOVA,#34H;

ADDA,#78H;

MOVR6,A;

MOVA,#12H;

ADDCA,#56H;

MOVR7,A;

例3-15:

设(A)=56H,(B)=78H,执行指令

MULAB

例3-16:

设(A)=50H,(B)=28H,执行指令

DIVAB

例3-17:

将累加器A中的BCD码分为两个字节,形成非压缩BCD码,放入40H和41H单元中

MOVR0,A;

ANLA,#00001111B:

MOV40H,A;

MOVA,R0;

ANLA,#11110000B;

SWAPA;

MOV41H,A;

例3-18:

将P1口高四位不变,把累加器A中的第四位由P1口的第四位输出

ANLA,#00001111B;

MOVR0,A;

MOVAP1;

ANLA,#11110000B;

ORLA,R0;

MOVP1,A;

例3-20:

要求当(A)=00H时,程序散转到KEY0;当(A)=01H时,散转到KEY1等

CLRC;

RLCA;

MOVDPTR,#TABLE

JMP@A+DPTR

……

TABLE:

JAMPKEY0

JAMPKEY1

JAMPKEY2

……

例3-22:

已知内部RAM的M1和M2的单元中各有一个无符号8位二进制数,试编程比较他们的大小,并把大数送到MAX单元

MOVA,M1;

CJNEA,M2,LOOP;

LOOP:

JNCLOOP1;

MOVA,M2;

LOOP1:

MOVMAX,A;

RET;

例3-23:

试编程把56H位中的内容和78H位中的内容相交换

MOVC,56H;

MOV00H,C;

MOVC,78H;

MOV56H,C;

MOVC,00H;

MOV78H,C;

例3-24

MOVC,P1.0;

ANLC,P1.1;

CPLC;

MOV00H,C;

MOVC,P1.2;

ANLC,P1.3;

ANLC,/P1.3;

ORLC,00H;

CPLC;

MOVP1.4,C;

例4-1:

将目标程序从2000H单元开始存放

ORG2000H

MOVA,20H

例4-2:

下列伪指令汇编后,存储器相应地址里的内容是什么

ORG8000H

SUJU:

DB09,12H,‘A’

ZIFU:

’ABC’

例4-3:

下面DW伪指令汇编后,9000H-9003H地址里的内容是多少

9000H:

DW5566H,88H

例4-4:

用伪指令实现从8000H单元开始,预留连续16个存储单元,然后从8010H单元开始,按DB命令给内存单元赋值,即(8010H)=11H,(8011H)=22H

ORG8000H

SEG:

DS16

DB11H,22H

例4-5:

将内部数据存储器50H单元中的一个8位二进制数拆开,分成两个4位数,高四位存入61H单元,低四位存入60H单元,60H,61H,单元的高四位清零

ORG8000H

CZCX:

MOVR0,#50H

MOVR1,#60H

MOVA,@R0

ANLA,#0FH

MOV@R1,A

INCR1

MOVA,@R0

ANLA,#0F0H

SWAPA

MOV@R1,A

SJMP$

例4-6:

将一个字节十六进制数转换成BCD码

ORG4000H

MOVA,56H

MOVB,#100

DIVAB

MOVR0,A

XCHA,B

MOVB,#10

DIVAB

MOVR1,A

MOVR2,B

SJJMP$

例4-7:

一位十六进制数转换为ASCII码,设十六进制数在AZ中(A的高四位为0),至转换结果仍存预A中

CJNEA,#10,NO10

NO10:

JCLT10

ADDA,#07H

LT10:

ADDA,#30H

SJMP$

例4.8

ORG8000H

FHHS:

MOVA,35H

CJNEA,#0,NEQ0

MOVA,#00H

SJMPOK

NEQ0:

CJNEA,#7FH,ISZF

SJMPGT0

ISZF:

JNCLT0

GT0:

MOVA,#01H

SJMPOK

LT0:

MOVA,#0FFH

OK:

MOV36H,A

SJMPS

例4.9:

假设累加器A中的内容为0-4,实现编程根据累加器A的内容实现不同的处理

START:

MOVR0,A

ADDA,R0

ADDA,R0

MOVDPTR,#TABLE

JMP@A+DPTR

TABLE:

LJMPFZ0

LJMPFZ1

LJMPFZ2

LJMPFZ3

LJMPFZ4

例4.10:

将内部数据RAM中的20H-3FH单元的内容传送到外部数据存储以2000H开始的连续单元中去

START:

MOVR0,#20H

MOVDPTR,#2000H

MOVR1,#32

LOOP:

MOVA,@R0

MOVX@DPTR,A

INCR0

INCDPTR

DJMPR1,LOOP

SJMP$

例4.11:

设计20ms延时程序

DL20MS:

MOVR4,#100

DELAY1:

MOVR3,#100

DELAY2:

DJNZR3,DELAY2

DJNZR4,DELAY1

RET

 

例4.12:

把单片机内RAM中地址40H-49H中的10个无符号数逐一比较,并按从小到大的顺序依次排列在这片单元中

START:

CLRF0

MOVR3,#9

MOVR0,#40H

MOVA,@R0

L2:

INCR0

MOVR2,A

SUBBA,@R0

MOVA,R2

JCL1

SETBF0

XCHA,@R0

DECR0

XCHA,@R0

INCR0

L1:

MOVA,R0

DJNZR3,L2

JBF0,START

RET

例4.13:

通过调用子程序实现延时100ms

DL1MS:

MOVR2,#250J

LOOP:

NOP

NOP

DJNZR2,LOOP

DJNZR3,DL1MS

RET

PUSHPSW

MOVPSW,#08H

MOVR3,#100

ACALLDL1MS

POPPSW

例4.14:

n字节求补子程序

QUBU:

MOVA,@R0

CPLA

ADDA,#01H

MOV@R0,A

NEXT:

INCR0

MOVA,@R0

CPLA

ADDCA,#0

MOV@R0,A

DJNZR7,NEXT

RET

例4.15:

将存于R0中的一位十六进制数(R0高四位为0)转换为七段显示吗,并将结果送至P1口显示。

设七段显示器为共阴极接法

HTLED:

PUSHACC

MOVA,R0

ADDA,#5

MOVCA,@A+PC

MOVP1,A

POPP1,A

RET

TABLE:

DB40H,79H,24H,30H

DB19H,12H,02H,78H

DB00H,18H,08H,03H

DB46H,21H,06H,0EH

例4.16:

程序存储器中有一个5行*8列的表格,要求把下标行变量为I,列变成J的元素读入到累加器中

IEQU3

JEQU4

TABIJ:

MOVA,#I

MOVB,#8

MULAB

ADDA,#J

MOVDPTR,#BASE

MOVCA,@A+DPTR

RET

……

……

BASE:

DB01,02,03,04,05,06,07,08

DB11,12,13,14,15,16,17,18

DB01,02,03,04,05,06,07,08

DB01,02,03,04,05,06,07,08

DB01,02,03,04,05,06,07,08

例4.17:

ASCII码转换为二进制数

ASCBIN:

MOVA,R0

CLRC

SUBBA,#30H

MOVR0,A

SUBBA,#10

JCAEND

MOVA,R0

SUBBA,#07H

MOVR0,A

AEND:

RET

 

例4.18:

16位数加1子程序

ADD1:

MOVA,R6

ADDA,#1

MOVR6,A

MOVA,R7

ADDCA,#0

MOVR7,A

RET

例4.19:

多字节无符号数的加法

ADDMB:

CLRC

LOOP:

MOVA,@R0

ADDCA,@R1

MOV@R0,A

DECR0

DECR1

DJNZR2,LOOP

JNCNOCP

MOV@R0,#01H

SJMPENDA

NOCY:

DECR0

ENDA:

RET

例4-20双字节无符号数乘法

MULB1N:

MOVA,R1;

MOVR6,A

MOVR7,#04H

CLEAR:

MOV@R1,#00H

INCR1

DJNZR7,CLEAR

MOVA,R6

MOVR1,A

MUL:

MOVA,R2

MOVB,R4

MULAB

ACALLADDM

MOVA,R2

MOVB,R5

MULAB

ACALLADDM

MOVA,R3

MOVA,R4

MULAB

DECR1

ACALLADDM

MOVA,R3

MOVB,R5

MULAB

ACALLADDM

MOVA,R6

MOVR1,A

RET

子程序如下:

ADDM:

ADDA@R1

MOV@R1,A

MOVA,B

INCR1

ADDCA,@R1

MOV@R1,A

INCR1

MOVA,@R1

ADDCA,#0

MOV@R1,A

例4-21:

片外RAM中从ADIN处开始存放16个字节数据信号,编程实现用算术平均值的方法进行滤波。

结果存放在累加器A中

AV16D:

MOVR7,#16H

MOVDPTR,#ADIN

MOVR5,#0

MOVR6,#0

LOOP:

MOVXA,@DPTR

ADDA,R5

MOVR5,A

MOVA,R6

ADDCA,#0

MOVR6,A

INCDPTR

DJNZR7,LOOP

MOVR7,#4

LOOP1:

CLC

MOVA,R6

RRCA

MOVR6,A

MOVA,R5

RRCA

MOVR5,A

DJNZR7,LOOP1

RET

例4-22:

在指定区域找出最大值

MOVA,#0

LOOP:

CJNEA,@R0,PDDX

PDDX:

JNCAISB

MOVA,@R0

AISB:

INCR0

DINJR7,LOOP

RET

例4-23求解下试给出的U-Z等六个布尔变量的逻辑函数:

Q=(V+W)+(X+Y拔)+Z拔

UBITP1.1

VBITP2.2

WBITTF0

XBITIE1

YBIT20H.0

ZBIT21H.1

QBITP3.3

MOVC,V

ORLC,W

ANLC,U

MOVF0,C

MOVC,X

ANLC,/Y

ORLC,F0

ORLC,/Z

MOVQ,C

例4-24:

左格式化子程序

NORM:

MOVA,@R0

MOVC,A.7

MOVF0,C

INCR0

MOVC,A6

MOVA.7,C

MOVR2,A

NORM1:

MOVA,@R0

INCR0

JNZNORM3

MOVA,@R0

JNZNORM4

DECR0

DECR0

MOVA,#40H

NORM2:

MOVC,F0

MOVA.7,C

MOV@R0,A

RET

NORM3:

JBA.7,NORM5

NORM4:

CLRC

MOVA,@R0

RLCA

MOV@R0,A

DECR0

MOVA,@R0

RLCA

MOV@R0,A

INCR0

DECR2

CJNER2,#0C0H,NORM3

NORM5:

DECR0

DECR0

MOVA,R2

SJMPNORM2

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

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2