第四章 51系列单片机汇编语言程序设计.ppt
文本预览下载声明
第四章 汇编语言程序设计 §4.1汇编语言的语句格式 1. 汇编语言的语句格式 MCS-51汇编语言程序中常用的伪指令: 方法1 方法2: 4.3.2 分支程序 4.3.2 分支程序 4.3.3 循环程序 分支程序可根据要求无条件或条件地改变程序执行流向。编写分支程序主要在于正确使用转移指令。分支程序有:单分支结构、双分支结构、多分支结构(散转) 条件成立? 下条指令 程序段A 单分支结构 Y N 条件成立? 程序段A Y N 程序段A 双分支结构 分支程序可根据要求无条件或条件地改变程序执行流向。编写分支程序主要在于正确使用转移指令。分支程序有:单分支结构、双分支结构、多分支结构(散转) K=? 程序段n n 0 程序段1 多分支结构 程序段0 1 1.单分支结构程序 单分支程序使用条件转移指令实现,即根据条件对程序的执行进行判断,满足条件则进行程序转移,否则程序顺序执行。可实现单分支程序转移的指令有JZ、JNZ、CJNE和DJNZ等。此外还有以位状态作为条件进行程序分支转移的指令有JC、JNC、JB、JNB、JBC等。使用这些指令可以完成为“0”、为“1”、、为正、为负及相等、不相等等各种条件判断。 [例4.3] 两个无符号数比较。内部RAM的20H单元和30H单元各存放了一个8位无符号数,请比较这两个数的大小,比较结果显示在实验板上:(给高电平实验板上发光二极管亮) 若(20H)≥(30H),则P1.0管脚连接的LED发光; 若(20H)(30H),则P1.1管脚连接的LED发光。 (1)题意分析 本题是典型的分支程序,根据两个无符号数的比较结果(判断条件),程序可以选择两个流向之中 的某一个,分别点亮相应的LED。 比较两个无符号数常用的方法是将两个数相减,然后判断有否借位CY。 若CY=0,无借位,则X≥Y; 若CY=1,有借位,则XY。程序的流程图如右图所示。 N Y 开始 X — Y CY=1? X=Y P1.0灯亮 XY P1.1灯亮 结束 (2)程序如下: X DATA 20H Y DATA 30H ORG 0000H MOV A,X ; (X)→ Y CLR C ; CY=0 SUBB A,Y ; 带借位减法,A-(Y)-CY→A JC L1 ; CY=1,转移到L1 CLR P1.0 ; CY=0,(20H)≥(30H),点 ; 亮P1.0连接的LED SJMP FINISH ; 直接跳转到结束等待 L1:CLR P1.1 ; (20H)(30H),点亮P1.1连 ;接的 LED FINISH:SJMP $ END 例1:设变量x以补码形式存放在片内RAM 30H单元中,变量y与x的关系是: 编程根据x的值求y值并放回原单元。 A=? y=x+5 0 0 y=20H y=x 0 取x 即(30h) A 开始 存y 即y 20h 结束 ORG 1000H START:MOV A,30H JZ NEXT ;x=0,转移 ANL A,#80H ;保留符号位 JZ ED ;x0,转移 MOV A,#05H ;x0,不转移 ADD A,30H MOV 30H,A SJMP ED NEXT:MOV 30H,#20H ED:SJMP $ [例4.5] 散转程序 散转程序是指经过某个条件判断之后,程序有多个流向(三个以上)。 设计两个开关,使CPU可以察知两个开关组合出的4种不同状态。然后对应每种状态,使8个LED显示出不同的亮灭模式。具体要求如下: S1 S0 显示方式 接地 接地 全亮 接地 接高 交叉亮 接高 接地 低4位连
显示全部