1 / 80

指令详解

指令详解. 指令的格式与编码. 指令的功能描述. 指令的寻址方式. 指令的分类. 伪指令. 返回. 指令的分类. 数据传送类 (28 条 ). 算术运算类 (24 条 ). 逻辑操作类 (25 条 ). 控制转移类 (17 条 ). 位操作类 (17 条 ). 返回. 数据传送类指令. (28 条 ). 把源操作数传送到指令所指定的目的地址,而源操作数保持不变,目的操作数被源操作数替换。. MOV 内部 RAM 间传送. MOVC 程序存储器取数. MOVX 外部存储器与 A 间传送. XCH. XCHD. PUSH. POP. 返回.

Télécharger la présentation

指令详解

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 指令详解 指令的格式与编码 指令的功能描述 指令的寻址方式 指令的分类 伪指令 返回

  2. 指令的分类 数据传送类(28条) 算术运算类(24条) 逻辑操作类(25条) 控制转移类(17条) 位操作类(17条) 返回

  3. 数据传送类指令 (28条) 把源操作数传送到指令所指定的目的地址,而源操作数保持不变,目的操作数被源操作数替换。 MOV内部RAM间传送 MOVC程序存储器取数 MOVX外部存储器与A间传送 XCH XCHD PUSH POP 返回 主题

  4. MOV MOV diect,Rn MOV Rn,direct (直接地址) MOV direct,@Ri MOV @Ri,direct (间接地址) MOV direct,#data (直接地址) MOV @Ri,#data (间接地址) MOV direct,#data MOV DPTR,#data16 MOV A,#data MOV Rn,#data MOV direct,A MOV A,direct (直接地址) MOV @Ri,A MOV A,@Ri (间接地址) MOV Rn,A MOV A,Rn MOV diect1,diect2 一定是2个操作数,1个源操作数,1个目的操作数 源操作数可以是立即数,寄存器操作数,存储器操作数,特殊功能寄存器。目的操作数与源操作数不同的是不能为立即数。但2个操作数不能同时为工作寄存器。 数据前加“#” R0~R7 立即数 寄存器 A 若用“A”表示累加器,若用“ACC”表示累加器A的地址 专用符号表示,实际为地址 SFR (不含A) 地址00H~7FH的存储单元,用地址表示 存储器 返回 主题

  5. MOVC (MOVE CODE) 此指令只能用于传送程序存储器中存放的数据,又称查表指令。指令格式为: MOVC A,@A+DPTR MOVC A,@A+PC 第一条查表指令,查找范围可以在程序存储器中任意位置,并且一个表格数据可以被多个程序调用;第二知查表指令,其表格数据只能放在查表指令后的256B范围内,且只能被当前程序段调用。故第二条指令少用。 例:DPTR的地址为0300H,从0300H开始的存储单元分别存放有0、1、2、3、4、5、6、7、8、9的平方值,用查表指令查找8的平方值,结果保存在A中 使用此指令前必须保证A和DPTR有准确的值存在,即先要给A和DPTR赋值 MOV A,#8 MOV DPTR,#0300H MOVC A,@A+DPTR 返回 主题

  6. 存储单元 …… 取操作码 93H PC …… 地址 操作数的地址为基地址DPTR+相对偏移量A …… DPTR+0 00H 表格数据在存储器存储示意 DPTR+1 01H 0至9平方表(BCD码存放) DPTR+2 04H DPTR+3 MOVC A,@A+DPTR ;在程序存储器中查找相对于DPTR基地址偏移量为(A)的地址存储单元中数据。 09H DPTR+4 16H DPTR+5 25H 累加器A DPTR+6 36H DPTR+7 49H DPTR+8 64H DPTR+9 81H …… 假设要查找8的平方值,因为8的平方值偏移基地址DPTR为8,故把8送入A,取出操作码后自动计算(DPTR)+(A),找到该地址单元,取出该存储器的数送入累加器A。 (DPTR)+(A) (DPTR)+(A) 64H 返回 主题

  7. MOVX (MOVE EXTERNAL RAM) 此指令只能用于累加器A与外部数据存储器间的数据传送,即其中一个操作数必须为累加器A,另一个操作数必须为间接地址。需注意的是外部数据存储器包括输入/输出端口地址。 共4条指令: ;外部16位存储器地址中内容读入A MOVX A,@DPTR MOVX @DPTR,A MOVX A,@Ri MOVX @Ri,A ;A中内容写入到外部16位存储器地址中 ;外部8位存储器地址中内容读入A ;A中内容写入到外部8位存储器地址中 例: 把外部端口地址FF00H的值读入到累加器A MOV DPTR,#0FF00H MOVX A,@DPTR 把累加器A中内容写入到外部存储器地址F8H中去 MOV R0,#0F8H MOVX @R0 返回 主题

  8. XCH 1 1 1 0 0 0 1 1 0 1 0 0 1 0 0 1 程序存储器 (A) 取指分析 机器码 CC (R4) (EXCHANGE) 此指令用于累加器A与寄存器或数据存储器间的数据交换,即其中一个操作数必须为累加器A且为目的操作数,另一个操作数可以为寄存器Rn或存储器地址(直接或间接地址)。 例: XCH A,R4 (假设A中内容为98H,R4中内容为D3H) 交换数据 操作码(隐含A) 操作数R4 该指令影响PSW中的标志P,执行此指令后(P)=1 返回 主题

  9. 例: XCH A,32H(假设32H单元中存放数据为BAH,A中存放50H) 程序存储器 程序存储器 存储器RAM 存储器RAM 地址 地址 数据 数据 30H 33H 累加器A 累加器A 机器码 机器码 C7 C5 34H 31H 32 32H 35H 例: 36H 33H XCH A,@R1(假设R1中存放数据为35H,35H单元中存放数据E7H,A中存放62H) 37H 34H 35H R1 取指分析 取指分析 交换数据 BAH BAH 50H (A)=BAH (32H)=50H 交换数据 E7H E7H 62H (A)=E7H (35H)=62H 返回 主题

  10. XCHD 程序存储器 存储器RAM 地址 数据 例: XCHD A,@R1(假设R1中存放数据为35H,35H单元中存放数据E7H,A中存放62H) 33H 累加器A 机器码 D7 34H 35H 36H 37H 35H R1 取指分析 Exchange low-order Digit 此指令用于累加器A与寄存器Ri(i=0或1)所指定的存储器地址中数据低4位进行交换,且只能累加器A作为目的操作数。 交换数据 7 E7H E H 6 H 2 (A)=67H (35H)=E2H 返回 主题

  11. PUSH PUSH onto Stack 指令格式:PUSH direct 其功能是把直接地址direct单元中的数据压入至堆栈中。 注意:该指令的操作数只能是直接地址。 什么是堆栈? 例如:需把A和R0中的内容入栈,指令为: PUSH ACC ;ACC为累加器A的直接地址表示形式(符号地址) PUSH 00H ;00H为寄存器R0的地址(但需由PSW中RS1RS0决定) 不能把指令写成: PUSH A PUSH R0 返回 主题

  12. POP Pop from Stack 指令格式:POP direct 其功能是把堆栈中的数据弹出至直接地址direct单元中。 其使用方法同PUSH。 例:(R0)=EAH,(R5)=8FH,实现R0与R5中内容交换的指令 方法一:使用MOV指令 方法二:使用XCH指令 MOV 30H,R0 MOV 31H,R5 MOV R0,31H MOV R5,30H MOV A,R0 XCH A,R5 MOV R0,A 试比较三种不同的方法在占用程序存储器的字节数、执行时间上有什么差异,还能有其它的实现方法吗?举例说明 方法三:使用堆栈操作指令 PUSH 00H PUSH 05H POP 00H POP 05H 返回 主题

  13. 算术运算类指令 (24条) ADD SUBB ADDC DEC INC MUL DA DIV 该类指令除INC和DEC外运算后均要修改PSW中的标志位 返回 主题

  14. ADD 目的操作数只能为A 寄存器操作数 存储器操作数 立即数 (ADDITION) 不带进位的加法运算指令,指令格式为: 源操作数可以是 ADD A,#data ADD A,direct ADD A,@Ri ADD A,Rn 直接地址 间接地址 完成累加器A中内容与源操作数算术加运算后,其结果存入A中,同时影响PSW中各标志位。 返回 主题

  15. 程序存储器 机器码 24 AA D6位向D7位无进位, =0 D7位有进位,CY=1,=1 例: (A)=C3H,(PSW)=00H,执行ADD A,#0AAH后,A和PSW中的内容各为多少? (A) #AAH 按位相加 1 0 1 1 0 1 1 0 1 1的个数为5,奇数,P=1 D3位向D4位无进位,AC=0 执行指令后PSW的值为 累加器A中的内容为6DH 返回 主题

  16. ADDC 目的操作数只能为A 寄存器操作数 存储器操作数 立即数 (ADDITION WITH CARRY) 带进位的加法运算指令,指令格式为: 源操作数可以是 ADDC A,#data ADDC A,direct ADDC A,@Ri ADDC A,Rn 直接地址 间接地址 完成累加器A中内容与源操作数算术加运算后,再加上CY,其结果存入A中,同时影响PSW中各标志位。 返回 主题

  17. 程序存储器 机器码 28 D6位向D7位无进位, =0 D7位有进位,CY=1,=1 例: (A)=AEH,(R0)=81H,(PSW)=98H,执行ADD A,R0后,A和PSW中的内容各为多少? (A) (R0) 按位相加 1 0 0 1 0 1 1 1 1 1 1 0 0 1 1 0 0 0 0 1的个数为2,偶数,P=0 D3位向D4位有进位,AC=1 执行指令后PSW的值为 累加器A中的内容为30H 返回 主题

  18. INC (INCREMENT) 加1指令,指令格式为: INC A INC direct INC @Ri INC Rn INC DPTR ;对累加器A中的内容加1 ;对某直接地址单元中的内容加1 ;对由Ri提供的某地址单元中的内容加1 ;对寄存器中的内容加1 ;对寄存器DPTR中的内容加1(16位数据) 这些指令一般用于循环程序中改变增量值,只有INC A指令会影响PSW的P标志。 返回 主题

  19. DA Decimal Adjust 十进制调整指令,根据二进制加法计算所产生的CY、AC标志对计算结果调整为十进制加法的结果。 指令格式为:DA A (注意:只能跟在ADD或ADDC指令后才起作用) 调整的条件和方法: 若(A)3~0>9或(AC)=1,则(A)+06H→A 若(A)7~4>9或(CY)=1,则(A)+60H→A 以上两者同时发生,则(A)+66H→A 编程使用时无需考虑(AC)、(CY)是否为1,只需在要求计算结果为十进制结果时,在其加法指令后加该指令即可。 返回 主题

  20. 56H 65H 21H 66H BBH >9 >9 进位 例:要计算56+65的十进制结果,其指令序列为: MOV A,#56H ADD A,#65H DA A ;把其中一个数传送到A,以适应加法指令 ;把另一个数作为立即数,与(A)相加 ;相加后的结果调整为十进制 计算并调整的过程如下: 0 1 0 1 0 1 1 0 0 1 1 0 0 1 0 1 用56H和65H分别表示十进制数56和65是一种通常的编码方法,称之为BCD码,即用4位二进制数表示十位制数字的编码方法。 1 0 1 1 1 0 1 1 0 1 1 0 0 1 1 0 1 0 0 1 0 0 0 0 1 相加后的结果为(A)=21H,CY=1 返回 主题

  21. 例:要计算92-65的十进制结果,其指令序列为:例:要计算92-65的十进制结果,其指令序列为: 100 35H 65 92H 35 60H 27H C7H >9 进位 CLR C MOV A,#9AH SUBB A,#65H ADD A,#92H DA A ;为减法指令SUBB准备,以适应减法指令 ;理解为BCD码的100,即90+10 ;把十进制数-65变成100的补码,即35 ;计算十进制数35和92相加的结果 ;相加后的结果调整为十进制 计算并调整的过程如下: 0 0 1 1 0 1 0 1 1 0 0 1 0 0 1 0 1 0 0 1 1 0 1 0 0 1 1 0 0 1 0 1 1 1 0 0 0 1 1 1 0 1 1 0 0 0 0 0 0 0 1 1 0 1 0 1 1 0 0 1 0 0 1 1 1 相减后的结果为(A)=27H,CY=1 返回 主题

  22. SUBB 目的操作数只能为A 寄存器操作数 存储器操作数 立即数 (SUBTRACT with Borrow) 带进位的减法运算指令,指令格式为: 源操作数可以是 SUBB A,#data SUBB A,direct SUBB A,@Ri SUBB A,Rn 直接地址 间接地址 完成累加器A中内容与源操作数算术减运算后,再减CY,其结果存入A中,同时影响PSW中各标志位。 返回 主题

  23. 程序存储器 机器码 9B D6位向D7位有借位, =1 D7位无进位,CY=0,=0 例: (A)=C9H,(R3)=54H,CY=1,(PSW)=98H,执行SUBB A,R3后,A和PSW中的内容各为多少? (A) (R3) 按位相减 0 1 1 1 0 1 0 1 1 0 1 1 1 0 1 0 0 1的个数为4,偶数,P=0 D3位向D4位无借位,AC=0 执行指令后PSW的值为 累加器A中的内容为74H

  24. DEC (DECREMENT) 减1指令,指令格式为: DEC A DEC direct DEC @Ri DEC Rn DEC DPTR ;对累加器A中的内容减1 ;对某直接地址单元中的内容减1 ;对由Ri提供的某地址单元中的内容减1 ;对寄存器中的内容减1 ;对寄存器DPTR中的内容减1(16位数据) 这些指令一般用于循环程序中改变减量值,只有DEC A指令会影响PSW的P标志。 返回 主题

  25. MUL 寄存器B 寄存器A (Multiplication) 1字节无符号整数乘法,指令格式为: MUL AB ;(A)×(B)→BA 例: (A)=50H , (B)=A0H ,执行指令MUL AB后的结果。 0 1 0 1 0 0 0 0 1 0 1 0 0 0 0 0 注意 运算后,该指令还影响 PSW中的CY、 OV、P标志 CY始终为0,OV根据(B) 决定,P根据(A)决定: (B)≠0,则OV=1 0 1 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 32H 00H (OV=1 P=0 CY=0) 返回 主题

  26. DIV 商为: ) 余数为: 寄存器B 寄存器A (Division) 1字节无符号整数除法,指令格式为: DIV AB ;(A)/(B)→A(商)B(余数) 例: (A)=FBH , (B)=12H ,执行指令DIV AB后的结果。 1 1 0 1 0DH 0 0 0 1 0 0 1 0 1 1 1 1 1 0 1 1 1 0 0 1 0 1 1 0 1 0 注意 运算后,该指令还影响 PSW中的CY、 OV、P标志 CY和OV始终为0, P根据(A)决定: 1 0 0 1 0 1 0 0 0 1 1 1 0 0 1 0 1 0 0 0 1 11H (OV=1 CY=0 P=0 ) 返回 主题

  27. 逻辑操作类指令 (25条) ANL ORL XRL CLR CPL RL RR RLC RRC SWAP 返回 主题

  28. ANL (AND Logic) 返回 主题

  29. ORL 返回 主题

  30. XRL Exclusive-OR LOGIC 返回 主题

  31. CLR 返回 主题

  32. CPL Complement 返回 主题

  33. 初始值: 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0 1 1 1 1 RL Rotate left 循环左移指令:对累加器A中的内容循环左移,指令格式为: RL A 例:累加器A中的内容为FEH,每执行一次指令后的结果为: 1 1 第1次: 1 1 经过8次循环左移后,累加器A中的值又恢复了原值。 1 1 第2次: 1 1 0 0 第8次: 0 0 返回 主题

  34. 初始值: 1 1 1 1 1 1 1 1 C累加器 1 1 1 1 1 1 1 1 RLC Rotate Left throught the Carry flag 带进位循环左移指令:对累加器A中的内容与C中内容一起循环左移,指令格式为: RLC A 例:累加器A中的内容为FFH,C=0 执行一次指令后的结果为: 0 0 0 经过1次带进位循环左移后A的值为FEH,再继续带进位循环左移A中的值分别为:FDH、FBH、F7H、EFH、DFH、BFH、7FH,经过8次后A中的值恢复为FFH,C的值恢复为0 返回 主题

  35. 初始值: 0 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 RR Rotate right 循环右移指令:对累加器A中的内容循环右移,指令格式为: RR A 例:累加器A中的内容为7FH,每执行一次指令后的结果为: 1 1 第1次: 1 1 1 1 经过8次循环左移后,累加器A中的值又恢复了原值。 第2次: 1 1 0 0 第8次: 0 0 返回 主题

  36. 初始值: 0 1 1 1 1 1 1 1 C累加器 0 1 1 1 1 1 1 1 RRC Rotate Right throught the Carry flag 带进位循环右移指令:对累加器A中的内容与C中内容一起循环右移,指令格式为: RRC A 例:累加器A中的内容为7FH,C=1 执行一次指令后的结果为: 1 1 1 经过1次带进位循环右移后A的值为BFH,再继续带进位循环左移A中的值分别为:DFH、EFH、F7H、FBH、FDH、FEH、FFH,经过8次后A中的值恢复为7FH,C的值恢复为1 返回 主题

  37. 初始值: 1 1 1 0 0 1 1 1 1 1 1 0 0 1 1 1 分离为 SWAP Swap 半字节交换指令:对累加器A中的内容低4位与高4位进行交换。 指令格式为: SWAP A 例:(A)=E7H,执行指令SWAP A后,(A)=7EH 此指令一般用于压缩BCD码的分离,如2位十进制数字存入一个存储空间,需要把2个数字分开分配存放在2个存储空间。 例如: 59H 05H 09H 返回 主题

  38. 控制转换类指令 (17条) AJMP ACALL JZ SJMP LCALL JNZ LJMP RET CJNE JMP RETI DJNZ NOP 返回 主题

  39. AJMP Absolute jump 绝对跳转(无条件跳转,短跳转)指令 指令格式为:AJMP addr11 指令机器码为2字节: 操作码 转移目的地址(11位) 即转移目的地址只由A10-A0决定,A15-A11不变 图示如下: 返回 主题

  40. 0000H C000H 8000H 4000H 2KB 2KB 2KB 2KB C7FFH 07FFH 87FFH 47FFH C800H 8800H 4800H 0800H 2KB 2KB 2KB 2KB 4FFFH CFFFH 8FFFH 0FFFH 5000H 1000H 9000H D000H 2KB 2KB 2KB 2KB 17FFH 97FFH 57FFH D7FFH D800H 1800H 5800H 9800H 2KB 2KB 2KB 2KB 1FFFH 5FFFH 9FFFH DFFFH E000H 2000H 6000H A000H 2KB 2KB 2KB 2KB A7FFH 67FFH 27FFH E7FFH 6800H A800H E800H 2800H 2KB 2KB 2KB 2KB EFFFH AFFFH 2FFFH 6FFFH 3000H 7000H B000H F000H 2KB 2KB 2KB 2KB 77FFH F7FFH 37FFH B7FFH B800H 3800H F800H 7800H 2KB 2KB 2KB 2KB 7FFFH 3FFFH BFFFH FFFFH 11位地址的跳转即只能在每一块内进行,也就是跳转范围为2KB 用地址标记每一块存储器的起始地址 64KB程序存储器分成32块 每一块则为2KB 返回 主题

  41. 例:AJMP NEXT ;该指令所处位置为1080H,NEXT标号地址位置为1200H 1080H 1080H AJMP NEXT位置 AJMP NEXT位置 两地址在同一2KB块内,可实现跳转 两地址不在同一2KB块内,不能实现跳转 若 1200H NEXT位置 1900H NEXT位置 程序存储器 程序存储器 编程者编程时无需考虑NEXT所在位置在哪,调试程序进行编译时编译程序会检查出此错误

  42. SJMP Short jump 相对跳转(无条件跳转,最短跳转)指令 指令格式为:SJMP rel 指令机器码为2字节: 操作码 偏移量 相对于当前PC的偏移量(8位,其中D7为符号位,1表示负数,0表示正数) 即转移目的地址为:(PC)+2+rel 图示如下: 返回 主题

  43. rel PC PC+2 rel 若rel为: 则向后偏转,最大-128 若rel为: SJMP rel位置 则向前偏转,最大+127 Rel一般也用符号地址表示,只是在编译时自动译成相对地址,编程者同样不用考虑该符号地址所在的位置,若相对地址超出了-128~+127这个范围,编译程序能报告错误。

  44. LJMP Long jump 长跳转(无条件跳转)指令 指令格式为:LJMP addr16 指令机器码为3字节: 操作码 高8位地址 低8位地址 即转移目的地址为:(PC)=addr16 例如:若addr16=1234H,PC当前值为0123H,执行该指令后,程序转移到1234H继续执行。 返回 主题

  45. 说明 指令LJMP NEXT位置 16位目的地址,可为程序存储器空间内任一地址 NEXT:ADD A,#30H 对于编程者来说,编写程序时一般采用符号地址来表示转移的目的地址,目的地址离当前PC指针距离在-128~+127范围时用SJMP指令,若与当前PC在同一2KB范围内时使用AJMP指令,其它均必须使用LJMP指令,但编程者不会对转移地址去人为计算,所以遇到需无条件转移时均用JMP指令代替,由编译程序确定。 0123H 1234H 返回 主题

  46. JMP PC (DPTR) 1000H (DPTR) 1000H (DPTR) 1000H (DPTR) 1000H (DPTR) 1000H 若 若 若 若 若 (A) 08H (A) 06H (A) 04H (A) 02H (A) 00H (PC) 1004H (PC) 1000H (PC) 1002H (PC) 1008H (PC) 1006H PC PC PC PC PC 该指令除了可以代替SJMP、AJMP、LJMP实现无条件转移外,还可以实现散转,其指令格式是: JMP @A+DPTR ;(A)+(DPTR)→PC 一般每2字节存放1跳转指令 例如:若(DPTR)=1000H, 当A中的值分别为00H, 02H,04H,06H,08H时,PC 值分别为1000H,1002H, 1004H,1006H,1008H, 图示如右: 1000H 1002H 1004H 1006H 1008H 返回 主题

  47. ACALL Absolute subroutine Call 例:ACALL DELAY 子程序调用指令:被调用子程序在2KB范围内使用,即程序中ACALL指令的位置与被调用子程序的位置相对距离在2KB内. 实际使用时,由于人工计算相对位置不方便,故一般使用CALL代替ACALL,由编译程序自动判断。 6B<2KB 可用此指令 2054B>2KB 不可用此指令 返回 主题

  48. 000AH地址低11位送入PC PC PC SP 堆栈示意 PC值入栈 SP SP SP ACALL指令的功能: 取出该指令的2字节后,把PC值暂时保存至堆栈。然后把子程序所在位置的地址(低11位送入PC的低11位) 过程如下: CALL DELAY SP指针加1 PC指针高8位入栈 00H PC指针低8位入栈 SP指针加1 04H 既是栈底又是栈顶 功能描述: 子程序位置 (PC)+2→PC,(SP)+1→SP,(PC)L→(SP) (SP)+1→SP,(PC)H→(SP),addr11→PC10~0

  49. LCALL LONG subroutine Call 指令占3B,第2字节为子程序地址高8位,第3字节为子程序低8位 LCALL地址 子程序位置 例:LCALL DELAY 子程序调用指令:与ACALL不同的是被调用子程序在64KB范围内都可使用,即程序中LCALL指令的位置与被调用子程序的位置相对距离可在64KB内. 实际使用LCALL指令时,也由于人工计算相对位置不方便,故也使用CALL代替LCALL即可,编译程序会自动根据调用指令位置与被调用子程序位置采用ACALL还是LCALL,主要是指令占用字节数不同。 距离无限制 返回 主题

  50. FF0CH地址送入PC PC PC SP 堆栈示意 PC值入栈 SP SP SP LCALL指令的功能: 取出该指令的3字节后,把PC值暂时保存至堆栈。然后把子程序所在位置的地址(16位地址送入PC寄存器中) 过程如下: LCALL位置 SP指针加1 PC指针高8位入栈 00H PC指针低8位入栈 SP指针加1 05H 既是栈底又是栈顶 功能描述: 子程序位置 (PC)+3→PC,(SP)+1→SP,(PC)L→(SP) (SP)+1→SP,(PC)H→(SP),addr16→PC

More Related