第4章 应用程序设计1.ppt
《第4章 应用程序设计1.ppt》由会员分享,可在线阅读,更多相关《第4章 应用程序设计1.ppt(96页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、汇编语言与汇编语言与 简单程序设计简单程序设计v多字节加法多字节加法v多字节减法多字节减法v多字节多字节BCDBCD码加法码加法 (43H)(42H)(41H)(40H)+(53H)(52H)(51H)(50H)(43H)(42H)(41H)(40H)(43H)(42H)(41H)(40H)(53H)(52H)(51H)(50H)(43H)(42H)(41H)(40H)4.1 运算程序运算程序例例 4 4字节无符号数相加。字节无符号数相加。被加数:被加数:内部内部RAM 43H,42H,41H,40HRAM 43H,42H,41H,40H单元;单元;加数:加数:内部内部RAM 53H,52H,
2、51H,50H53H,52H,51H,50H单元。单元。计算两数的和,放在计算两数的和,放在43H,42H,41H,40H43H,42H,41H,40H单元单元中。中。多字节加法多字节加法 (43H)(42H)(41H)(40H)+(53H)(52H)(51H)(50H)(43H)(42H)(41H)(40H)多字节加法多字节加法采用主子程序结构:采用主子程序结构:采用主子程序结构:采用主子程序结构:主程序功能:设置子程序入口参数主程序功能:设置子程序入口参数主程序功能:设置子程序入口参数主程序功能:设置子程序入口参数 子程序功能:两个多字节数相加子程序功能:两个多字节数相加子程序功能:两个多
3、字节数相加子程序功能:两个多字节数相加子程序入口参数:子程序入口参数:子程序入口参数:子程序入口参数:加数最低位的起始地址加数最低位的起始地址加数最低位的起始地址加数最低位的起始地址50H50H;被加数最低位的起始地址被加数最低位的起始地址被加数最低位的起始地址被加数最低位的起始地址40H40H;加数和被加数的长度加数和被加数的长度加数和被加数的长度加数和被加数的长度44字节;字节;字节;字节;子程序出口参数:子程序出口参数:子程序出口参数:子程序出口参数:和的最低位的起始地址和的最低位的起始地址和的最低位的起始地址和的最低位的起始地址40H40H (43H)(42H)(41H)(40H)+(
4、53H)(52H)(51H)(50H)(43H)(42H)(41H)(40H)主程序主程序主程序主程序MOV RMOV R0 0,#40H#40H;被加数与和的地址指针被加数与和的地址指针被加数与和的地址指针被加数与和的地址指针 MOV RMOV R1 1,#50H#50H;加数地址指针加数地址指针加数地址指针加数地址指针 MOV RMOV R2 2,#04H#04H ;加数的字节数;加数的字节数;加数的字节数;加数的字节数ACALL JASUBACALL JASUB多字节加法程序多字节加法程序加法子程序加法子程序加法子程序加法子程序JASUBJASUB:CLCCLC C CJASUB1JAS
5、UB1:MOVMOVA,A,R R0 0 ADDC AADDC A,R R1 1 ;MOVMOV R R0 0,A AINCINC R R0 0INCINC R R1 1DJNZDJNZ R R2 2,JASUB1JASUB1RETRET (43H)(42H)(41H)(40H)(43H)(42H)(41H)(40H)(53H)(52H)(51H)(50H)(53H)(52H)(51H)(50H)(43H)(42H)(41H)(40H)(43H)(42H)(41H)(40H)采用主子程序结构:采用主子程序结构:采用主子程序结构:采用主子程序结构:主程序功能:设置子程序入口参数主程序功能:设置子
6、程序入口参数主程序功能:设置子程序入口参数主程序功能:设置子程序入口参数 子程序功能:两个多字节数相减子程序功能:两个多字节数相减子程序功能:两个多字节数相减子程序功能:两个多字节数相减子程序入口参数:子程序入口参数:子程序入口参数:子程序入口参数:减数最低位的起始地址减数最低位的起始地址减数最低位的起始地址减数最低位的起始地址50H50H;被减数最低位的起始地址被减数最低位的起始地址被减数最低位的起始地址被减数最低位的起始地址40H40H;减数的长度减数的长度减数的长度减数的长度44字节;字节;字节;字节;子程序出口参数:子程序出口参数:子程序出口参数:子程序出口参数:差的最低位的起始地址差
7、的最低位的起始地址差的最低位的起始地址差的最低位的起始地址40H40H例例例例 4 4字字字字节节节节无无无无符符符符号号号号数数数数相相相相减减减减,被被被被减减减减数数数数放放放放在在在在内内内内部部部部RAM RAM 43H43H,42H42H,41H41H,40H40H单单单单元元元元,减减减减数数数数放放放放在在在在内内内内部部部部53H53H,52H52H,51H51H,50H50H单单单单元元元元。计计计计算算算算两数的差,放在两数的差,放在两数的差,放在两数的差,放在43H43H,42H42H,41H41H,40H40H单元中。单元中。单元中。单元中。多字节减法程序多字节减法程
8、序主程序主程序主程序主程序MOV RMOV R0 0,#40H#40H;被减数与差的地址指针被减数与差的地址指针被减数与差的地址指针被减数与差的地址指针 MOV RMOV R1 1,#50H#50H;减数的地址指针减数的地址指针减数的地址指针减数的地址指针 MOV MOV R R2 2,#04H#04H ;减数的字节数减数的字节数减数的字节数减数的字节数ACALL JIANSBACALL JIANSB (43H)(42H)(41H)(40H)(43H)(42H)(41H)(40H)(53H)(52H)(51H)(50H)(53H)(52H)(51H)(50H)(43H)(42H)(41H)(4
9、0H)(43H)(42H)(41H)(40H)多字节减法程序多字节减法程序减法子程序减法子程序减法子程序减法子程序JIANSB JIANSB:CLCCLCC CJIAN1JIAN1:MOVMOV A,A,R R0 0 SUBB ASUBB A,R R1 1 ;MOVMOV R R0 0,A AINCINC R R0 0INCINC R R1 1DJNZDJNZ R R2 2,JIAN1JIAN1RETRET主程序主程序主程序主程序MOV RMOV R0 0,40H40H;被加数与和的地址指针被加数与和的地址指针被加数与和的地址指针被加数与和的地址指针 MOV RMOV R1 1,50H50H;
10、加数地址指针加数地址指针加数地址指针加数地址指针 MOV MOV R R2 2,#04H#04H ;加数的字节数加数的字节数加数的字节数加数的字节数ACALL JASUBACALL JASUB多字节多字节BCD码加法程序码加法程序加法子程序加法子程序加法子程序加法子程序JASUBJASUB:CLCCLCC CJASUB1JASUB1:MOVMOV A,A,R R0 0 ADDC AADDC A,R R1 1 ;DADAA A MOVMOV R R0 0,A AINCINC R R0 0INCINC R R1 1DJNZDJNZ R R2 2,JASUB1JASUB1RETRETv数据的拼拆数据
11、的拼拆v数据的转换数据的转换4.2 数据的拼拆和转换数据的拼拆和转换一、数据的拼拆一、数据的拼拆例:设例:设例:设例:设20H20H,21H21H单元中各有一个单元中各有一个单元中各有一个单元中各有一个8 8位数据:位数据:位数据:位数据:(20H20H)=X=X7 7 X X6 6 X X5 5 X X4 4 X X3 3 X X2 2 X X1 1 X X0 0 (21H21H)=Y=Y7 7 Y Y6 6 Y Y5 5 Y Y4 4 Y Y3 3 Y Y2 2 Y Y1 1 Y Y0 0目的目的:(30H30H)=Y Y2 2 Y Y1 1 Y Y0 0 X X4 4 X X3 3 X
12、X2 2 X X1 1 X X0 0MOVMOV 30H 30H,20H20HANLANL 30H 30H,#00011111B#00011111BMOVMOV A A,21H21HSWAPSWAPA A RLRLA A,ANLANL A A,#11100000B#11100000BORLORL 30H 30H,A A(30H30H)=X X7 7 X X6 6 X X5 5 X X4 4 X X3 3 X X2 2 X X1 1 X X0 0(30H30H)=0 0 0 =0 0 0 X X4 4 X X3 3 X X2 2 X X1 1 X X0 0(ACCACC)=Y Y7 7 Y Y6
13、 6 Y Y5 5 Y Y4 4 Y Y3 3 Y Y2 2 Y Y1 1 Y Y0 0 (ACCACC)=Y Y3 3 Y Y2 2 Y Y1 1 Y Y0 0Y Y7 7 Y Y6 6 Y Y5 5 Y Y4 4(ACCACC)=Y Y2 2 Y Y1 1 Y Y0 0Y Y7 7 Y Y6 6 Y Y5 5 Y Y4 4 Y Y3 3 (ACCACC)=Y Y2 2 Y Y1 1 Y Y0 0 0 0 0 0 00 0 0 0 0 (30H30H)=Y Y2 2 Y Y1 1 Y Y0 0 X X4 4 X X3 3 X X2 2 X X1 1 X X0 0数据的拼拆(续)数据的拼拆(续
14、)例:设例:设例:设例:设7CH7CH单元中各有单元中各有单元中各有单元中各有2 2个个个个BCDBCD码:码:码:码:(20H20H)=X=X7 7 X X6 6 X X5 5 X X4 4 X X3 3 X X2 2 X X1 1 X X0 0目的目的目的目的:(21H21H)=0 0 0 0 =0 0 0 0 X X0 0 X X1 1 X X2 2 X X3 3 CyCyACCACCX X0 0 a a7 7 a a6 6 a a5 5 a a4 4 a a3 3 a a2 2 a a1 1 a a0 0a a7 7 a a6 6 a a5 5 a a4 4 a a3 3 a a2 2
15、 a a1 1 a a0 0 X X0 0 X X1 1 a a6 6 a a5 5 a a4 4 a a3 3 a a2 2 a a1 1 a a0 0 X X0 0 a a6 6 a a5 5 a a4 4 a a3 3 a a2 2 a a1 1 a a0 0 X X0 0 X X1 1 X X2 2 a a5 5 a a4 4 a a3 3 a a2 2 a a1 1 a a0 0 X X0 0 X X1 1 a a5 5 a a4 4 a a3 3 a a2 2 a a1 1 a a0 0 X X0 0 X X1 1 X X2 2 X X3 3 a a4 4 a a3 3 a a2
16、2 a a1 1 a a0 0 X X0 0 X X1 1 X X2 2 a a4 4 a a3 3 a a2 2 a a1 1 a a0 0 X X0 0 X X1 1 X X2 2 X X3 3 0 0 0 00 0 0 0 X X0 0 X X1 1 X X2 2 X X3 3 MOVMOV C C,00H00HRLCRLCA AMOVMOV C C,01H01H RLC RLC A A MOVMOV C C,02H02H RLC RLC A A MOVMOV C C,03H03H RLC RLC A A ANLANLA A,#00001111B#00001111BMOVMOV 21H
17、21H,A A 数据的拼拆(续)数据的拼拆(续)例:设例:设例:设例:设7CH7CH单元中各有一个单元中各有一个单元中各有一个单元中各有一个8 8位数据:位数据:位数据:位数据:(7C7C)=X=X1 1 X X0 0HH目的目的目的目的:(R6R6)=0X=0X1 1HH,(,(,(,(R5R5)=0X=0X0 0HHMOVMOV R1 R1,#7CH#7CHMOVMOV A A,#00H#00HXCHDXCHD A A,R1R1MOVMOV R5 R5,A AMOVMOV A A,7CH7CHSWAPSWAPA A MOVMOV R6 R6,A AR1R1 ACC ACC 7CH 7CH
18、7CH7CH X X1 1 X X0 0HH7CH7CH 00H00H X X1 1 X X0 0HH7CH7CH 0 0X X0 0HH X X1 1 0 0 HH7CH7CH X X1 10H0H X X1 1 0 0 HH7CH7CH 0 0X X1 1HH X X1 1 0 0 HH二、数据的转换二、数据的转换1 1、二进制数与二进制数与ASCIIASCII的相互转换的相互转换二进制数转换为二进制数转换为ASCIIASCII码码ASCIIASCII码转换为二进制数码转换为二进制数1.二进制数与二进制数与ASCII的相互转换的相互转换 例例例例将将将将R R2 2中中中中存存存存放放放放
19、的的的的十十十十六六六六进进进进制制制制数数数数(0 0F F)的的的的ASCIIASCII码码码码转化为十六进制数,并存放到转化为十六进制数,并存放到转化为十六进制数,并存放到转化为十六进制数,并存放到R R2 2中。中。中。中。解解解解分析:将程序设计为一个子程序,分析:将程序设计为一个子程序,分析:将程序设计为一个子程序,分析:将程序设计为一个子程序,入口参数:入口参数:入口参数:入口参数:R R2 2=30H39H=30H39H,41H46H41H46H出口参数:出口参数:出口参数:出口参数:R R2 2=09=09,AFAF(R R2 2)=30H39H =30H39H (R R2
20、2)=41H46H=41H46H(A A)=00H09H =00H09H (A A)=11H16H=11H16H(R R2 2)=00H09H=00H09H(R R2 2)=11H16H=11H16H(CyCy)=1=1 (CyCy)=0=0 顺序执行顺序执行顺序执行顺序执行 直接退出直接退出直接退出直接退出 (A A)=11H16H=11H16H (A A)=0AH0FH=0AH0FH (R (R2 2)=0AH0FH)=0AH0FH(R R2 2)=00H09H=00H09HASCII:ASCII:MOV A MOV A,R R2 2 CLR CLR C C SUBB A SUBB A,#
21、30H#30H;MOVMOV R R2 2,A A;SUBB ASUBB A,#0AH#0AH;JC JC SBIO SBIO;XCHXCH A A,R R2 2;SUBB ASUBB A,#07H#07H;MOVMOV R R2 2 ,A ASBIO:SBIO:RET RET1.二进制数与二进制数与ASCII的相互转换的相互转换 ASCII:MOVASCII:MOVA A,R R2 2 CLR CLR C C SUBBSUBBA A,#30H#30H MOV MOV R R2 2,A A SUBBSUBBA A,#0AH#0AH JC JC SBIOSBIO XCH XCHA A,R R2
22、2 SUBBSUBBA A,#07H#07H MOV MOV R R2 2 ,A ASBIO:RETSBIO:RET 三次用到了三次用到了三次用到了三次用到了SUBBSUBB指令,指令,指令,指令,都需要提前对都需要提前对都需要提前对都需要提前对CyCy清零,清零,清零,清零,为什么只有第一条指令为什么只有第一条指令为什么只有第一条指令为什么只有第一条指令之前有之前有之前有之前有CLRCLRC C指令?指令?指令?指令?第一条指令第一条指令第一条指令第一条指令SUBBSUBB A A,#30H#30H执行之后执行之后执行之后执行之后CyCy一定为一定为一定为一定为0 0,因此第二,因此第二,因
23、此第二,因此第二条指令条指令条指令条指令SUBBSUBB A A,#0AH#0AH 之前不需要对之前不需要对之前不需要对之前不需要对CyCy清零;清零;清零;清零;指令指令指令指令JC SBIOJC SBIO根据根据根据根据CyCy产生两个分支,第三条指令产生两个分支,第三条指令产生两个分支,第三条指令产生两个分支,第三条指令SUBB ASUBB A,#07H#07H处在处在处在处在Cy=0Cy=0的分支,因此第三条指令的分支,因此第三条指令的分支,因此第三条指令的分支,因此第三条指令SUBBSUBB A A,#07H#07H 之之之之前不需要对前不需要对前不需要对前不需要对CyCy清零;清零
24、;清零;清零;SUBB ASUBB A,#0AH#0AH中的立即中的立即中的立即中的立即数数数数#0AH#0AH可以改为可以改为可以改为可以改为#09H#09H吗吗吗吗?为什么?为什么?为什么?为什么?当(当(当(当(R2R2)=09H=09H时,第二条指令时,第二条指令时,第二条指令时,第二条指令SUBBSUBB A A,#09H#09H 会做出错误判断:会做出错误判断:会做出错误判断:会做出错误判断:(CyCy)=0=0,程序顺序执行,造成程序顺序执行,造成程序顺序执行,造成程序顺序执行,造成(R2R2)=09H-07H=02H=09H-07H=02H1.二进制数与二进制数与ASCII的相
25、互转换的相互转换(R R2 2)=30H39H =30H39H (R R2 2)=41H46H=41H46H(A A)=00H09H =00H09H (A A)=11H16H=11H16H(R R2 2)=00H09H=00H09H(R R2 2)=11H16H=11H16H(CyCy)=1=1 (CyCy)=0=0 顺序执行顺序执行顺序执行顺序执行 直接退出直接退出直接退出直接退出 (A A)=11H16H=11H16H (A A)=0AH0FH=0AH0FH (R (R2 2)=0AH0FH)=0AH0FH(R R2 2)=00H09H=00H09HASCII:ASCII:MOV A MO
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第4章 应用程序设计1 应用 程序设计
限制150内