微机原理练习-控制转移类指令

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

微机原理练习 - 控制转移类指令

一、低难度:

等待P1.0出现低电平

JNB P1.0,$

JB P1.0,$

原地等待

SJMP $

A减一非0转到L,否则转到L0

DJNZ A,L

SJMP L0

If A>0 then goto L else goto L1

JZ L1

JB ACC.0,L1

SJMP L

If A>=0 then goto L else goto L1

JB ACC.7,L1

SJMP L

If A<0 then goto L else goto L1

JB ACC.7,L

SJMP L1

If A<=0 then goto L else goto L1

JZ L

JB ACC.0,L

SJMP L1

If A=0 then goto L else goto L1

JZ L

SJMP L1

If A<>0(<>为不等) then goto L else goto L1

JZ L1

SJMP L

二、中难度:

用判断进位方法处理高字节,进行@R0(2):=@R0(2)+@R1(2) 当标志Flag=1时执行一次子程序Sub

A取绝对值

JNB ACC.7,L

CPL A

INC A

如果A>=数80H则减去数80H

CLR ACC.7

将RAM00H~FFH清为0

MOV R0,#0

L:MOV @R0,#0

INC R0

CJNE R0,#00H,L

RAM30H~3FH->RAM20H~2FH

Dec Dptr

MOV A,DPL

JNZ L

DEC DPH

L:DEC DPL

Inc R67

CJNE R7,#0FFH,L

INC R6

L:INC R7

Inc @R0(2)

INC R0

INC @R0

CJNE @R0,#0,L

DEC R0

INC @R0

L:

Dec @R0(2)

INC R0

DEC @R0

CJNE @R0,#0FFH,L

DEC R0

DEC @R0

L:

Djnz Dptr,L

MOV A,DPH

JNZ L

MOV A,DPL

DEC A

CJNE A,#0,L

RAM30H~3FH按字节左移一次

RAM30H~3FH->RAM38H~47H

If A=0 则 B=2 否则B=4

MOV B,#4

CJNE A,#0,L

MOV B,#2

当A<0,=0或>0时,B分别等于0,1,2

MOV B,#1

JZ L

MOV B,#0

JB ACC.7,L

MOV B,#2

按照A中的索引值,对应转移到Sub0,Sub1,...

RL A

MOV DPTR,#TAB

JMP @A+DPTR

TAB:AJMP SUB0

AJMP SUB1

三、高难度(指令不限):

利用栈构造Jmp @Dptr

子程序ClrAllRam:将RAM00H~FFH赋值为A的值

不用CALL类指令实现CALL操作

不用RET指令实现RET操作

子程序中使用调用前入栈的数据,编写子程序。主程序示例:

PUSH ACC

PUSH B

ACALL StackToP1

将子程序后的数据送到30H开始的RAM中,,编写子程序。主程序示例:ACALL DatToBuf

DB '123456789',0

相关文档
最新文档