如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
汇编语言与简单程序设计多字节加法多字节减法多字节BCD码加法〔例〕4字节无符号数相加。被加数:内部RAM43H,42H,41H,40H单元;加数:内部RAM53H,52H,51H,50H单元。计算两数的和,放在43H,42H,41H,40H单元中。多字节加法〔主程序〕MOVR0,#40H;被加数与和的地址指针MOVR1,#50H;加数地址指针MOVR2,#04H;加数的字节数ACALLJASUB………(43H)(42H)(41H)(40H)-(53H)(52H)(51H)(50H)(43H)(42H)(41H)(40H)〔主程序〕MOVR0,#40H;被减数与差的地址指针MOVR1,#50H;减数的地址指针MOVR2,#04H;减数的字节数ACALLJIANSB………〔主程序〕MOVR0,40H;被加数与和的地址指针MOVR1,50H;加数地址指针MOVR2,#04H;加数的字节数ACALLJASUB………数据的拼拆数据的转换一、数据的拼拆数据的拼拆(续)数据的拼拆(续)二、数据的转换1.二进制数与ASCII的相互转换1.二进制数与ASCII的相互转换SUBBA,#0AH中的立即数#0AH可以改为#09H吗?为什么?4.3查表程序查表程序举例查表程序举例数据表格超过256Byte解决办法数据表格超过256Byte解决办法数据表格超过256Byte查表程序举例数据表格超过256Byte查表程序举例查表操作步骤查表操作的几个问题查表操作的几个问题查表操作的几个问题数据表格超过256Byte查表例程清单数据表格超过256Byte查表例程清单(续)查表操作的几个问题查表操作的几个问题查表操作的几个问题4.4散转程序设计步骤(续)(1)采用转移指令组成表(1)采用转移指令组成表(R7)=0(R7)=1…(R7)=n例程清单——采用转移指令组成表例程清单——采用转移指令组成表例程清单——采用转移指令组成表例程清单——采用转移指令组成表例程清单——采用转移指令组成表(2)采用地址偏移量组成表(2)采用地址偏移量组成表(2)采用地址偏移量组成表例程清单——采用地址偏移量组成表(3)采用各分支入口地址组成表(3)采用各分支入口地址组成表(3)采用各分支入口地址组成表例程清单——采用各分支入口地址组成表例程清单——采用各分支入口地址组成表例程清单——采用各分支入口地址组成表例程清单——采用各分支入口地址组成表例程清单——采用各分支入口地址组成表实现方式:通过ACC或寄存器传递通过堆栈传递参数主程序用PUSH将参数压入堆栈;子程序按栈指针来间接访问,取出参数。利用数据指针传递参数1、通过ACC或寄存器传递2、通过堆栈传递参数2、通过堆栈传递参数2、通过堆栈传递参数2、通过堆栈传递参数2、通过堆栈传递参数2、通过堆栈传递参数2、通过堆栈传递参数2、通过堆栈传递参数2、通过堆栈传递参数2、通过堆栈传递参数2、通过堆栈传递参数完整程序3、利用数据指针传递参数MAIN:…ACALLPRINTTAB:DB‘THISISANEXAMPLE’DB0AH,0DH,00H,NEXT:…子程序:SUBR:POPDPHPOPDPLPPP1:MOVA,#00H;MOVCA,@A+DPTR;INCDPTRJZPENDPPP2:…(打印程序)SJMPPPP1PEDD:JMP@A+DPTRMAIN:…ACALLPRINT#TAB:DB‘THISISANEXAMPLE’DB0AH,0DH,00H,NEXT:…子程序:SUBR:POPDPHPOPDPLPPP1:MOVA,#00H;MOVCA,@A+DPTR;INCDPTRJZPENDPPP2:…SJMPPPP1PEDD:JMP@A+DPTRMAIN:…ACALLPRINTDB‘THISISANEXAMPLE’DB0AH,0DH,00H,NEXT:…子程序:SUBR:POPDPHPOPDPLPPP1:MOVA,#00H;MOVCA,@A+DPTR;INCDPTRJZPENDPPP2:…SJMPPPP1PEDD:JMP@A+DPTRMAIN:…ACALLPRINTDB‘THISISANEXAMPLE’DB0AH,0DH,00H,NEXT:…子程序:SUBR:POPDPHPOPDPL