第4章汇编语宣程存设计简介 例2将两个半字节数合并成一个一字节数 设内部RAM40H#,41H单元中分别存放着8位二进制数, 要求取出两个单元中的低半字节,并成一个字节后,存入 50H单元中。程序如下 START:MOVR1,#40H;设置R1为数据指针 MOA,@R1;取出第一个单元中的内容 ANLA,#OFH;取第一个数的低半字节 SWAP A 移至高半字节 INC RI ;修改数据指针 XCHA,aR1;取第二个单元中的内容 ANLA,#OFH;取第二个数的低半字节 ORLA,@R1;拼字 MOV50H,A;存放结果 RET
第 4 章 汇编语言程序设计简介 例 2 将两个半字节数合并成一个一字节数。 设内部RAM 40H#, 41H单元中分别存放着 8 位二进制数, 要求取出两个单元中的低半字节, 并成一个字节后, 存入 50H单元中。 程序如下: START: MOV R1, #40H ; 设置R1 MOV A, @R1 ; ANL A, #0FH ; SWAP A ; INC R1 ; XCH A, @R1 ; ANL A, # 0FH ; ORL A, @R1 ; MOV 50H, A ; RET
第4章汇编语宣程存设计简介 .2.2分支程序设计 条件成立? SOS1 Sn 〔b) 图41分支结构框图 (a)单分支流程;(b)多分支流程
第 4 章 汇编语言程序设计简介 4.2.2 分支程序设计 图 4.1 (a) 单分支流程; (b) 多分支流程
第4章汇编语宣程存设计简介 例3x#,y均为8位二进制数,设x存入RO,y存入R1,求解 +1 x>0 X< 0 x=0 程序如下: START:CNER0O,#00H,SUL1;R0中的数与00比较不等转移 MOVR1,#00H相等,R10 SJMP SUL2 SUL1: JC NEG;两数不等,若(R0)<0,转向NEG MOVR1,#0IH;(R0)>0,则R1←01H SJMP SUL2 NEG. MOV RI,#OFFH;(R0)<0,则R1←0FFH SUL2. RET
第 4 章 汇编语言程序设计简介 例 3 x#, y均为8位二进制数, 设 x存入R0, y存入R1, 求解: − + = 0 1 1 y 0 0 0 = x x x 程序如下: START: CJNE R0, #00H, SUL1; R0中的数与00比较不等转移 MOV R1, #00H; 相等, R1← 0 SJMP SUL2 SUL1: JC NEG ; 两数不等, 若(R0)<0, 转向NEG MOV R1, #01H ; (R0)>0, 则 R1←01H SJMP SUL2 NEG: MOV R1, #0FFH ; (R0)<0, 则 R1←0FFH SUL2: RET
第4章汇编语宣程存设计简介 开始 x=0? N x<0? N Y 0 +1 结束 图42
第 4 章 汇编语言程序设计简介 图 4.2
第4章汇编语言程季设计简介 例4比较两个无符号数的大小 设外部RAM的存储单元ST1和ST2中存放两个不带符 号的二进制数,找出其中的大数存入外部RAM中的ST3单 元中 开始 指针←ST1 A←(指针) R2←(A) 指针一ST2 A+(指针) (A)>(R2)? A+(R2) 图43 指针←ST3 (指针)←(A) 结束
第 4 章 汇编语言程序设计简介 例 4 比较两个无符号数的大小。 设外部 RAM 的存储单元 ST1和 ST2中存放两个不带符 号的二进制数, 找出其中的大数存入外部 RAM 中的 ST3单 元中。 图 4.3