ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:138.48KB ,
资源ID:27650398      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/27650398.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(双字节无符号数加法.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

双字节无符号数加法.docx

1、双字节无符号数加法双字节无符号数加法 作者: 日期: 1 双字节无符号数加法例1: 双字节无符号数加法(R0 R1)+(R2 R3) (R4 R5),R0、 R2、 R4存放16位数的高字节, R1、 R3、 R5存放低字节。已知(R0 R1)=(93h,79h);(R2 R3)=(25h,a4h)假设其和不超过16位。请编程。提示:由于不存在16位数加法指令, 所以只能先加低8位, 后加高8位, 而在加高8位时要连低8位相加时产生的进位一起相加。 查看psw中的标志CY=?, OV=?, AC=?, P=?。熟悉软件环境,要求能知道在哪里看数据的值,在哪里能看一些寄存器的内容,在哪里看程序代

2、码。如何在伟福软件环境下建立项目,运行文件。要求按照标准模式来写程序,ORG 0000HLJMP STARTORG 0050HSTART:MOV R1,#79HMOV R3,#0A4HMOV A,R1ADD A,R3MOV R5,ACLR AMOV R0,#93HMOV R2,#25HMOV A,R0ADDC A,R2MOV R4,A SS:JMP SSEND2双字节无符号数减法例2: 双字节无符号数相减(R0 R1)(R2 R3) (R4 R5)。R0、 R2、 R4存放16位数的高字节, R1、 R3、 R5存放低字节, 已知(R0 R1)=(93h,79h);(R2 R3)=(25h,a

3、4h);请编程。 同学自己可以设置被减数与减数数值提示:先减低8位, 后减高8位和低位减借位。 由于低位开始减时没有借位, 所以要先清零。ORG 0000HLJMP STARTORG 0050HSTART:MOV R0,#93HMOV R1,#79HMOV R2,#25HMOV R3,#0A4HMOV A,R1SUBB A,R3MOV R5,ACLR AMOV A,R0SUBB A,R2MOV R4,ASS:JMP SSEND 3双字节数乘以单字节数例3: 利用单字节乘法指令,进行双字节数乘以单字节数运算。 若被乘数为16位无符号数, 地址为M1(30H) 和M1+1(31H)(低位先、 高位

4、后), 乘数为8位无符号数, 地址为M2(32H), 积由高位到低位存入R2、 R3和R4三个寄存器中。30H,31H,32H内容 12H,34H,56H ;提示: (M1+1) (M1) (M2) R3 R4 ;是M2 乘M1的高8位,低8位 B A ;是M2乘M1+1的高8位,低8位 R2 R3 R4 org 0000hljmp startorg 0050hstart: Mov 30h, #12h mov 31h, #34h mov 32h, #56h mov a, 30h mov b,32h mul ab;低八位存A,高八位存B mov r4, a mov r3, b clr a clr

5、 b mov a, 32h mov b, 31h mul ab add a,r3 mov r2,b ss: jmp ss end 4. 把8位二进制数转换为3位BCD 例4: 利用除法指令把累加器A中的8位二进制数转换为3位BCD数, 并以压缩形式存放在地址M1、 M2单元中。 设A中放A8H ,M1、 M2单元地址是 30H,31H 提示: 累加器A中的8 位二进制数, 先对其除以100(64H), 商数即为十进制的百位数; 余数部分再除以10 (0AH), 所得商数和余数分别为十进制十位数和个位数, 即得到3位BCD数。 百位数放在M1中, 十位、个位数压缩BCD数放在M2中, 十位与个位

6、数的压缩BCD数的存放是通过SWAP和ADD指令实现的。 org 0000h ljmp start org 0050h start: mov a,#0a8h mov b,#64h div ab mov 30h, a clr a mov a, b clr b mov b, #0ah div ab swap a add a, b mov 31h, a ss:jmp ss end5双字节压缩BCD码加法例6: 双字节压缩BCD码加法。 设R5(高)、 R4(低)为被加数; R3(高)、 R2(低)为加数, 相加和的结果存入: R6(万)、 R5(千、 百)、 R4(十、 个)。被加数 98H,76H

7、;加数 54H,32Horg 0000hljmp startorg 0050hstart: mov r5, #98h mov r4, #76h mov r3, #54h mov r2, #32h mov a, r2 add a, r4 da a mov r4,a clr a mov a, r5 addc a,r3 da a mov r5,a clr a addc a,#00h mov r6,a ss:jmp ss end 6 利用DPTR取数据,并保持DPTR原数不变例6: 若在外部ROM/EPROM中2000H单元开始依次存放09的平方值, 原来数据指针(DPTR)=3A00H, 请用查表指

8、令取出2003H单元的数据后, 要求保持DPTR中的内容不变。 org 0000hLJMP mainorg 2000htab1: db 0,1,4,9,16,25,36,49,64,81main:mov a,#03hmov dptr,#3a00hpush dplpush dphmov dptr,#tab1movc a,a+dptrpop dplpop dphss:jmp ssend7 16 位数的算术左移 16 位数的算术左移。 16位数在内存中低 8 位存放在M1单元, 高 8 位存放在M1+1单元。 16位数是1234H ,M1为30H,M2为31H 提示: 所谓算术左移就是将操作数左移一

9、位, 并使最低位补充 0, 相当于完成 16 位数的乘 2 操作, 故称算术左移。 org 0000hLjmp startorg 0050hstart: mov 30h,#34h mov 31h,#12h mov a,30h RLC a mov 30h,a mov a,31h RLC a mov 31h,ass: jmp ssEnd8 比较内部RAM I、 J单元中A、 B两数的大小例 3: 比较内部RAM I、 J单元中A、 B两数的大小,设A、 B数均为带符号数, 以补码数存入I、 J中, 若A=B, 则使内部RAM的位K置 1; 若AB, 则大数存M单元, 小数存N单元。 设内部RAM

10、I、 J 是30H,40H;(A)=58H, (B)=97HM单元=50H,N单元=60H,位K=00H该带符号数比较子程序的比较过程示意图如图 3 9 所示。 org 0000hLjmp startorg 0050hstart: I equ 30h J equ 40h M equ 50h N equ 60h mov 30h,#58h mov 40h,#97h MOV A, I ANL A, #80H ; 判A数的正负 JNZ NEG ; A0 则转至NEG MOV A, J ANL A, #80H ; 判B数的正负 JNZ BIG1 ; A0, B0, 转BIG1 SJMP COMP ; A

11、0, B0, 转COMP NEG: MOV A, J ANL A, #80H ; 判B数的正负 JZ SMALL ; A0, B0, 转SMALLCOMP: MOV A, I CJNE A, J, BIG ; AB则转BIG SETB 00h ; A=B, 位K置 1 JMP WAITBIG: JC SMALL ; AB转SMALLBIG1: MOV M, I MOV N, J JMP WAITSMALL: MOV M, J MOV N, I WAIT: JMP WAIT here: sjmp here ss: jmp ss end9 双字节压缩BCD码转换成二进制码例 2: 双字节压缩BCD

12、码转换成二进制码子程序。 提示: 该转换的算法为: (d3d2d1d0)BCD=(d310+d2)100+(d110+d0) 实现该算法的参考子程序如下: 入口: R5(千位、 百位)、 R4(十位、 个位)为BCD码。 出口: R5R4(16 位无符号二进制整数)。 ORG 0000H LJMP MAIN ORG 0030H MAIN: MOV A, R5 ; (A) d3d2 (千位、 百位) MOV R2, A ; (R2) d3d2 ACALL CHANGE; 调子程序实现d310+d2A MOV B, 64H ; (B) 100 MUL AB ; (d310+d2)100 MOV R

13、6, A ; R6 暂存乘积低 8 位XCH A, B ; 乘积高 8 位送AMOV R5, A ; R5暂存乘积高8位MOV A, R4 ; (A) d1d0 (十位、 个位)MOV R2, A ; (R2) d1d0ACALL CHANGE ; 调子程序实现 d110+d0AADD A, R6 ; (A) (R6)+(A)MOV R4, A ; R4存转换后 16 位数低 8 位MOV A, R5 ; (A) (R5)ADDC A, 00H ; (A) (R5)+低 8 位和的进位CMOV R5, A ; R5存转换后 16 位数高 8 位SS: JMP SS ORG 200HBCD2B:

14、 MOV A, R2 ; (A) (d1d0)BCDANL A, 0F0H ; 取高位BCD码d1 SWAP A ; (A)=0d1HMOV B, 0AH ; (B) 10MUL AB ; d110MOV R3 , A ; R3暂存乘积结果MOV A, R2 ; (A) (d1d0)BCDANL A, 0FH ; 取低位BCD码d0ADD A, R3 ; d110+d0 MOV R2, A ; 保存转换结果RET ; 子程序返回END CHANGE: MOV R2,A ANL A,#0F0H SWAP A MOV B,#0AH MUL AB MOV R3,A MOV A,R2 ANL A,#0

15、FH ADD A,R3 RETEND10 冒泡排序有8个数据存放在20H为首地址的内部RAM,进行升序排列编程,原始数据:39,27,13,44,78,22,6,51; 设R7 为比较次数计数器,初始值为07H,F0为标志位,F0=0表明无互换发生,F0=1表明有互换发生提示:程序流程图如下 ORG 0000HLJMP STARTORG 0050HSTART: MOV R3,#0AH MOV R0,#20H MOV DPTR,#TABLELOOP1: MOV A,#00H MOVC A,A+DPTR MOV R0,A INC R0 INC DPTR DJNZ R3,LOOP1LOOP3: MO

16、V R3,#0AH MOV R4,#0AH MOV R0,#20H MOV R1,#21HLOOP2: MOV A,R1 CLR C SUBB A,R0 JC GO JMP RETURNGO: MOV A,R1 XCH A,R0 MOV R1,ARETURN:INC R0 INC R1 DJNZ R3,LOOP2 DJNZ R4,LOOP3JMP $ORG 2000H TABLE:DB 0FEH,39H,27H,13H,44H,78H,22H,06H,51H,01H,0A3HEND11中断方式下定时器应用设计设单片机的晶振为12MHz,定时器0方式0工作,产生1ms定时,在P1.0引脚上输出周

17、期为2ms的方波,中断方式完成,试设计程序。 ORG 0000H LJMP INT ORG 2000H MOV TMOD,#00H;设置工作方式 MOV TH0,#0E0H;装入初值 MOV TL0,#18H SETB EA SETB ET0 SETB TR0 SJMP $INT: MOV TH0,#0E0H MOV TL0,#18HCPL P1.0;取反输出方波 RETI12查询方式下定时器应用设计设单片机的晶振为12MHz,定时器0方式0工作,产生1ms定时,在P1.0引脚上输出周期为2ms的方波,查询方式完成,试设计程序. ORG 0000H LJMP LOOP1 ORG 2000H M

18、OV TMOD,#00H MOV TH0,#0E0H MOV TL0,#18H MOV IE,#00H ;禁止中断 SETB TR0 ;启动计数LOOP: JBC TF0,LOOP1 ;查询计数溢出自动清TR0 SJMP LOOPLOOP1:CLR TF0 CPL P1.0 MOV TH0,#0E0H MOV TL0,#18H SJMP LOOP END13中断方式下定时器应用设计 设片内RAM的70H单元的初值为01H,要求每1秒钟将其内容左环移一位,采用定时器T1,采用定时方式1,晶振频率为6MHz。中断方式完成,试设计程序。 ORG 0000H LJMP MAIN ORG 001BH ;

19、T1中断入口 LJMP INT ORG 2000HMAIN: MOV TMOD,#10H; T1工作于方式1 MOV TH1,#3CH MOV TL1,#0B0H SETB EA SETB ET1 SETB TR1 MOV 70H,#01H MOV R0,#0AH ;设置软件计数器HALT: SJMP HALTINT: DJNZ R0,NEXT MOV A,70H RL A MOV 70H,A MOV R0,#0AHNEXT: MOV TH1,#3CH MOV TL1,#0B0H RETI END 分析:当晶振频率为6MHz时,一个定时器的最大定时值为131ms,现要求定时1s,已超过该最大定

20、时值,故只能采用定时器定时和软件计数相结合的方法来扩展定时时间。在本例中,要获得1s定时,可将定时器的定时值设为100ms,另设一个软件计数器(常用Rn寄存器),初值为10。 每100ms定时时间一到,产生定时溢出中断,在中断服务程序中首先使软件计数器减1,若不为0,则立即退出中断;若已减为0,说明1s定时时间已到,可进入中断处理。当中断处理完后,再重新设置软件计数器。其它要求与前例类似。计算计数初值:采用定时方式1(16位),计数初值为:x=3CB0H(参阅例2)。 确定TMOD方式字:对于定时器T1来说,M1M0=01、 C/T=0、GATE=0,而定时器T0不用,取为全0。于是TMOD=00010000B=10H

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

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