第四章汇编语言程序设计Word格式.docx
- 文档编号:13215196
- 上传时间:2022-10-08
- 格式:DOCX
- 页数:21
- 大小:34.66KB
第四章汇编语言程序设计Word格式.docx
《第四章汇编语言程序设计Word格式.docx》由会员分享,可在线阅读,更多相关《第四章汇编语言程序设计Word格式.docx(21页珍藏版)》请在冰豆网上搜索。
(3)1234H+8347H=
MOVA,#34H
ADDA,#47H
MOV30H,A
MOVA,#12H
ADDCA,#83H
MOV31,A;
30H存结果低位,31H存结果高位
(4)AB123H-43ADCH=
CLRC
SUBBA,DCH
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
ADDA,@R1
DJNZR0,L1
MOVB,#8
DIVAB
MOV5AH,A
6、编写计算下式的程序。
设乘积和平方结果均小于255。
a、b值分别存在片外3001H和3002H单元中,结果存于片外3000H单元中。
(1)
MOVDPTR,#3001H
MOVXA,@DPTR
MOV30H,A;
a暂存30H单元
INCDPL
CJNEA,30H,L1;
是否a=b
MOVA,#25
SJMPSAVE
JNCL2
MOVB,30H
MULAB
L2:
MOVB,A
MOVA,30H
SAVE:
MOVX@DPRT,A
(2)
ADDA,30H
MULAB;
(a+b)2
CJNEA,#10,L1
JCL2
SUBBA,#10
ADDA,#10
MOVC@DPTR,A
7、设有两个长度均为15的数组,分别存放在以200H和210H为首地址的存储区中,试编程求其对应项之和,结果存放到以220H为首地址的存储区中。
MOVDPH,#02H
MOVR1,#15
MOVR2,#00H;
数组1首地址低位
MOVR3,#10H;
数组2首地址低位
MOVR4,#20H;
和首地址低位
MOVDPL,R2
MOVR1,A
MOVDPL,R3
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:
CJNEA,#0,L1
INC32H
SJMPL2
JCL3
INC30H
L3:
INC31H
DJNZR1,L4
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
10、试编写一子程序,是R1、R0指向的两个片外RAM连续单元中的高4位二进制数,合并成一个字节,装入累加器A中。
已知R0指向低地址,并要求该单元高四位放在A中高四位。
MOVXA,@R1
ANLA,#0F0H
SWAPA
MOVR2,A
MOVXA,@R0
ORLA,R2
11、试编程把以2040H为首地址的连续50个单元的无符号数按降序排列,存放到以3000H为首地址的存储区中。
MOVR2,#50
MOVR3,#20H
MOVR4,#40H;
源地址
MOVR5,#30H
MOVR6,#00H;
目的地址
SEND:
MOVDPH,R3;
SEND将2040H数据块移入3000H存储区
MOVR3,DPH
MOVR4,DPL
MOVDPH,R5
MOVDPL,R6
MOVR5,DPH
MOVR6,DPL
DJNZR2,SEND
MOVR2,#49;
重复次数
CMP1:
MOVR3,#49;
比较次数
CMP2:
CJNEA,B,L1
JCNOMOVE
MOVA,DPL
SUBBA,#01H
MOVDPL,A
MOVA,B
NOMOVE:
DJNZR3,CMP2;
50个数重复一遍?
DJNZR2,CMP1;
排序结束?
LJMP$
12、试编一查表程序,从首地址为2000H,长度为100的数据块中找出ASCII码为A,将其地址送到20A0H和20A1H单元中。
MOVR2,#100
GO_ON:
CJNEA,#41H,IFEND
MOVA,DPH
MOVB,DPL
MOVDPTR,#20A0H
SJMPOVER
IFEND:
DJNZR2,GO_ON
OVER:
13、设在200H~204H单元中,存放5个压缩BCD码,编程将他们转换成ASCII码,存放到以205H单元为首地址的存储区。
MOVR2,#05H
MOVR3,#02H
MOVR4,#00H
MOVR5,#02H
MOVR6,#05H
CHLP:
MOVDPH,R3
ANLA,#0FH
ORLA,#30H
DJNZR2,CHLP
14、有一无符号数据块长度在30H单元中,其首地址为31H单元,求出数据块中最大值,并存入40H中。
MOVR0,#31H
MOVR1,30H
MOV40H,#00H
LOOP:
MOVA,@R0
CJNEA,40H,L1
SJMPAGAIN
MOV40H,A
AGAIN:
INCR0
DJNZR1,LOOP
15、略
16、在以2000H为首地址的存储区内,存放20个用ASCII码表示的0~9之间的数,试编程,将它们转换成BCD码,并以压缩BCD码的形式存在3000H~3009H单元中。
MOVR2,#10
MOVR6,#00H
ORLA,B
DJNZR2,LP
17、试编程实现下列逻辑表达式功能。
设P1.7~P1.0为8个变量的输入端,而其中P1.7又作为变量的输出端。
;
输入端定义
X0EQUP1.0
X1EQUP1.1
X2EQUP1.2
X3EQUP1.3
X4EQUP1.4
X5EQUP1.5
X6EQUP1.6
X7EQUP1.7
MOVC,X0
ANLC,X1
ANLC,/X2
ORLC,X3
MOV00H,C
MOVC,X4
ANLC,X5
ANLC,X6
ORLC,/X7
ORLC,00H
MOVP1.7,C
CPLC
MOVC,X2
ANLC,X3
ANLC,X4
MOV01H,C
MOVC,X5
ANLC,X7
ORLC,O1H
18、略
19、略
20、试编写延时1s、1min、1h子程序。
单片机时钟fosc=12MHz,计算为近似值
1s延时子程序
DLY_1S:
MOVR0,#10
MOVR1,#200
MOVR2,#250
DJNZR1,L2
DJNZR0,L3
RET
延时1min
DLY_1M:
MOVR3,#60
LCALLDLY_1S
DJNZR3,L4
延时1h
DLY_1H:
MOVR4,#60
L5:
LCALLDLY_1M
DJNZR4,L5
21、用程序实现c=a2+b2。
设a、b均小于10,a存在31H单元中,b存在32H单元中,c存33H单元。
ORG1000H
SR:
MOVA,31H
ACALLSQR
MOVA,32H
MOV33H,A
求平方子程序如下(采用查平方表的方法)
SQR:
INCA
MOVCA,@A+PC
TABLE:
DB0,1,4,9,16
DB25,36,49,64,81
EN
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第四 汇编语言 程序设计