几个简单的汇编程序_第1页
几个简单的汇编程序_第2页
几个简单的汇编程序_第3页
几个简单的汇编程序_第4页
几个简单的汇编程序_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

51汇编语言程序设计流水灯程序

ORG0

JMP

MAIN

ORG 0030HMAIN:

MOV A,#0FEHLOOP:

MOV P1,A

RLA

CALL

DELAY

JMP

LOOP

DELAY: ;延时子程序

MOV R0,#0FFH MOV R1,#0FFHDLY_LP: NOP NOP DJNZ R0,DLY_LP MOV R0,#0FFH DJNZ R1,DLY_LP RET

END数码管流水程序A直接赋值 org0 jmpmain org0030hmain: movp2,#00h movp0,#3fh callDELAY movp2,#04h movp0,#06h callDELAY

jmpmain;延时子程序DELAY:

MOV R0,#0FFH MOV R1,#0FFHDLY_LP: NOP NOP DJNZ R0,DLY_LP MOV R0,#0FFH DJNZ R1,DLY_LP RET

end数码管流水程序B查表 org0 jmpmain org0030hmain: movdptr,#DIS_CODEloop: mova,#00h movp2,#00h movca,@a+dptr movp0,a callDELAY mova,#01h movp2,#04h movca,@a+dptr movp0,a callDELAY

jmploopDIS_CODE:;共阴数码管段码表DB 3FH,06H,5BH,4FH,66HDB 6DH,7DH,07H,7FH,6FHDELAY: ;延时子程序

MOV R0,#0FFH MOV R1,#0FFHDLY_LP: NOP NOP DJNZ R0,DLY_LP MOV R0,#0FFH DJNZ R1,DLY_LP RET

end数码管流水程序C子函数调用 org0 jmpmain org0030hmain: movr3,#0loop:

callBIT_IN

callDAT_IN incr3 callDELAY cjner3,#8,loop1 movr3,#0loop1: jmploopBIT_IN: movdptr,#BIT_CODE mova,r3 movca,@a+dptr movp2,a retDAT_IN: movdptr,#DAT_CODE mova,r3 movca,@a+dptr movp0,a retDAT_CODE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FHBIT_CODE: DB 00H,04H,08H,0CH,10H,14H,18H,1CH30秒倒计时org0main: movr3,#30a1: movr4,#50tt1: movdptr,#tab mova,r3 movb,#10

divab

movca,@a+dptr movp0,a setbp2.5 clrp2.6 clrp2.7 lcalldly_10ms mova,bmovca,@a+dptrmovp0,aclrp2.5clrp2.6clrp2.7lcalldly_10msdjnzr4,tt1cplp1.0djnzr3,a1jmpmaintab:db0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90hdly_10ms: MOVR5,#5d1: movr6,#4D2: MOVR7,#248 DJNZR7,$ DJNZR6,D2 DJNZR5,D1 RETend【例4-4】有一巡回检测报警装置,需对16路(x)输入进行检测,每路有一个最大允许值(y),为双字节数。需根据测量的路数(x),查表找出对应该路的最大允许值(y),看输入值是否大于最大允许值,如果大于就报警。取路数为x(0≤x≤15),y为最大允许值,放在表格中。设进入查表程序前,假设路数x已放于R2中,查表后该路的最大允许值y放于R3R4中。查表的程序如下:【例4-4】

TB3: MOVA,R2 ADD A,R2 ;(R2)*2→(A) MOVR3,A ;保存指针

ADD A,#6 ;加补偿偏移量

MOVCA,@A+PC ;查第一字节 XCH A,R3 ;1 ADD A,#3 ;2

MOVCA,@A+PC ;1,查第二字节 MOV R4,A ;1 RET ;1TAB3: DW 1520,3721,42645,7580 ;DW05F0H,0E89H,A695H,1D9CH DW 3483,32657,883,9943 DW 10000,40511,6758,8931 DW 4468,5871,13284,27808对于双字节数据来说,第n个数据的起始地址=表首地址+2n(n从0开始)绝对偏移量=补偿偏移量+相对偏移量地址数据数据00050高01F00低020E1高03891低04A62高05952低061D3高079C3低【例4-5】【例4-5】以AT89S51为核心的温度控制器,温度传感器输出的电压与温度为非线性关系,传感器输出的电压已由A/D转换为10位二进制数。测得的不同温度下的电压值数据构成一个表,表中温度值为y(双字节无符号数),x(双字节无符号数)为电压值数据。设测得电压值x放入R2R3中,根据电压值x,查找对应的温度值y,仍放入R2R3中。参考程序:【例4-5】LTB2:MOV DPTR,#TAB2 MOV A,R3 ;R3电压值低8位 CLR C RLC A ;A值乘以2 MOV R3,A XCH A,R2;交换后A中电压高8位,R2低8位*2 RLC A ;A值乘以2,即高8位*2 XCH R2,A;交换后A电压低8位*2,R2高8位*2

ADD A,DPL;(R2R3)+(DPTR)→(DPTR) MOV DPL,A MOV A,DPH ADDCA,R2 MOV DPH,A CLR A MOVCA,@A+DPTR;查第一字节 MOV R2,A;第一字节存入R2中 CLR A INC DPTR MOVCA,@A+DPTR;查第二字节 MOV R3,A ;第二字节存入R3中 RETTAB2:DW …,…,…;温度值表【例4-5】【例4-6】从50个字节的无序表中查找一个关键字“xxH”。ORG 1000HMOV 30H,#xxH ;关键字xxH送30H单元MOV R1,#50 ;查找次数送R1MOV A,#14H ;20D修正值送AMOVDPTR,#TAB4 ;表首地址送DPTR【例4-6】【例4-6】LOOP: PUSHAcc MOVCA,@A+PC ;查表结果送A CJNEA,30H,LOOP1;3(30H)不等于关键字则转LOOP1 MOVR2,DPH ;2查到关键字,把地址送R2,R3 MOVR3,DPL ;2

DONE: RET ;1LOOP1:POP Acc ;2修正值弹出 INC A ;1A+1→A INC DPTR ;1修改数据指针DPTR DJNZR1,LOOP ;2R1≠0,未查完,继续查找 MOV R2,#00H ;2R1=0,R2和R3清0 MOV R3,#00H ;2表中50个数已查完 AJMP DONE ;2从子程序返回

TAB4: DB …,…,… ;50个无序数据表【例4-7】片内RAM中存放一批数据,查找出最大值并存放于首地址中。设R0中存放首地址,R2中存放字节数,程序框图见图4-1。程序如下: MOV R2,#n ;n为要比较的数据字节数

MOV A,R0

;存首地址指针

MOV R1,A DEC R2 MOV A,@R1LOOP: MOV R3,A DEC R1 CLR C SUBBA,@R1 ;两个数比较 JNC LOOP1 ;C=0,A中数大,跳LOOP1 MOVA,@R1 ;C=1,则大数送A SJMPLOOP2LOOP1:MOV A,R3LOOP2:DJNZ R2,LOOP ;是否比较结束? MOV @R0,A ;存最大数

RET【例4-7】【例4-8】【例4-8】一批单字节无符号数,以R0为首地址指针,R2中为字节数,将这批数进行升序排列(冒泡法)。程序如下:SORT: MOV A,R0 MOVR1,A MOVA,R2 ;字节数送入R5,字节数 MOVR5,A CLR F0 ;互换标志位F0清0 DEC R5 MOVA,@R1

LOOP: MOVR3,A INC R1 CLR C MOVA,@R1 ;比较大小【例4-8】 SUBBA,R3 JNC LOOP1 SETBF0 ;互换标志位F0置1 MOVA,R3;

XCH A,@R1 ;两个数互换 DEC R1 XCH A,@R1 INC R1LOOP1: MOVA,@R1 DJNZR5,LOOP JB F0,SORT RET【例4-9】【例4-9】

求单字节有符号数的二进制补码(单分支)CMPT:

JNBAcc.7,RETURN;(A)>0,不需转换 MOV C,Acc.7 ;符号位保存 CPLA ;(A)求反,加1 ADD A,#1 MOVAcc.7,C ;符号位存在A的最高位RETURN: RET【例4-10】【例4-10】

求符号函数的值。符号函数定义如下(多分支

温馨提示

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

评论

0/150

提交评论