- 1、本文档共52页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第3章__指令系统与汇编语言程序设计
一.汇编语言程序结构 见动画六 3.4 汇编语言程序设计举例 二.汇编语言程序举例 例1 编程实现如图所示的逻辑功能。其中20H、2FH、2AH是位 地址。 分析:逻辑电路的功能是P1.0= 程序如下: MOV C,20H ;20H 位送CY ANL C,2FH ;CY 逻辑与2FH 位 CPL C ;CY 取反 ORL C,2AH ;CY 逻辑或2AH 位 MOV P1.0,C ;结果送P1.0 3.4 汇编语言程序设计举例 例2 比较内部RAM 30H和31H单元中无符号数的大小,使得30H单元存放大数,31H单元存放小数。 分析:先清进位位,然后两数作带借位减法,根据借位标志判断两 数大小。程序流程图如右图所示。 程序: START: CLR C MOV A,30H SUBB A,31H JNC DONE ;若无借位,即(30H)≥(31H)时转DONE MOV A,30H XCH A,31H ;有借位,即(30H)(31H),交换(30H)与(31H) MOV 30H,A DONE: SJMP DONE 例3 编程统计累加器A中“1”的个数。 分析:首先判断累加器A 是否为0,若A = 0,则程序结束;否则,先清CY,再将A 带进位循环左移一位,判断进位位CY 是否为1,为1 则计数,不为1 则继续循环 判断A 是否为0,重复这一过程,直至A = 0。程序流程图如图所示。 程序: MOV R1, # 0 ;计数器R1清0 PUSH ACC ;保护ACC LOOP1: JZ DONE ;若A = 0,程序结束 CLR C ;进位位清0 RLC A ;累加器A带进位循环左移一位 JNC LOOP1 ;CY = 0,则继续循环 INC R1 ;CY = 1,则计数器R1加1 SJMP LOOP1 DONE: POP ACC ;恢复ACC SJMP $ END 任务演示 任务T3:算术、逻辑运算模拟系统软件设计。 见动画十一 3.5 计算机中的数据编码 一、带符号数的编码表示 在计算机中,常常需要表示正数和负数,如何表 示数据的符号位?如何表示带符号数? 1.机器数的概念 为了表示带符号的数,可以把数的最高位作为符号位处 理,其余各位表示数值本身。一般 “1”表示负号,“0”表示正号。 这种把符号数码化了的数称为机器数,而把原来符号未进 行数码化的数称为机器数的真值。 如:+1001110和-1001110是真值11001110 是机器数。 2.补码 补码表示带符号数的规则如下: (1) 最高位表示符号,“0”表示正号,“1”表示负号;其余位 表示数值位。 (2) 正数补码的数值位与二进制真值相同。 (3) 负数补码的数值位是其二进制真值取反后加1。 例1 用补码表示八位带符号数。 X=+1010 (X)补 X=-1010 (X)补 X=+0001100 (X)补 X=-0001100 (X)补 X=+1111111 (X)补
文档评论(0)