1 v MOV src dst 15 0 0

  • Slides: 51
Download presentation

1. 数据传送类指令 指令编码表 v数据传送指令 § 汇编助记符: MOV src, dst 15 0 0 12 11

1. 数据传送类指令 指令编码表 v数据传送指令 § 汇编助记符: MOV src, dst 15 0 0 12 11 98 0 1 Ms 65 Rs 32 Md 0 Rd v 压栈指令 § 汇编助记符: PUSH dst 15 0 0 12 11 0 0 0 1 65 1 0 0 0 32 Md 0 Rd v 出栈指令 § 汇编助记符:POP dst 15 0 0 12 11 0 0 0 1 65 1 0 0 1 32 Md 0 Rd 堆栈 9

数据传送类指令 寻址方式编码 v举例 w. MOV #0100 H, R 0 15 12 11 98 65

数据传送类指令 寻址方式编码 v举例 w. MOV #0100 H, R 0 15 12 11 98 65 32 0 0 1 011 XXX 000 0 0 0 0 1 0 0 0 0 w. PUSH R 1 15 0 0 12 11 0 0 0 1 65 1 0 0 0 32 000 0 001 w. POP (R 2) 15 0 0 12 11 0 0 0 1 65 1 0 0 1 32 001 0 010 10

逻辑运算指令举例 寻址方式编码 v. AND (0100 H), (R 0) 15 12 11 0 0 0

逻辑运算指令举例 寻址方式编码 v. AND (0100 H), (R 0) 15 12 11 0 0 0 98 101 0 0 65 32 XXX 0 1 0 0 001 0 000 0 0 v. TEST #1, (R 0) 15 1 0 12 11 0 0 0 98 011 0 0 65 32 XXX 0 0 001 0 000 0 1 v. OR #F 000 H, 2(R 4) 15 12 11 0 1 1 1 0 0 1 1 011 0 0 98 0 0 0 65 32 XXX 0 0 0 0 110 0 0 100 0 0 0 1 0 13

汇编语言源程序及对应的机器语言程序 地址 机器程序 0030 H: 1800 0050 0032 H: 1001 0033 H: 0081 0034

汇编语言源程序及对应的机器语言程序 地址 机器程序 0030 H: 1800 0050 0032 H: 1001 0033 H: 0081 0034 H: 2001 0035 H: 4601 0005 0037 H: 1060 0051 0039 H: 0000 0050 H: 2014 0051 H: - 汇编程序 ORG 30 H MOV 50 H, R 0 X MOV R 0, R 1 SHL R 1 ADD R 0, R 1 SUB #5 H, R 1 MOV R 1, Y 51 H HALT ; X→R 0 ; X→R 1 ; 2 X→R 1 ; 3 X-5→R 1 ; 3 X-5→Y ORG 50 H X DW 2014 H Y DW ? END 19

【例6. 3】将变量X中存放的有符号数(用补码表示)的绝 对值存入变量Y, 编写JUC-II 的汇编语言源程序。 ORG 30 H 0030 H: 1820 0101 MOV X,

【例6. 3】将变量X中存放的有符号数(用补码表示)的绝 对值存入变量Y, 编写JUC-II 的汇编语言源程序。 ORG 30 H 0030 H: 1820 0101 MOV X, Y ; 先用X给Y赋值 0033 H: A 620 8000 0100 TEST #8000 H, X ; 测试X的最高位 EXIT 0036 H: 03 E 0 003 E JNS 003 EH ; 非负数无需改变 0038 H: 1600 0000 MOV #0 H, R 0 ; 用“ 0 -Y”修改Y 003 AH: 4800 0101 SUB Y, R 0 003 CH: 1020 0101 MOV R 0, Y EXIT: HALT 003 EH: 0000 为什么不能合并为: 0100 H: 9520 0101 H: - X Y ORG 100 H DW 9520 H DW ? END SUB Y, #0 24

汇编语言源程序及机器语言程序如下: 0030 H: 1800 0100 0032 H: 06 A 0 0037 0034 H: 1060

汇编语言源程序及机器语言程序如下: 0030 H: 1800 0100 0032 H: 06 A 0 0037 0034 H: 1060 0101 0036 H: 0000 0037 H: 0602 0038 H: 1601 0000 003 AH: 1602 0001 003 CH: 4080 003 DH: 0260 0044 003 FH: 0441 0040 H: 2602 0042 H: 0420 003 C 0044 H: 0642 0045 H: 0002 0100 H: 0190 0101 H: - ORG 30 H MOV X, R 0 CALL ROOT MOV R 1, Y HALT ROOT: PUSH R 2 MOV #0 H, R 1 MOV #1 H, R 2 NEXT: SUB R 2, R 0 JNC EXIT INC R 1 ADD #2 H, R 2 JMP NEXT EXIT: POP R 2 RET ; 初始化传入参数 ; 调用求平方根子程序 ; 保存返回结果 ; 主程序结束 ; 保护现场 ; 初始化平方根 ; 初始化减数 ; 执行减法并修改被减数 ; 不够减退出循环 ; 记录减法次数(即平方根) ; 修改减数 ; 转至循环控制部分 ; 恢复现场 ; 子程序结束 ORG 100 H X DW 190 H Y DW ? END 44