例4-1】对下段程序进行手工汇编。 地址 指令代码 源程序 ORG 2000H 2000H D291 START: SETB P1. 2002H 753003 DL mov 30H, # 03H 2005H 7531F D LO: mov 31H, OFOH 2008H Ds 31 rell D L1: dJNZ 31H, DLI 200BH D5 30 rel2 D小NZ30H,DI0 200EH B291 CPL P1.1 2010H 空订空2 AJMP DI
【例4-1】对下段程序进行手工汇编
四.程序设计的基本方法 编写程序要求 不仅要完成规定的功能任务,而且还要求: 执行速度快、占用内存少、条理清晰 阅读方便、便于移植、巧妙而实用 般应按以下几个步骤进行: 1)分析问题,确定算法或解题思路 (2)画流程图 (3)编写源程序 (4)汇编和调试
⑷ 汇编和调试 四. 程序设计的基本方法 编写程序要求: 不仅要完成规定的功能任务,而且还要求: 执行速度快、占用内存少、条理清晰、 阅读方便、便于移植、巧妙而实用。 一般应按以下几个步骤进行: ⑴ 分析问题,确定算法或解题思路 ⑵ 画流程图 ⑶ 编写源程序
流程图符号和说明 符号 名称 亵示的功能 起止框 程序的开始或结束 外理框 各种处理操作 判断框 条件转移操作 输入输出框 输入输出操作 流程线 描述程序的流向 引入引出连接线流程的连接
流程图符号和说明:
第二节汇编语言程序设计举例 顺序程序 顺序程序是指按顺序依次执行的程序,也 称为简单程序或直线程序。 顺序程序结构虽然比较简单,但也能完成 定的功能任务,是构成复杂程序的基础
顺序程序是指按顺序依次执行的程序,也 称为简单程序或直线程序。 顺序程序结构虽然比较简单,但也能完成 一定的功能任务,是构成复杂程序的基础。 第二节 汇编语言程序设计举例 一 . 顺序程序
【例4-2】已知16位二进制负数存放在R1R0中, 试求其补码,并将结果存在R3R2中。 解:二进制负数的求补方法可归结为“求反加1”,符号 位不变。利用CPL指令实现求反;加1时,则应低8位先加1, 高8位再加上低位的进位。注意这里不能用INC指令,因为 INC指令不影响标志位。 程序如下: CONT A RO ;读低8位 CPL A ;取反 ADd A#1 加1 MOV R2. A ;存低8位 MOV A. RI ;读高8位 CPL A ;取反 ADDC A,#80H加进位及符号位 MOV R3. A ;存高8位 RET
CONT: MOV A,R0 ;读低8位 CPL A ;取反 ADD A,#1 ;加1 MOV R2,A ;存低8位 MOV A,R1 ;读高8位 CPL A ;取反 ADDC A,#80H ;加进位及符号位 MOV R3,A ;存高8位 RET ; 【例4-2】 已知16位二进制负数存放在R1R0中, 试求其补码,并将结果存在R3R2中。 解:二进制负数的求补方法可归结为“求反加1”,符号 位不变。利用CPL指令实现求反;加1时,则应低8位先加1, 高8位再加上低位的进位。注意这里不能用INC指令,因为 INC指令不影响标志位。 程序如下: