4.3汇编语言程序的基本结构形式 4.3.1顺序程序设计 顺序程序也称作简单程序,是一种无分支、循环的直线程 序,程序的走向是唯一的,程序的执行顺序与书写顺序完全 致。 〔例4-2)设计程序实现Y=X1+X2+3×X3运算,X1、X2、X3 为8位无符号数,分别存放在内部RAM30H、3H和32H中 计算结果存入40H、41H单元(高位在前 〔解〕该运算结果可能超过一个字节,但不会超过两过字节
4.3汇编语言程序的基本结构形式 4.3.1 顺序程序设计 顺序程序也称作简单程序,是一种无分支、循环的直线程 序,程序的走向是唯一的,程序的执行顺序与书写顺序完全一 致。 〔例4-2〕 设计程序实现Y=X1+X2+3×X3运算,X1、X2、X3 为8位无符号数,分别存放在内部RAM 30H、31H 和32H中, 计算结果存入40H、41H单元(高位在前)。 〔解〕该运算结果可能超过一个字节,但不会超过两过字节
开始 MOV A, 30H A←(30m) ADD A 31H MOV 4IHA A←(30H)+(31H) CLR A ADDCA#OOH MOV 40HA MOV A 32H A←(32H MOV B#03 MUL AB ADD A 41H AB←(A)*(B) MOV 4HA A+(A)+(401 CLR A ADDC A 40H 「41H-(A) ADDA B A←(40H)+CY MOV 40HA END 4OH←(A)+(B) 图4-2例4-2图
MOV A,30H ADD A,31H MOV 41H,A CLR A ADDC A,#00H MOV 40H,A MOV A,32H MOV B,#03 MUL AB ADD A,41H MOV 41H,A CLR A ADDC A,40H ADD A,B MOV 40H,A END A←(30H) A←(30H)+(31H) 41H←(A) 42H←CY A←(32H) B←3 AB←(A)*(B) A←(A)+(40H) 41H←(A) A←(40H)+CY 40H←(A)+(B) 开始 结束 图4-2 例4-2图
4.32分支程序设计 分支程序常利用条件转移指令实现,即根据条件对程序 的执行情况进行判断,满足条件遇转移,否则顺序执行。 用于判断分支转移的指令有:J、JNE、JC、JNC JB、JNB、JBC、CJNE、JMP@A+DPR等。另外在该类 分支程序的设计中,要设置好判断测试对象,程序转移方 向及转移的标志地址。 利用测试转移指令实现程序分支 〔例4-3〕设变量X存放在外部RAM的VAR与内部RAM STAN单元的其准数Y比较,函数F存放在内部RAM的FUN 单元。试编程实现下列函数关系: 1(x>Y) F=10(X=Y 1(x<Y) 〔解〕测试条件题中已给出
4.3.2 分支程序设计 〔例4-3〕 设变量X存放在外部RAM的VAR,与内部RAM STAN单元的其准数Y比较,函数F存放在内部RAM的FUN 单元。试编程实现下列函数关系: 1 (X>Y) F= 0 (X=Y) -1 (X<Y) 分支程序常利用条件转移指令实现,即根据条件对程序 的执行情况进行判断,满足条件遇转移,否则顺序执行。 用于判断分支转移的指令有:JE、 JNE、 JC、 JNC、 JB、JNB、JBC、CJNE、JMP @A+DPTR等。另外在该类 分支程序的设计中,要设置好判断测试对象,程序转移方 向及转移的标志地址。 1.利用测试转移指令实现程序分支 〔解〕测试条件题中已给出
开始) A←X A←X-Y N A←01H「A←OFH FUN←(A 结束) 图4-3例4-3图
A←X A←X-Y (A)=0? (C)>0? A←01H A←0FFH FUN←(A) 图4-3 例4-3图 开始 Y N 结束 Y
程序为: ORG××××H START: MOV DPTR #VAR MOVX A, ODPTR CLR SUBB ASTAN GIV JC FUSHU MOV A #OIH 正数置1 SJMP GIV FUSHU:MOVA,#FFH;负数置0FFH(-的补码) GIV: MOV FUN,A;置数 END
ORG ××××H START: MOV DPTR ,#VAR MOVX A,@DPTR CLR C SUBB A,STAN JZ GIV JC FUSHU MOV A,#01H ;正数置1 SJMP GIV FUSHU: MOV A,#0FFH ;负数置0FFH(-1的补码) GIV: MOV FUN,A ;置数 END 程序为: