- 1、本文档共51页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
汇编语言程序设计
* * 列数多时可用线反转法(依据键号与键值的对应关系 )。如“D”号键,先使行线输出全“0”,读列线,结果为D0H;再使列线输出全“0”,读行线,结果为07H。2次读的结果拼成一个字节,即D7H,该值称为键值。 将键值与键号的对应关系列成一个有序表,并设置一个计数器,将所按键值用线反转法求出后,将其作为关键字在键值表中从表首开始计数查找,查到匹配处时相应的计数值就是键号,根据键号就可以进入相应的处理程序了。 * * * * * * * * * * * * * * * * * * * * 【例4-3】根据R7的内容x(转移序号)转向相应的处理程序。 设R7内容为0~4,对应的处理程序入口地址分别为PP0~PP4。 * * START:MOV R7,#3 ;以转移序号3为例 ACALL JPNUM AJMP START JPNUM:MOV DPTR,#TAB ;置分支入口地址表首址 MOV A,R7 ADD A,R7 ;乘2,调整偏移量 MOV R3,A MOVC A,@A+DPTR ;取地址高字节,暂存于R3 XCH A,R3 INC A MOVC A,@A+DPTR ;取地址低字节 MOV DPL,A ;处理程序入口地址低8位送DPL MOV DPH,R3 ;处理程序入口地址高8位送DPH CLR A JMP @A+DPTR * * TAB:DW PP0 DW PP1 DW PP2 DW PP3 DW PP4 PP0:MOV 30H,#0 ;转移序号为0时,置功能号“0”于30H单元 RET PP1:MOV 30H,#1 ;转移序号为1时,置功能号“1”于30H单元 RET PP2:MOV 30H,#2 ;转移序号为2时,置功能号“2”于30H单元 RET PP3:MOV 30H,#3 ;转移序号为3时,置功能号“3”于30H单元 RET PP4:MOV 30H,#4 ;转移序号为4时,置功能号“4”于30H单元 RET 4.3.3、 循环程序设计 循环程序的结构特点: 计数循环程序,循环次数已知 条件循环程序,循环次数未知 循环程序的组成: 1. 初始化部分(设定循环次数等) 2. 循环体(重复执行的程序段) 3. 循环控制(修改和判断控制变量) 4. 循环结束处理 利用转移指令反复运行需要多次重复的程序段。 循环程序的结构: 初始化部分 循环体 结束处理 Y N 结束? 修改控制变量 单循环 多重循环 分为: * * 4.3.3 循环程序 (2种:先执行,后判断;先判断,后执行) 【例4-4】将内部RAM的30H至3FH单元初始化为00H。 MAIN:MOV R0,#30H ;置初值 MOV A,#00H ; MOV R7,#16 ; LOOP:MOV @R0,A ;循环处理 INC R0 ; DJNZ R7,LOOP ;循环修改,判结束 SJMP $ ;结束处理 * * 【例4-5】将内部RAM起始地址为60H的数据串传送到外部RAM中起始地址为1000H的存储区域,直到发现‘$ ’字符停止传送。 MAIN:MOV R0,#60H ;置初值 MOV DPTR,#1000H LOOP0:MOV A,@R0 ;取数据 CJNE A,#24H,LOOP1 ;循环结束? SJMP DONE ;是 LOOP1:MOVX @DPTR,A ;循环处理 INC R0 ;循环修改 INC DPTR SJMP LOOP0 ;继续循环 DONE:SJMP DONE ;结束处理 统计正负数 例 在片内RAM30H~3FH单元中存放有16个带符号数,编程求正、负数个数,分别存入40H和41H单元中。 设指针R0指向数据块首地址,取数到A中
文档评论(0)