《51单片机汇编例题.ppt》由会员分享,可在线阅读,更多相关《51单片机汇编例题.ppt(54页珍藏版)》请在第壹文秘上搜索。
1、 汇编语言程序设计例题汇编语言程序设计例题 例例 1 两个无符号双字节数相加。两个无符号双字节数相加。 设被加数存放于内部设被加数存放于内部RAM的的40H(高位字节)(高位字节), 41H(低位字节)(低位字节), 加数存放于加数存放于50H(高位字节)(高位字节), 51H(低位字节)(低位字节), 和数存入和数存入 40H和和41H单元中。单元中。 19:20:48 START: CLR C ; 将将Cy清零清零 MOV R0, 41H ; 将被加数地址送数据指针将被加数地址送数据指针R0 MOV R1, 51H ; 将加数地址送数据指针将加数地址送数据指针R1 AD1: MOV A,
2、R0 ; 被加数低字节的内容送入被加数低字节的内容送入AADD A,R1 ; 两个低字节相加两个低字节相加MOV R0, A ; 低字节的和存入被加数低字节中低字节的和存入被加数低字节中 DEC R0 ; 指向被加数高位字节指向被加数高位字节 DEC R1 ; 指向加数高位字节指向加数高位字节 MOV A, R0 ; 被加数高位字节送入被加数高位字节送入AADDC A, R1 ; 两个高位字节带两个高位字节带Cy相加相加 MOV R0, A ; 高位字节的和送被加数高位字节高位字节的和送被加数高位字节 RET 例例 1 两个无符号双字节数相加。两个无符号双字节数相加。 设被加数存放于内部设被加
3、数存放于内部RAM的的40H(高位字节)(高位字节), 41H(低位字节)(低位字节), 加数存加数存放于放于50H(高位字节)(高位字节), 51H(低位字节)(低位字节), 和数存入和数存入 40H和和41H单元中。单元中。 19:20:48例例 2 2 将两个半字节数合并成一个一字节数。将两个半字节数合并成一个一字节数。 设内部设内部RAM 40H#, 41H单元中分单元中分别存放着别存放着 8 位二进制数位二进制数, 要求取出要求取出两个单元中的低半字节两个单元中的低半字节, 并成一个字并成一个字节后节后, 存入存入 50H单元中。单元中。19:20:48 设内部设内部RAM 40H#
4、, 41H单元中分别存放着单元中分别存放着 8 位二进制数位二进制数, 要求取出两个单元中的低半字要求取出两个单元中的低半字节节, 并成一个字节后并成一个字节后, 存入存入 50H单元中单元中 START: MOV R1, 40H ; 设置设置R1为数据指针为数据指针 MOV A, R1 ; 取出第一个单元中的内容取出第一个单元中的内容 ANL A, 0FH ; 取第一个数的低半字节取第一个数的低半字节 SWAP A ; 移至高半字节移至高半字节 INC R1 ; 修改数据指针修改数据指针 XCH A, R1 ; 取第二个单元中的内容取第二个单元中的内容 ANL A, 0FH ; 取第二个数的
5、低半字节取第二个数的低半字节 ORL A, R1 ; 拼字拼字 MOV 50H, A ; 存放结果存放结果RET 19:20:48例例 3 x, y均为均为8位二进制数位二进制数, 设设 x存入存入R0, y存入存入R1, 求解求解: y=syn(x)19:20:48例例 3 x, y均为均为8位二进制数位二进制数, 设设 x存入存入R0, y存入存入R1, 求解求解: y=syn(x)程序如下程序如下: START: CJNE R0, 00H, SUL1 ; R0中的数与中的数与00比较不等转移比较不等转移 MOV R1, 00H; 相等相等, R1 0 SJMP SUL2 SUL1: JC NEG ; 两数不等两数不等, 若(若(R0)0, 则则 R101H SJMP SUL2 NEG : MOV R1, 0FFH ; (R0)=50时:时:Y=X;50X=20时:时:Y=5X;X20时:时:Y=2X;