Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
8
8086
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
问题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
银宸大学计算机学院
教师群组
赵鹏翀-zpc
8086
提交
af1648b9
提交
af1648b9
9月 25, 2018
创建
作者:
赵鹏翀
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add datasheet
上级
c8ab8702
隐藏空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
959 行增加
和
957 行删除
+959
-957
8086.dlproj
8086.dlproj
+1
-0
8086.pdf
8086.pdf
+0
-0
rom.lst
rom.lst
+958
-957
没有找到文件。
8086.dlproj
浏览文件 @
af1648b9
...
...
@@ -16,6 +16,7 @@
</filefolder>
<file
relativepath=
"8086.dlsche"
/>
<file
relativepath=
"README.md"
/>
<file
relativepath=
"8086.pdf"
/>
</files>
</project>
8086.pdf
0 → 100644
浏览文件 @
af1648b9
添加文件
rom.lst
浏览文件 @
af1648b9
0001 ; (C) 2008-2018 北京英真时代科技有限公司。保留所有权利。
0002
0003 ; 所有指令的第一条微指令地址必须是8的倍数
0004 ; 取指微指令,所有指令的第一步均为取指操作,都要执行该条微指令
0005
0006 ;0.取指指令
0007 00 C7 47 FF FF fetch instruction
0008
0009 04 FF FF FF FF dup 7, null
0010
0011 ;1.mov reg, imm 将立即数imm传送到寄存器reg中
0012 20 FD FF FF FF inc pc
0013 24 FF 47 EF FF path [pc], ir
0014 28 FD FF FF FF inc pc
0015 2C FF 47 E9 FF path [pc], rd
0016 30 FD FF FF FF inc pc
0017 34 CB FF FF FF check irq
0018 38 C3 FF FF FF reset upc
0019
0020 3C FF FF FF FF dup 1, null
0021
0022 ;2.mov reg, reg 源与目标寄存器必须有相同的数据类型长度
0023 40 FD FF FF FF inc pc
0024 44 FF 47 EF FF path [pc], ir
0025 48 FF C1 E9 FF path rs, rd
0026 4C FD FF FF FF inc pc
0027 50 CB FF FF FF check irq
0028 54 C3 FF FF FF reset upc
0029
0030 58 FF FF FF FF dup 2, null
0031
0032 ;3.mov reg, symbol 将存储器内容复制到寄存器
0033 60 FD FF FF FF inc pc
0034 64 FF 47 EF FF path [pc], ir
0035 68 FD FF FF FF inc pc
0036 6C FF 47 E5 FF path [pc], mar
0037 70 FF 87 E9 FF path [mar], rd
0038 74 FD FF FF FF inc pc
0039 78 CB FF FF FF check irq
0040 7C C3 FF FF FF reset upc
0041
0042 ;4.mov reg, [reg] 将存储器内容复制到寄存器
0043 80 FD FF FF FF inc pc
0044 84 FF 47 EF FF path [pc], ir
0045 88 FF C1 E5 FF path rs, mar
0046 8C FF 87 E9 FF path [mar], rd
0047 90 FD FF FF FF inc pc
0048 94 CB FF FF FF check irq
0049 98 C3 FF FF FF reset upc
0050
0051 9C FF FF FF FF dup 1, null
0052
0053 ;5.mov [reg], reg 将寄存器内容传送到存储器
0054 A0 FD FF FF FF inc pc
0055 A4 FF 47 EF FF path [pc], ir
0056 A8 BF C1 E5 FF path rd, mar
0057 AC FF 81 E7 FF path rs, [mar]
0058 B0 FD FF FF FF inc pc
0059 B4 CB FF FF FF check irq
0060 B8 C3 FF FF FF reset upc
0061
0062 BC FF FF FF FF dup 1, null
0063
0064 ;6.mov [reg], imm 将立即数传送到存储单元中
0065 C0 FD FF FF FF inc pc
0066 C4 FF 47 EF FF path [pc], ir
0067 C8 FD FF FF FF inc pc
0068 CC FF 47 E9 FF path [pc], rd
0069 D0 FD FF FF FF inc pc
0070 D4 CB FF FF FF check irq
0071 D8 C3 FF FF FF reset upc
0072
0073 DC FF FF FF FF dup 1, null
0074
0075 ;7. mov symbol, reg
0076 E0 FD FF FF FF inc pc
0077 E4 FF 47 EF FF path [pc], ir
0078 E8 FD FF FF FF inc pc
0079 EC FF 47 E5 FF path [pc], mar
0080 F0 FF 81 E7 FF path rs, [mar]
0081 F4 FD FF FF FF inc pc
0082 F8 CB FF FF FF check irq
0083 FC C3 FF FF FF reset upc
0084
0085 ;8. add reg, reg
0086 100 FD FF FF FF inc pc
0087 104 FF 47 EF FF path [pc], ir
0088 108 BF C1 E1 FF path rd, a
0089 10C FF C1 E3 FF path rs, w
0090 110 FF D1 E9 D9 path alu_add, rd
0091 114 FF CB EB FF path al_flag, flag
0092 118 FD FF FF FF inc pc
0093 11C CB FF FF FF check irq
0094 120 C3 FF FF FF reset upc
0095
0096 124 FF FF FF FF dup 7, null
0097
0098 ;10. add reg, [reg]
0099 140 FD FF FF FF inc pc
0100 144 FF 47 EF FF path [pc], ir
0101 148 FF C1 E5 FF path rs, mar
0102 14C FF 87 E3 FF path [mar], w
0103 150 BF C1 E1 FF path rd, a
0104 154 FF D1 E9 D9 path alu_add, rd
0105 158 FF CB EB FF path al_flag, flag
0106 15C FD FF FF FF inc pc
0107 160 CB FF FF FF check irq
0108 164 C3 FF FF FF reset upc
0109
0110 168 FF FF FF FF dup 6, null
0111
0112 ;12. add reg, symbol
0113 180 FD FF FF FF inc pc
0114 184 FF 47 EF FF path [pc], ir
0115 188 FD FF FF FF inc pc
0116 18C FF 47 E5 FF path [pc], mar
0117 190 FF 87 E3 FF path [mar], w
0118 194 BF C1 E1 FF path rd, a
0119 198 FF D1 E9 D9 path alu_add, rd
0120 19C FF CB EB FF path al_flag, flag
0121 1A0 FD FF FF FF inc pc
0122 1A4 CB FF FF FF check irq
0123 1A8 C3 FF FF FF reset upc
0124
0125 1AC FF FF FF FF dup 5, null
0126
0127 ;14. add reg, imm
0128 1C0 FD FF FF FF inc pc
0129 1C4 FF 47 EF FF path [pc], ir
0130 1C8 FD FF FF FF inc pc
0131 1CC FF 47 E3 FF path [pc], w
0132 1D0 BF C1 E1 FF path rd, a
0133 1D4 FF D1 E9 D9 path alu_add, rd
0134 1D8 FF CB EB FF path al_flag, flag
0135 1DC FD FF FF FF inc pc
0136 1E0 CB FF FF FF check irq
0137 1E4 C3 FF FF FF reset upc
0138
0139 1E8 FF FF FF FF dup 6, null
0140
0141 ;16. adc reg, reg
0142 200 FD FF FF FF inc pc
0143 204 FF 47 EF FF path [pc], ir
0144 208 BF C1 E1 FF path rd, a
0145 20C FF C1 E3 FF path rs, w
0146 210 FF D1 E9 C9 path alu_adc, rd
0147 214 FF CB EB FF path al_flag, flag
0148 218 FD FF FF FF inc pc
0149 21C CB FF FF FF check irq
0150 220 C3 FF FF FF reset upc
0151
0152 224 FF FF FF FF dup 7, null
0153
0154 ;18. adc reg, [reg]
0155 240 FD FF FF FF inc pc
0156 244 FF 47 EF FF path [pc], ir
0157 248 FF C1 E5 FF path rs, mar
0158 24C FF 87 E3 FF path [mar], w
0159 250 BF C1 E1 FF path rd, a
0160 254 FF D1 E9 C9 path alu_adc, rd
0161 258 FF CB EB FF path al_flag, flag
0162 25C FD FF FF FF inc pc
0163 260 CB FF FF FF check irq
0164 264 C3 FF FF FF reset upc
0165
0166 268 FF FF FF FF dup 6, null
0167
0168 ;20. adc reg, symbol
0169 280 FD FF FF FF inc pc
0170 284 FF 47 EF FF path [pc], ir
0171 288 FD FF FF FF inc pc
0172 28C FF 47 E5 FF path [pc], mar
0173 290 FF 87 E3 FF path [mar], w
0174 294 BF C1 E1 FF path rd, a
0175 298 FF D1 E9 C9 path alu_adc, rd
0176 29C FF CB EB FF path al_flag, flag
0177 2A0 FD FF FF FF inc pc
0178 2A4 CB FF FF FF check irq
0179 2A8 C3 FF FF FF reset upc
0180
0181 2AC FF FF FF FF dup 5, null
0182
0183 ;22. adc reg, imm
0184 2C0 FD FF FF FF inc pc
0185 2C4 FF 47 EF FF path [pc], ir
0186 2C8 FD FF FF FF inc pc
0187 2CC FF 47 E3 FF path [pc], w
0188 2D0 BF C1 E1 FF path rd, a
0189 2D4 FF D1 E9 C9 path alu_adc, rd
0190 2D8 FF CB EB FF path al_flag, flag
0191 2DC FD FF FF FF inc pc
0192 2E0 CB FF FF FF check irq
0193 2E4 C3 FF FF FF reset upc
0194
0195 2E8 FF FF FF FF dup 6, null
0196
0197 ;24. sub reg, reg
0198 300 FD FF FF FF inc pc
0199 304 FF 47 EF FF path [pc], ir
0200 308 BF C1 E1 FF path rd, a
0201 30C FF C1 E3 FF path rs, w
0202 310 FF D1 E9 D6 path alu_sub, rd
0203 314 FF CB EB FF path al_flag, flag
0204 318 FD FF FF FF inc pc
0205 31C CB FF FF FF check irq
0206 320 C3 FF FF FF reset upc
0207
0208 324 FF FF FF FF dup 7, null
0209
0210 ;26. sub reg, [reg]
0211 340 FD FF FF FF inc pc
0212 344 FF 47 EF FF path [pc], ir
0213 348 FF C1 E5 FF path rs, mar
0214 34C FF 87 E3 FF path [mar], w
0215 350 BF C1 E1 FF path rd, a
0216 354 FF D1 E9 D6 path alu_sub, rd
0217 358 FF CB EB FF path al_flag, flag
0218 35C FD FF FF FF inc pc
0219 360 CB FF FF FF check irq
0220 364 C3 FF FF FF reset upc
0221
0222 368 FF FF FF FF dup 6, null
0223
0224 ;28. sub reg, symbol
0225 380 FD FF FF FF inc pc
0226 384 FF 47 EF FF path [pc], ir
0227 388 FD FF FF FF inc pc
0228 38C FF 47 E5 FF path [pc], mar
0229 390 FF 87 E3 FF path [mar], w
0230 394 BF C1 E1 FF path rd, a
0231 398 FF D1 E9 D6 path alu_sub, rd
0232 39C FF CB EB FF path al_flag, flag
0233 3A0 FD FF FF FF inc pc
0234 3A4 CB FF FF FF check irq
0235 3A8 C3 FF FF FF reset upc
0236
0237 3AC FF FF FF FF dup 5, null
0238
0239 ;30. sub reg, imm
0240 3C0 FD FF FF FF inc pc
0241 3C4 FF 47 EF FF path [pc], ir
0242 3C8 FD FF FF FF inc pc
0243 3CC FF 47 E3 FF path [pc], w
0244 3D0 BF C1 E1 FF path rd, a
0245 3D4 FF D1 E9 D6 path alu_sub, rd
0246 3D8 FF CB EB FF path al_flag, flag
0247 3DC FD FF FF FF inc pc
0248 3E0 CB FF FF FF check irq
0249 3E4 C3 FF FF FF reset upc
0250
0251 3E8 FF FF FF FF dup 6, null
0252
0253 ;32. sbb reg, reg
0254 400 FD FF FF FF inc pc
0255 404 FF 47 EF FF path [pc], ir
0256 408 BF C1 E1 FF path rd, a
0257 40C FF C1 E3 FF path rs, w
0258 410 FF D1 E9 C6 path alu_sbb, rd
0259 414 FF CB EB FF path al_flag, flag
0260 418 FD FF FF FF inc pc
0261 41C CB FF FF FF check irq
0262 420 C3 FF FF FF reset upc
0263
0264 424 FF FF FF FF dup 7, null
0265
0266 ;34. sbb reg, [reg]
0267 440 FD FF FF FF inc pc
0268 444 FF 47 EF FF path [pc], ir
0269 448 FF C1 E5 FF path rs, mar
0270 44C FF 87 E3 FF path [mar], w
0271 450 BF C1 E1 FF path rd, a
0272 454 FF D1 E9 C6 path alu_sbb, rd
0273 458 FF CB EB FF path al_flag, flag
0274 45C FD FF FF FF inc pc
0275 460 CB FF FF FF check irq
0276 464 C3 FF FF FF reset upc
0277
0278 468 FF FF FF FF dup 6, null
0279
0280 ;36. sbb reg, symbol
0281 480 FD FF FF FF inc pc
0282 484 FF 47 EF FF path [pc], ir
0283 488 FD FF FF FF inc pc
0284 48C FF 47 E5 FF path [pc], mar
0285 490 FF 87 E3 FF path [mar], w
0286 494 BF C1 E1 FF path rd, a
0287 498 FF D1 E9 C6 path alu_sbb, rd
0288 49C FF CB EB FF path al_flag, flag
0289 4A0 FD FF FF FF inc pc
0290 4A4 CB FF FF FF check irq
0291 4A8 C3 FF FF FF reset upc
0292
0293 4AC FF FF FF FF dup 5, null
0294
0295 ;38. sbb a, imm
0296 4C0 FD FF FF FF inc pc
0297 4C4 FF 47 EF FF path [pc], ir
0298 4C8 FD FF FF FF inc pc
0299 4CC FF 47 E3 FF path [pc], w
0300 4D0 BF C1 E1 FF path rd, a
0301 4D4 FF D1 E9 C6 path alu_sbb, rd
0302 4D8 FF CB EB FF path al_flag, flag
0303 4DC FD FF FF FF inc pc
0304 4E0 CB FF FF FF check irq
0305 4E4 C3 FF FF FF reset upc
0306
0307 4E8 FF FF FF FF dup 6, null
0308
0309 ;40.
0310 500 FF FF FF FF dup 8, null
0311
0312 ;41.
0313 520 FF FF FF FF dup 8, null
0314
0315 ;42. and reg, reg
0316 540 FD FF FF FF inc pc
0317 544 FF 47 EF FF path [pc], ir
0318 548 BF C1 E1 FF path rd, a
0319 54C FF C1 E3 FF path rs, w
0320 550 FF D1 E9 FB path alu_and, rd
0321 554 FF CB EB FF path al_flag, flag
0322 558 FD FF FF FF inc pc
0323 55C CB FF FF FF check irq
0324 560 C3 FF FF FF reset upc
0325
0326 564 FF FF FF FF dup 7, null
0327
0328 ;44. and reg, [reg]
0329 580 FD FF FF FF inc pc
0330 584 FF 47 EF FF path [pc], ir
0331 588 FF C1 E5 FF path rs, mar
0332 58C FF 87 E3 FF path [mar], w
0333 590 BF C1 E1 FF path rd, a
0334 594 FF D1 E9 FB path alu_and, rd
0335 598 FF CB EB FF path al_flag, flag
0336 59C FD FF FF FF inc pc
0337 5A0 CB FF FF FF check irq
0338 5A4 C3 FF FF FF reset upc
0339
0340 5A8 FF FF FF FF dup 6, null
0341
0342 ;46. and reg, symbol
0343 5C0 FD FF FF FF inc pc
0344 5C4 FF 47 EF FF path [pc], ir
0345 5C8 FD FF FF FF inc pc
0346 5CC FF 47 E5 FF path [pc], mar
0347 5D0 FF 87 E3 FF path [mar], w
0348 5D4 BF C1 E1 FF path rd, a
0349 5D8 FF D1 E9 FB path alu_and, rd
0350 5DC FF CB EB FF path al_flag, flag
0351 5E0 FD FF FF FF inc pc
0352 5E4 CB FF FF FF check irq
0353 5E8 C3 FF FF FF reset upc
0354
0355 5EC FF FF FF FF dup 5, null
0356
0357 ;48. and reg, immediate
0358 600 FD FF FF FF inc pc
0359 604 FF 47 EF FF path [pc], ir
0360 608 FD FF FF FF inc pc
0361 60C FF 47 E3 FF path [pc], w
0362 610 BF C1 E1 FF path rd, a
0363 614 FF D1 E9 FB path alu_and, rd
0364 618 FF CB EB FF path al_flag, flag
0365 61C FD FF FF FF inc pc
0366 620 CB FF FF FF check irq
0367 624 C3 FF FF FF reset upc
0368
0369 628 FF FF FF FF dup 6, null
0370
0371 ;50. or reg, reg
0372 640 FD FF FF FF inc pc
0373 644 FF 47 EF FF path [pc], ir
0374 648 BF C1 E1 FF path rd, a
0375 64C FF C1 E3 FF path rs, w
0376 650 FF D1 E9 FE path alu_or, rd
0377 654 FF CB EB FF path al_flag, flag
0378 658 FD FF FF FF inc pc
0379 65C CB FF FF FF check irq
0380 660 C3 FF FF FF reset upc
0381
0382 664 FF FF FF FF dup 7, null
0383
0384 ;52. or reg, [reg]
0385 680 FD FF FF FF inc pc
0386 684 FF 47 EF FF path [pc], ir
0387 688 FF C1 E5 FF path rs, mar
0388 68C FF 87 E3 FF path [mar], w
0389 690 BF C1 E1 FF path rd, a
0390 694 FF D1 E9 FE path alu_or, rd
0391 698 FF CB EB FF path al_flag, flag
0392 69C FD FF FF FF inc pc
0393 6A0 CB FF FF FF check irq
0394 6A4 C3 FF FF FF reset upc
0395
0396 6A8 FF FF FF FF dup 6, null
0397
0398 ;54. or reg, symbol
0399 6C0 FD FF FF FF inc pc
0400 6C4 FF 47 EF FF path [pc], ir
0401 6C8 FD FF FF FF inc pc
0402 6CC FF 47 E5 FF path [pc], mar
0403 6D0 FF 87 E3 FF path [mar], w
0404 6D4 BF C1 E1 FF path rd, a
0405 6D8 FF D1 E9 FE path alu_or, rd
0406 6DC FF CB EB FF path al_flag, flag
0407 6E0 FD FF FF FF inc pc
0408 6E4 CB FF FF FF check irq
0409 6E8 C3 FF FF FF reset upc
0410
0411 6EC FF FF FF FF dup 5, null
0412
0413 ;56. or reg, immediate
0414 700 FD FF FF FF inc pc
0415 704 FF 47 EF FF path [pc], ir
0416 708 FD FF FF FF inc pc
0417 70C FF 47 E3 FF path [pc], w
0418 710 BF C1 E1 FF path rd, a
0419 714 FF D1 E9 FE path alu_or, rd
0420 718 FF CB EB FF path al_flag, flag
0421 71C FD FF FF FF inc pc
0422 720 CB FF FF FF check irq
0423 724 C3 FF FF FF reset upc
0424
0425 728 FF FF FF FF dup 6, null
0426
0427 ;58. xor reg, reg
0428 740 FD FF FF FF inc pc
0429 744 FF 47 EF FF path [pc], ir
0430 748 BF C1 E1 FF path rd, a
0431 74C FF C1 E3 FF path rs, w
0432 750 FF D1 E9 F6 path alu_xor, rd
0433 754 FF CB EB FF path al_flag, flag
0434 758 FD FF FF FF inc pc
0435 75C CB FF FF FF check irq
0436 760 C3 FF FF FF reset upc
0437
0438 764 FF FF FF FF dup 7, null
0439
0440 ;60. xor reg, [reg]
0441 780 FD FF FF FF inc pc
0442 784 FF 47 EF FF path [pc], ir
0443 788 FF C1 E5 FF path rs, mar
0444 78C FF 87 E3 FF path [mar], w
0445 790 BF C1 E1 FF path rd, a
0446 794 FF D1 E9 F6 path alu_xor, rd
0447 798 FF CB EB FF path al_flag, flag
0448 79C FD FF FF FF inc pc
0449 7A0 CB FF FF FF check irq
0450 7A4 C3 FF FF FF reset upc
0451
0452 7A8 FF FF FF FF dup 6, null
0453
0454 ;62. xor reg, symbol
0455 7C0 FD FF FF FF inc pc
0456 7C4 FF 47 EF FF path [pc], ir
0457 7C8 FD FF FF FF inc pc
0458 7CC FF 47 E5 FF path [pc], mar
0459 7D0 FF 87 E3 FF path [mar], w
0460 7D4 BF C1 E1 FF path rd, a
0461 7D8 FF D1 E9 F6 path alu_xor, rd
0462 7DC FF CB EB FF path al_flag, flag
0463 7E0 FD FF FF FF inc pc
0464 7E4 CB FF FF FF check irq
0465 7E8 C3 FF FF FF reset upc
0466
0467 7EC FF FF FF FF dup 5, null
0468
0469 ;64. xor reg, immediate
0470 800 FD FF FF FF inc pc
0471 804 FF 47 EF FF path [pc], ir
0472 808 FD FF FF FF inc pc
0473 80C FF 47 E3 FF path [pc], w
0474 810 BF C1 E1 FF path rd, a
0475 814 FF D1 E9 F6 path alu_xor, rd
0476 818 FF CB EB FF path al_flag, flag
0477 81C FD FF FF FF inc pc
0478 820 CB FF FF FF check irq
0479 824 C3 FF FF FF reset upc
0480
0481 828 FF FF FF FF dup 6, null
0482
0483 ;66. push reg 将sp寄存器作为源寄存器
0484 ; 更新栈顶
0485 840 BF C1 E1 FF path sp, a
0486 844 FF D1 E9 DF path alu_dec, sp
0487
0488 ; 入栈
0489 848 BF C1 E5 FF path sp, mar
0490 84C FF 81 E7 FF path rs, [mar]
0491 850 FD FF FF FF inc pc
0492 854 CB FF FF FF check irq
0493 858 C3 FF FF FF reset upc
0494
0495 85C FF FF FF FF dup 1, null
0496
0497 ;67. pop reg
0498 ; 出栈
0499 860 BF C1 E5 FF path sp, mar
0500 864 FF 87 E9 FF path [mar], rd
0501
0502 ; 更新栈顶
0503 868 BF C1 E1 FF path sp, a
0504 86C FF D1 E9 D0 path alu_inc, sp
0505 870 FD FF FF FF inc pc
0506 874 CB FF FF FF check irq
0507 878 C3 FF FF FF reset upc
0508
0509 87C FF FF FF FF dup 1, null
0510
0511 ;68. not reg
0512 880 FD FF FF FF inc pc
0513 884 FF 47 EF FF path [pc], ir
0514 888 BF C1 E1 FF path rd, a
0515 88C FF D1 E9 F0 path alu_not, rd
0516 890 FF CB EB FF path al_flag, flag
0517 894 FD FF FF FF inc pc
0518 898 CB FF FF FF check irq
0519 89C C3 FF FF FF reset upc
0520
0521 ; test指令主要影响ZF标志
0522 ;69. test reg, imm
0523 8A0 FD FF FF FF inc pc
0524 8A4 FF 47 EF FF path [pc], ir
0525 8A8 BF C1 E1 FF path rd, a
0526 8AC FD FF FF FF inc pc
0527 8B0 FF 47 E3 FF path [pc], w
0528 8B4 FF CB EB FF path al_flag, flag
0529 8B8 FD FF FF FF inc pc
0530 8BC CB FF FF FF check irq
0531 8C0 C3 FF FF FF reset upc
0532
0533 8C4 FF FF FF FF dup 7, null
0534
0535 ;71. cmp reg, immediate
0536 8E0 FD FF FF FF inc pc
0537 8E4 FF 47 EF FF path [pc], ir
0538 8E8 BF C1 E1 FF path rd, a
0539 8EC FD FF FF FF inc pc
0540 8F0 FF 47 E3 FF path [pc], w
0541 8F4 FF D1 E1 D6 path alu_sub, a
0542 8F8 FF CB EB FF path al_flag, flag
0543 8FC FD FF FF FF inc pc
0544 900 CB FF FF FF check irq
0545 904 C3 FF FF FF reset upc
0546
0547 908 FF FF FF FF dup 6, null
0548
0549 ;73. cmp reg, reg
0550 920 FD FF FF FF inc pc
0551 924 FF 47 EF FF path [pc], ir
0552 928 BF C1 E1 FF path rd, a
0553 92C FF C1 E3 FF path rs, w
0554 930 FF D1 E1 D6 path alu_sub, a
0555 934 FF CB EB FF path al_flag, flag
0556 938 FD FF FF FF inc pc
0557 93C CB FF FF FF check irq
0558 940 C3 FF FF FF reset upc
0559
0560 944 FF FF FF FF dup 7, null
0561
0562 ;75. in al, imm
0563 960 FD FF FF FF inc pc
0564 964 FF 47 EF FF path [pc], ir
0565 968 FD FF FF FF inc pc
0566 96C FF 47 E5 FF path [pc], mar
0567 970 FE 87 E9 FF path <mar>, rd
0568 974 FD FF FF FF inc pc
0569 978 C3 FF FF FF reset upc
0570
0571 97C FF FF FF FF dup 1, null
0572
0573 ;76. in al, dl
0574 980 FD FF FF FF inc pc
0575 984 FF 47 EF FF path [pc], ir
0576 988 FF C1 E5 FF path rs, mar
0577 98C FE 87 E9 FF path <mar>, rd
0578 990 FD FF FF FF inc pc
0579 994 C3 FF FF FF reset upc
0580
0581 998 FF FF FF FF dup 2, null
0582
0583 ;77. out dl, al
0584 9A0 FD FF FF FF inc pc
0585 9A4 FF 47 EF FF path [pc], ir
0586 9A8 BF C1 E5 FF path rd, mar
0587 9AC FE 81 E7 FF path rs, <mar>
0588 9B0 FD FF FF FF inc pc
0589 9B4 C3 FF FF FF reset upc
0590
0591 9B8 FF FF FF FF dup 2, null
0592
0593 ;78. out imm, al
0594 9C0 FD FF FF FF inc pc
0595 9C4 FF 47 EF FF path [pc], ir
0596 9C8 FD FF FF FF inc pc
0597 9CC FF 47 E5 FF path [pc], mar
0598 9D0 FE 81 E7 FF path rs, <mar>
0599 9D4 FD FF FF FF inc pc
0600 9D8 C3 FF FF FF reset upc
0601
0602 9DC FF FF FF FF dup 1, null
0603
0604 ;79. lea reg, symbol
0605 9E0 FD FF FF FF inc pc
0606 9E4 FF 47 EF FF path [pc], ir
0607 9E8 FD FF FF FF inc pc
0608 9EC FF 47 E9 FF path [pc], rd
0609 9F0 FD FF FF FF inc pc
0610 9F4 CB FF FF FF check irq
0611 9F8 C3 FF FF FF reset upc
0612
0613 9FC FF FF FF FF dup 1, null
0614
0615 ;80. ja symbol
0616 A00 CB FF FF FF check irq
0617 A04 FD FF FF FF inc pc
0618 A08 FD 46 7F FF path ja[pc], pc
0619 A0C C3 FF FF FF reset upc
0620
0621 A10 FF FF FF FF dup 4, null
0622
0623 ;81. jb symbol
0624 A20 CB FF FF FF check irq
0625 A24 FD FF FF FF inc pc
0626 A28 FD 46 9F FF path jb[pc], pc
0627 A2C C3 FF FF FF reset upc
0628
0629 A30 FF FF FF FF dup 4, null
0630
0631 ;82. jg symbol
0632 A40 CB FF FF FF check irq
0633 A44 FD FF FF FF inc pc
0634 A48 FD 46 BF FF path jg[pc], pc
0635 A4C C3 FF FF FF reset upc
0636
0637 A50 FF FF FF FF dup 4, null
0638
0639 ;83. jl symbol
0640 A60 CB FF FF FF check irq
0641 A64 FD FF FF FF inc pc
0642 A68 FD 46 DF FF path jl[pc], pc
0643 A6C C3 FF FF FF reset upc
0644
0645 A70 FF FF FF FF dup 4, null
0646
0647 ;84. je symbol
0648 A80 CB FF FF FF check irq
0649 A84 FD FF FF FF inc pc
0650 A88 FD 46 1F FF path jz[pc], pc
0651 A8C C3 FF FF FF reset upc
0652
0653 A90 FF FF FF FF dup 4, null
0654
0655 ;85. jne symbol
0656 AA0 CB FF FF FF check irq
0657 AA4 FD FF FF FF inc pc
0658 AA8 FD 46 3F FF path jnz[pc], pc
0659 AAC C3 FF FF FF reset upc
0660
0661 AB0 FF FF FF FF dup 4, null
0662
0663 ;86. jc symbol
0664 AC0 CB FF FF FF check irq
0665 AC4 FD FF FF FF inc pc
0666 AC8 FD 46 5F FF path jc[pc], pc
0667 ACC C3 FF FF FF reset upc
0668
0669 AD0 FF FF FF FF dup 4, null
0670
0671 ;87. jmp symbol
0672 AE0 CB FF FF FF check irq
0673 AE4 FD FF FF FF inc pc
0674 AE8 FD 46 FF FF path jmp[pc], pc
0675 AEC C3 FF FF FF reset upc
0676
0677 AF0 FF FF FF FF dup 4, null
0678
0679 ;88. loop symbol 将cl作为目的操作数减1,改变零标志,若zf = 1,则跳转
0680 B00 FD FF FF FF inc pc
0681 B04 FF 47 EF FF path [pc], ir
0682 B08 BF C1 E1 FF path rd, a
0683 B0C FF D1 E9 DF path alu_dec, rd
0684 B10 FF CB EB FF path al_flag, flag
0685 B14 FD FF FF FF inc pc
0686 B18 FD 46 FF FF path jmp[pc], pc
0687 B1C CB FF FF FF check irq
0688 B20 C3 FF FF FF reset upc
0689
0690 B24 FF FF FF FF dup 7, null
0691
0692 ;====================================================================================================
0693
0694 ; 软中断,首先将标志寄存器入栈,清除中断标志IF,并将当前程序断点的地址入栈保护,从
0695 ; 中断向量表中获取中断入口地址,CPU转向中断入口地址去执行相应的中断服务程序。
0696 ; 中断向量表段地址保存在ES寄存器中
0697 ;90. int immediate
0698 ; 将标志寄存器入栈
0699 B40 FD FF FF FF inc pc
0700 B44 FF 47 EF FF path [pc], ir
0701 B48 BF C1 E1 FF path sp, a
0702 B4C BF C1 E3 FF path sp, w
0703 B50 FF D1 E9 DF path alu_dec, sp
0704 B54 BF C1 E5 FF path sp, mar
0705 B58 FF 83 E7 FF path flag, [mar]
0706 ; 关中断
0707 B5C D3 FF FF FF cli
0708
0709 ; 更新栈顶
0710 B60 BF C1 E1 FF path sp, a
0711 B64 BF C1 E3 FF path sp, w
0712 B68 FF D1 E9 DF path alu_dec, sp
0713
0714 ; 计算中断服务程序入口地址
0715 B6C FD FF FF FF inc pc
0716 B70 FF 47 E5 FF path [pc], mar
0717
0718 B74 FD FF FF FF inc pc ;下一条指令地址(中断返回地址)暂存到a
0719 B78 FF C5 E1 FF path pc, a
0720
0721 ; 将中断服务程序入口地址置入pc,准备执行服务程序
0722 B7C FF 86 FF FF path [mar], pc
0723
0724 ; 将a中的返回地址入栈
0725 B80 BF C1 E5 FF path sp, mar
0726 B84 FF 91 E7 FF path a, [mar]
0727 B88 C3 FF FF FF reset upc
0728
0729 B8C FF FF FF FF dup 5, null
0730
0731 ;====================================================================================================
0732
0733 ;93. iret
0734 ; 先恢复标志寄存器内容
0735 BA0 FD FF FF FF inc pc
0736 BA4 FF 47 EF FF path [pc], ir
0737 BA8 BF C1 E1 FF path sp, a
0738 BAC FF D1 E5 D0 path alu_inc, mar
0739 BB0 FF 87 EB FF path [mar], flag
0740
0741 ; 恢复中断返回地址
0742 BB4 BF C1 E5 FF path sp, mar
0743 BB8 FF 86 FF FF path [mar], pc
0744
0745 ; 计算新的栈顶
0746 BBC BF C1 E1 FF path sp, a
0747 BC0 FF D1 E1 D0 path alu_inc, a
0748 BC4 FF D1 E9 D0 path alu_inc, sp
0749 BC8 C3 FF FF FF reset upc
0750
0751 BCC FF FF FF FF dup 5, null
0752
0753 ;====================================================================================================
0754
0755 ;95. sal reg, reg
0756 BE0 FD FF FF FF inc pc
0757 BE4 FF 47 EF FF path [pc], ir
0758 BE8 FF C1 E3 FF path rs, w
0759 BEC BF C1 E1 FF path rd, a
0760 BF0 FF C9 E8 7F path alu_sal, rd
0761 BF4 FF D3 EB FF path shift_flag, flag
0762 BF8 FD FF FF FF inc pc
0763 BFC CB FF FF FF check irq
0764 C00 C3 FF FF FF reset upc
0765
0766 C04 FF FF FF FF dup 7, null
0767
0768 ;97. sar reg, reg
0769 C20 FD FF FF FF inc pc
0770 C24 FF 47 EF FF path [pc], ir
0771 C28 FF C1 E3 FF path rs, w
0772 C2C BF C1 E1 FF path rd, a
0773 C30 FF C9 E9 7F path alu_sar, rd
0774 C34 FF D3 EB FF path shift_flag, flag
0775 C38 FD FF FF FF inc pc
0776 C3C CB FF FF FF check irq
0777 C40 C3 FF FF FF reset upc
0778
0779 C44 FF FF FF FF dup 7, null
0780
0781 ;99. shl reg, reg
0782 C60 FD FF FF FF inc pc
0783 C64 FF 47 EF FF path [pc], ir
0784 C68 FF C1 E3 FF path rs, w
0785 C6C BF C1 E1 FF path rd, a
0786 C70 FF C9 E8 3F path alu_shl, rd
0787 C74 FF D3 EB FF path shift_flag, flag
0788 C78 FD FF FF FF inc pc
0789 C7C CB FF FF FF check irq
0790 C80 C3 FF FF FF reset upc
0791
0792 C84 FF FF FF FF dup 7, null
0793
0794 ;101. shr reg, reg
0795 CA0 FD FF FF FF inc pc
0796 CA4 FF 47 EF FF path [pc], ir
0797 CA8 FF C1 E3 FF path rs, w
0798 CAC BF C1 E1 FF path rd, a
0799 CB0 FF C9 E9 3F path alu_shr, rd
0800 CB4 FF D3 EB FF path shift_flag, flag
0801 CB8 FD FF FF FF inc pc
0802 CBC CB FF FF FF check irq
0803 CC0 C3 FF FF FF reset upc
0804
0805 CC4 FF FF FF FF dup 7, null
0806
0807 ;103. rol reg, reg
0808 CE0 FD FF FF FF inc pc
0809 CE4 FF 47 EF FF path [pc], ir
0810 CE8 FF C1 E3 FF path rs, w
0811 CEC BF C1 E1 FF path rd, a
0812 CF0 FF C9 E8 BF path alu_rol, rd
0813 CF4 FF D3 EB FF path shift_flag, flag
0814 CF8 FD FF FF FF inc pc
0815 CFC CB FF FF FF check irq
0816 D00 C3 FF FF FF reset upc
0817
0818 D04 FF FF FF FF dup 7, null
0819
0820 ;105. ror reg, reg
0821 D20 FD FF FF FF inc pc
0822 D24 FF 47 EF FF path [pc], ir
0823 D28 FF C1 E3 FF path rs, w
0824 D2C BF C1 E1 FF path rd, a
0825 D30 FF C9 E9 BF path alu_ror, rd
0826 D34 FF D3 EB FF path shift_flag, flag
0827 D38 FD FF FF FF inc pc
0828 D3C CB FF FF FF check irq
0829 D40 C3 FF FF FF reset upc
0830
0831 D44 FF FF FF FF dup 7, null
0832
0833 ;107. rcl reg, reg
0834 D60 FD FF FF FF inc pc
0835 D64 FF 47 EF FF path [pc], ir
0836 D68 FF C1 E3 FF path rs, w
0837 D6C BF C1 E1 FF path rd, a
0838 D70 FF C9 E8 FF path alu_rcl, rd
0839 D74 FF D3 EB FF path shift_flag, flag
0840 D78 FD FF FF FF inc pc
0841 D7C CB FF FF FF check irq
0842 D80 C3 FF FF FF reset upc
0843
0844 D84 FF FF FF FF dup 7, null
0845
0846 ;109. rcr reg, reg
0847 DA0 FD FF FF FF inc pc
0848 DA4 FF 47 EF FF path [pc], ir
0849 DA8 FF C1 E3 FF path rs, w
0850 DAC BF C1 E1 FF path rd, a
0851 DB0 FF C9 E9 FF path alu_rcr, rd
0852 DB4 FF D3 EB FF path shift_flag, flag
0853 DB8 FD FF FF FF inc pc
0854 DBC CB FF FF FF check irq
0855 DC0 C3 FF FF FF reset upc
0856
0857 DC4 FF FF FF FF dup 7, null
0858
0859 ;111. nop
0860 DE0 FD FF FF FF inc pc
0861 DE4 C3 FF FF FF reset upc
0862
0863 DE8 FF FF FF FF dup 6, null
0864
0865 ;112. hlt
0866 E00 C3 FF FF FF reset upc
0867 E04 FF FF FF FF dup 7, null
0868
0869 ;113. call symbol
0870 ; 计算新的栈顶
0871 E20 BF C1 E1 FF path sp, a
0872 E24 BF C1 E3 FF path sp, w
0873 E28 FF D1 E9 DF path alu_dec, sp
0874 E2C BF C1 E5 FF path sp, mar
0875
0876 ; 读出标号指定的跳转地址并暂存到寄存器a中
0877 E30 FD FF FF FF inc pc
0878 E34 FF 47 E1 FF path [pc], a
0879
0880 ; 将下一条指令地址(中断返回地址)入栈
0881 E38 FD FF FF FF inc pc
0882 E3C FF 85 E7 FF path pc, [mar]
0883
0884 ; 将a中暂存的跳转地址置入pc,实现调用
0885 E40 FF D0 FF FF path a, pc
0886 E44 CB FF FF FF check irq
0887 E48 C3 FF FF FF reset upc
0888
0889 E4C FF FF FF FF dup 5, null
0890
0891 ;115. ret
0892 E60 BF C1 E5 FF path sp, mar
0893 E64 FF 86 FF FF path [mar], pc
0894 E68 BF C1 E1 FF path sp, a
0895 E6C FF D1 E9 D0 path alu_inc, sp
0896 E70 C3 FF FF FF reset upc
0897
0898 E74 FF FF FF FF dup 3, null
0899
0900 ;116. cli
0901 E80 D3 FF FF FF cli
0902 E84 FD FF FF FF inc pc
0903 E88 C3 FF FF FF reset upc
0904
0905 E8C FF FF FF FF dup 5, null
0906
0907 ;117. sti
0908 EA0 D7 FF FF FF sti
0909 EA4 FD FF FF FF inc pc
0910 EA8 C3 FF FF FF reset upc
0911
0912 EAC FF FF FF FF dup 5, null
0913
0914 ;118. 硬中断处理微指令程序
0915 ; 标志寄存器和断点地址入栈
0916 EC0 BF C1 E1 FF path sp, a
0917 EC4 BF C1 E3 FF path sp, w
0918 EC8 FF D1 E9 DF path alu_dec, sp
0919 ECC BF C1 E5 FF path sp, mar
0920 ED0 FF 83 E7 FF path flag, [mar]
0921 ED4 BF C1 E1 FF path sp, a
0922 ED8 FF D1 E9 DF path alu_dec, sp
0923 EDC BF C1 E5 FF path sp, mar
0924 EE0 FF 85 E7 FF path pc, [mar]
0925 ; IF标志置位,开中断,允许中断嵌套
0926 EE4 D7 FF FF FF sti
0927 ; 获取中断号中断服务程序入口地址
0928 EE8 CF FF FF FF inta
0929 EEC FF FF FF FF dup 1, null ;插入空闲周期
0930 EF0 CE C7 E5 FF path inta, mar ;读取中断号并送入地址寄存器中
0931 ; 转移到中断服务程序执行
0932 EF4 FF 86 FF FF path [mar], pc
0933 EF8 C3 FF FF FF reset upc
0934
0935 EFC FF FF FF FF dup 1, null
0936
0937 ;120. inc reg
0938 F00 FD FF FF FF inc pc
0939 F04 FF 47 EF FF path [pc], ir
0940 F08 BF C1 E1 FF path rd, a
0941 F0C FF D1 E9 D0 path alu_inc, rd
0942 F10 FF CB EB FF path al_flag, flag
0943 F14 FD FF FF FF inc pc
0944 F18 CB FF FF FF check irq
0945 F1C C3 FF FF FF reset upc
0946
0947 ;121. dec reg
0948 F20 FD FF FF FF inc pc
0949 F24 FF 47 EF FF path [pc], ir
0950 F28 BF C1 E1 FF path rd, a
0951 F2C BF C1 E3 FF path rd, w
0952 F30 FF D1 E9 DF path alu_dec, rd
0953 F34 FF CB EB FF path al_flag, flag
0954 F38 FD FF FF FF inc pc
0955 F3C CB FF FF FF check irq
0956 F40 C3 FF FF FF reset upc
0957
0001 ; (C) 2008-2018 北京英真时代科技有限公司。保留所有权利。
0002
0003 ; 所有指令的第一条微指令地址必须是8的倍数
0004 ; 取指微指令,所有指令的第一步均为取指操作,都要执行该条微指令
0005
0006 ;0.取指指令
0007 00 C7 47 FF FF fetch instruction
0008
0009 04 FF FF FF FF dup 7, null
0010
0011 ;1.mov reg, imm 将立即数imm传送到寄存器reg中
0012 20 FD FF FF FF inc pc
0013 24 FF 47 EF FF path [pc], ir
0014 28 FD FF FF FF inc pc
0015 2C FF 47 E9 FF path [pc], rd
0016 30 FD FF FF FF inc pc
0017 34 CB FF FF FF check irq
0018 38 C3 FF FF FF reset upc
0019
0020 3C FF FF FF FF dup 1, null
0021
0022 ;2.mov reg, reg 源与目标寄存器必须有相同的数据类型长度
0023 40 FD FF FF FF inc pc
0024 44 FF 47 EF FF path [pc], ir
0025 48 FF C1 E9 FF path rs, rd
0026 4C FD FF FF FF inc pc
0027 50 CB FF FF FF check irq
0028 54 C3 FF FF FF reset upc
0029
0030 58 FF FF FF FF dup 2, null
0031
0032 ;3.mov reg, symbol 将存储器内容复制到寄存器
0033 60 FD FF FF FF inc pc
0034 64 FF 47 EF FF path [pc], ir
0035 68 FD FF FF FF inc pc
0036 6C FF 47 E5 FF path [pc], mar
0037 70 FF 87 E9 FF path [mar], rd
0038 74 FD FF FF FF inc pc
0039 78 CB FF FF FF check irq
0040 7C C3 FF FF FF reset upc
0041
0042 ;4.mov reg, [reg] 将存储器内容复制到寄存器
0043 80 FD FF FF FF inc pc
0044 84 FF 47 EF FF path [pc], ir
0045 88 FF C1 E5 FF path rs, mar
0046 8C FF 87 E9 FF path [mar], rd
0047 90 FD FF FF FF inc pc
0048 94 CB FF FF FF check irq
0049 98 C3 FF FF FF reset upc
0050
0051 9C FF FF FF FF dup 1, null
0052
0053 ;5.mov [reg], reg 将寄存器内容传送到存储器
0054 A0 FD FF FF FF inc pc
0055 A4 FF 47 EF FF path [pc], ir
0056 A8 BF C1 E5 FF path rd, mar
0057 AC FF 81 E7 FF path rs, [mar]
0058 B0 FD FF FF FF inc pc
0059 B4 CB FF FF FF check irq
0060 B8 C3 FF FF FF reset upc
0061
0062 BC FF FF FF FF dup 1, null
0063
0064 ;6.mov [reg], imm 将立即数传送到存储单元中
0065 C0 FD FF FF FF inc pc
0066 C4 FF 47 EF FF path [pc], ir
0067 C8 FD FF FF FF inc pc
0068 CC FF 47 E9 FF path [pc], rd
0069 D0 FD FF FF FF inc pc
0070 D4 CB FF FF FF check irq
0071 D8 C3 FF FF FF reset upc
0072
0073 DC FF FF FF FF dup 1, null
0074
0075 ;7. mov symbol, reg
0076 E0 FD FF FF FF inc pc
0077 E4 FF 47 EF FF path [pc], ir
0078 E8 FD FF FF FF inc pc
0079 EC FF 47 E5 FF path [pc], mar
0080 F0 FF 81 E7 FF path rs, [mar]
0081 F4 FD FF FF FF inc pc
0082 F8 CB FF FF FF check irq
0083 FC C3 FF FF FF reset upc
0084
0085 ;8. add reg, reg
0086 100 FD FF FF FF inc pc
0087 104 FF 47 EF FF path [pc], ir
0088 108 BF C1 E1 FF path rd, a
0089 10C FF C1 E3 FF path rs, w
0090 110 FF D1 E9 D9 path alu_add, rd
0091 114 FF CB EB FF path al_flag, flag
0092 118 FD FF FF FF inc pc
0093 11C CB FF FF FF check irq
0094 120 C3 FF FF FF reset upc
0095
0096 124 FF FF FF FF dup 7, null
0097
0098 ;10. add reg, [reg]
0099 140 FD FF FF FF inc pc
0100 144 FF 47 EF FF path [pc], ir
0101 148 FF C1 E5 FF path rs, mar
0102 14C FF 87 E3 FF path [mar], w
0103 150 BF C1 E1 FF path rd, a
0104 154 FF D1 E9 D9 path alu_add, rd
0105 158 FF CB EB FF path al_flag, flag
0106 15C FD FF FF FF inc pc
0107 160 CB FF FF FF check irq
0108 164 C3 FF FF FF reset upc
0109
0110 168 FF FF FF FF dup 6, null
0111
0112 ;12. add reg, symbol
0113 180 FD FF FF FF inc pc
0114 184 FF 47 EF FF path [pc], ir
0115 188 FD FF FF FF inc pc
0116 18C FF 47 E5 FF path [pc], mar
0117 190 FF 87 E3 FF path [mar], w
0118 194 BF C1 E1 FF path rd, a
0119 198 FF D1 E9 D9 path alu_add, rd
0120 19C FF CB EB FF path al_flag, flag
0121 1A0 FD FF FF FF inc pc
0122 1A4 CB FF FF FF check irq
0123 1A8 C3 FF FF FF reset upc
0124
0125 1AC FF FF FF FF dup 5, null
0126
0127 ;14. add reg, imm
0128 1C0 FD FF FF FF inc pc
0129 1C4 FF 47 EF FF path [pc], ir
0130 1C8 FD FF FF FF inc pc
0131 1CC FF 47 E3 FF path [pc], w
0132 1D0 BF C1 E1 FF path rd, a
0133 1D4 FF D1 E9 D9 path alu_add, rd
0134 1D8 FF CB EB FF path al_flag, flag
0135 1DC FD FF FF FF inc pc
0136 1E0 CB FF FF FF check irq
0137 1E4 C3 FF FF FF reset upc
0138
0139 1E8 FF FF FF FF dup 6, null
0140
0141 ;16. adc reg, reg
0142 200 FD FF FF FF inc pc
0143 204 FF 47 EF FF path [pc], ir
0144 208 BF C1 E1 FF path rd, a
0145 20C FF C1 E3 FF path rs, w
0146 210 FF D1 E9 C9 path alu_adc, rd
0147 214 FF CB EB FF path al_flag, flag
0148 218 FD FF FF FF inc pc
0149 21C CB FF FF FF check irq
0150 220 C3 FF FF FF reset upc
0151
0152 224 FF FF FF FF dup 7, null
0153
0154 ;18. adc reg, [reg]
0155 240 FD FF FF FF inc pc
0156 244 FF 47 EF FF path [pc], ir
0157 248 FF C1 E5 FF path rs, mar
0158 24C FF 87 E3 FF path [mar], w
0159 250 BF C1 E1 FF path rd, a
0160 254 FF D1 E9 C9 path alu_adc, rd
0161 258 FF CB EB FF path al_flag, flag
0162 25C FD FF FF FF inc pc
0163 260 CB FF FF FF check irq
0164 264 C3 FF FF FF reset upc
0165
0166 268 FF FF FF FF dup 6, null
0167
0168 ;20. adc reg, symbol
0169 280 FD FF FF FF inc pc
0170 284 FF 47 EF FF path [pc], ir
0171 288 FD FF FF FF inc pc
0172 28C FF 47 E5 FF path [pc], mar
0173 290 FF 87 E3 FF path [mar], w
0174 294 BF C1 E1 FF path rd, a
0175 298 FF D1 E9 C9 path alu_adc, rd
0176 29C FF CB EB FF path al_flag, flag
0177 2A0 FD FF FF FF inc pc
0178 2A4 CB FF FF FF check irq
0179 2A8 C3 FF FF FF reset upc
0180
0181 2AC FF FF FF FF dup 5, null
0182
0183 ;22. adc reg, imm
0184 2C0 FD FF FF FF inc pc
0185 2C4 FF 47 EF FF path [pc], ir
0186 2C8 FD FF FF FF inc pc
0187 2CC FF 47 E3 FF path [pc], w
0188 2D0 BF C1 E1 FF path rd, a
0189 2D4 FF D1 E9 C9 path alu_adc, rd
0190 2D8 FF CB EB FF path al_flag, flag
0191 2DC FD FF FF FF inc pc
0192 2E0 CB FF FF FF check irq
0193 2E4 C3 FF FF FF reset upc
0194
0195 2E8 FF FF FF FF dup 6, null
0196
0197 ;24. sub reg, reg
0198 300 FD FF FF FF inc pc
0199 304 FF 47 EF FF path [pc], ir
0200 308 BF C1 E1 FF path rd, a
0201 30C FF C1 E3 FF path rs, w
0202 310 FF D1 E9 D6 path alu_sub, rd
0203 314 FF CB EB FF path al_flag, flag
0204 318 FD FF FF FF inc pc
0205 31C CB FF FF FF check irq
0206 320 C3 FF FF FF reset upc
0207
0208 324 FF FF FF FF dup 7, null
0209
0210 ;26. sub reg, [reg]
0211 340 FD FF FF FF inc pc
0212 344 FF 47 EF FF path [pc], ir
0213 348 FF C1 E5 FF path rs, mar
0214 34C FF 87 E3 FF path [mar], w
0215 350 BF C1 E1 FF path rd, a
0216 354 FF D1 E9 D6 path alu_sub, rd
0217 358 FF CB EB FF path al_flag, flag
0218 35C FD FF FF FF inc pc
0219 360 CB FF FF FF check irq
0220 364 C3 FF FF FF reset upc
0221
0222 368 FF FF FF FF dup 6, null
0223
0224 ;28. sub reg, symbol
0225 380 FD FF FF FF inc pc
0226 384 FF 47 EF FF path [pc], ir
0227 388 FD FF FF FF inc pc
0228 38C FF 47 E5 FF path [pc], mar
0229 390 FF 87 E3 FF path [mar], w
0230 394 BF C1 E1 FF path rd, a
0231 398 FF D1 E9 D6 path alu_sub, rd
0232 39C FF CB EB FF path al_flag, flag
0233 3A0 FD FF FF FF inc pc
0234 3A4 CB FF FF FF check irq
0235 3A8 C3 FF FF FF reset upc
0236
0237 3AC FF FF FF FF dup 5, null
0238
0239 ;30. sub reg, imm
0240 3C0 FD FF FF FF inc pc
0241 3C4 FF 47 EF FF path [pc], ir
0242 3C8 FD FF FF FF inc pc
0243 3CC FF 47 E3 FF path [pc], w
0244 3D0 BF C1 E1 FF path rd, a
0245 3D4 FF D1 E9 D6 path alu_sub, rd
0246 3D8 FF CB EB FF path al_flag, flag
0247 3DC FD FF FF FF inc pc
0248 3E0 CB FF FF FF check irq
0249 3E4 C3 FF FF FF reset upc
0250
0251 3E8 FF FF FF FF dup 6, null
0252
0253 ;32. sbb reg, reg
0254 400 FD FF FF FF inc pc
0255 404 FF 47 EF FF path [pc], ir
0256 408 BF C1 E1 FF path rd, a
0257 40C FF C1 E3 FF path rs, w
0258 410 FF D1 E9 C6 path alu_sbb, rd
0259 414 FF CB EB FF path al_flag, flag
0260 418 FD FF FF FF inc pc
0261 41C CB FF FF FF check irq
0262 420 C3 FF FF FF reset upc
0263
0264 424 FF FF FF FF dup 7, null
0265
0266 ;34. sbb reg, [reg]
0267 440 FD FF FF FF inc pc
0268 444 FF 47 EF FF path [pc], ir
0269 448 FF C1 E5 FF path rs, mar
0270 44C FF 87 E3 FF path [mar], w
0271 450 BF C1 E1 FF path rd, a
0272 454 FF D1 E9 C6 path alu_sbb, rd
0273 458 FF CB EB FF path al_flag, flag
0274 45C FD FF FF FF inc pc
0275 460 CB FF FF FF check irq
0276 464 C3 FF FF FF reset upc
0277
0278 468 FF FF FF FF dup 6, null
0279
0280 ;36. sbb reg, symbol
0281 480 FD FF FF FF inc pc
0282 484 FF 47 EF FF path [pc], ir
0283 488 FD FF FF FF inc pc
0284 48C FF 47 E5 FF path [pc], mar
0285 490 FF 87 E3 FF path [mar], w
0286 494 BF C1 E1 FF path rd, a
0287 498 FF D1 E9 C6 path alu_sbb, rd
0288 49C FF CB EB FF path al_flag, flag
0289 4A0 FD FF FF FF inc pc
0290 4A4 CB FF FF FF check irq
0291 4A8 C3 FF FF FF reset upc
0292
0293 4AC FF FF FF FF dup 5, null
0294
0295 ;38. sbb a, imm
0296 4C0 FD FF FF FF inc pc
0297 4C4 FF 47 EF FF path [pc], ir
0298 4C8 FD FF FF FF inc pc
0299 4CC FF 47 E3 FF path [pc], w
0300 4D0 BF C1 E1 FF path rd, a
0301 4D4 FF D1 E9 C6 path alu_sbb, rd
0302 4D8 FF CB EB FF path al_flag, flag
0303 4DC FD FF FF FF inc pc
0304 4E0 CB FF FF FF check irq
0305 4E4 C3 FF FF FF reset upc
0306
0307 4E8 FF FF FF FF dup 6, null
0308
0309 ;40.
0310 500 FF FF FF FF dup 8, null
0311
0312 ;41.
0313 520 FF FF FF FF dup 8, null
0314
0315 ;42. and reg, reg
0316 540 FD FF FF FF inc pc
0317 544 FF 47 EF FF path [pc], ir
0318 548 BF C1 E1 FF path rd, a
0319 54C FF C1 E3 FF path rs, w
0320 550 FF D1 E9 FB path alu_and, rd
0321 554 FF CB EB FF path al_flag, flag
0322 558 FD FF FF FF inc pc
0323 55C CB FF FF FF check irq
0324 560 C3 FF FF FF reset upc
0325
0326 564 FF FF FF FF dup 7, null
0327
0328 ;44. and reg, [reg]
0329 580 FD FF FF FF inc pc
0330 584 FF 47 EF FF path [pc], ir
0331 588 FF C1 E5 FF path rs, mar
0332 58C FF 87 E3 FF path [mar], w
0333 590 BF C1 E1 FF path rd, a
0334 594 FF D1 E9 FB path alu_and, rd
0335 598 FF CB EB FF path al_flag, flag
0336 59C FD FF FF FF inc pc
0337 5A0 CB FF FF FF check irq
0338 5A4 C3 FF FF FF reset upc
0339
0340 5A8 FF FF FF FF dup 6, null
0341
0342 ;46. and reg, symbol
0343 5C0 FD FF FF FF inc pc
0344 5C4 FF 47 EF FF path [pc], ir
0345 5C8 FD FF FF FF inc pc
0346 5CC FF 47 E5 FF path [pc], mar
0347 5D0 FF 87 E3 FF path [mar], w
0348 5D4 BF C1 E1 FF path rd, a
0349 5D8 FF D1 E9 FB path alu_and, rd
0350 5DC FF CB EB FF path al_flag, flag
0351 5E0 FD FF FF FF inc pc
0352 5E4 CB FF FF FF check irq
0353 5E8 C3 FF FF FF reset upc
0354
0355 5EC FF FF FF FF dup 5, null
0356
0357 ;48. and reg, immediate
0358 600 FD FF FF FF inc pc
0359 604 FF 47 EF FF path [pc], ir
0360 608 FD FF FF FF inc pc
0361 60C FF 47 E3 FF path [pc], w
0362 610 BF C1 E1 FF path rd, a
0363 614 FF D1 E9 FB path alu_and, rd
0364 618 FF CB EB FF path al_flag, flag
0365 61C FD FF FF FF inc pc
0366 620 CB FF FF FF check irq
0367 624 C3 FF FF FF reset upc
0368
0369 628 FF FF FF FF dup 6, null
0370
0371 ;50. or reg, reg
0372 640 FD FF FF FF inc pc
0373 644 FF 47 EF FF path [pc], ir
0374 648 BF C1 E1 FF path rd, a
0375 64C FF C1 E3 FF path rs, w
0376 650 FF D1 E9 FE path alu_or, rd
0377 654 FF CB EB FF path al_flag, flag
0378 658 FD FF FF FF inc pc
0379 65C CB FF FF FF check irq
0380 660 C3 FF FF FF reset upc
0381
0382 664 FF FF FF FF dup 7, null
0383
0384 ;52. or reg, [reg]
0385 680 FD FF FF FF inc pc
0386 684 FF 47 EF FF path [pc], ir
0387 688 FF C1 E5 FF path rs, mar
0388 68C FF 87 E3 FF path [mar], w
0389 690 BF C1 E1 FF path rd, a
0390 694 FF D1 E9 FE path alu_or, rd
0391 698 FF CB EB FF path al_flag, flag
0392 69C FD FF FF FF inc pc
0393 6A0 CB FF FF FF check irq
0394 6A4 C3 FF FF FF reset upc
0395
0396 6A8 FF FF FF FF dup 6, null
0397
0398 ;54. or reg, symbol
0399 6C0 FD FF FF FF inc pc
0400 6C4 FF 47 EF FF path [pc], ir
0401 6C8 FD FF FF FF inc pc
0402 6CC FF 47 E5 FF path [pc], mar
0403 6D0 FF 87 E3 FF path [mar], w
0404 6D4 BF C1 E1 FF path rd, a
0405 6D8 FF D1 E9 FE path alu_or, rd
0406 6DC FF CB EB FF path al_flag, flag
0407 6E0 FD FF FF FF inc pc
0408 6E4 CB FF FF FF check irq
0409 6E8 C3 FF FF FF reset upc
0410
0411 6EC FF FF FF FF dup 5, null
0412
0413 ;56. or reg, immediate
0414 700 FD FF FF FF inc pc
0415 704 FF 47 EF FF path [pc], ir
0416 708 FD FF FF FF inc pc
0417 70C FF 47 E3 FF path [pc], w
0418 710 BF C1 E1 FF path rd, a
0419 714 FF D1 E9 FE path alu_or, rd
0420 718 FF CB EB FF path al_flag, flag
0421 71C FD FF FF FF inc pc
0422 720 CB FF FF FF check irq
0423 724 C3 FF FF FF reset upc
0424
0425 728 FF FF FF FF dup 6, null
0426
0427 ;58. xor reg, reg
0428 740 FD FF FF FF inc pc
0429 744 FF 47 EF FF path [pc], ir
0430 748 BF C1 E1 FF path rd, a
0431 74C FF C1 E3 FF path rs, w
0432 750 FF D1 E9 F6 path alu_xor, rd
0433 754 FF CB EB FF path al_flag, flag
0434 758 FD FF FF FF inc pc
0435 75C CB FF FF FF check irq
0436 760 C3 FF FF FF reset upc
0437
0438 764 FF FF FF FF dup 7, null
0439
0440 ;60. xor reg, [reg]
0441 780 FD FF FF FF inc pc
0442 784 FF 47 EF FF path [pc], ir
0443 788 FF C1 E5 FF path rs, mar
0444 78C FF 87 E3 FF path [mar], w
0445 790 BF C1 E1 FF path rd, a
0446 794 FF D1 E9 F6 path alu_xor, rd
0447 798 FF CB EB FF path al_flag, flag
0448 79C FD FF FF FF inc pc
0449 7A0 CB FF FF FF check irq
0450 7A4 C3 FF FF FF reset upc
0451
0452 7A8 FF FF FF FF dup 6, null
0453
0454 ;62. xor reg, symbol
0455 7C0 FD FF FF FF inc pc
0456 7C4 FF 47 EF FF path [pc], ir
0457 7C8 FD FF FF FF inc pc
0458 7CC FF 47 E5 FF path [pc], mar
0459 7D0 FF 87 E3 FF path [mar], w
0460 7D4 BF C1 E1 FF path rd, a
0461 7D8 FF D1 E9 F6 path alu_xor, rd
0462 7DC FF CB EB FF path al_flag, flag
0463 7E0 FD FF FF FF inc pc
0464 7E4 CB FF FF FF check irq
0465 7E8 C3 FF FF FF reset upc
0466
0467 7EC FF FF FF FF dup 5, null
0468
0469 ;64. xor reg, immediate
0470 800 FD FF FF FF inc pc
0471 804 FF 47 EF FF path [pc], ir
0472 808 FD FF FF FF inc pc
0473 80C FF 47 E3 FF path [pc], w
0474 810 BF C1 E1 FF path rd, a
0475 814 FF D1 E9 F6 path alu_xor, rd
0476 818 FF CB EB FF path al_flag, flag
0477 81C FD FF FF FF inc pc
0478 820 CB FF FF FF check irq
0479 824 C3 FF FF FF reset upc
0480
0481 828 FF FF FF FF dup 6, null
0482
0483 ;66. push reg 将sp寄存器作为源寄存器
0484 ; 更新栈顶
0485 840 BF C1 E1 FF path sp, a
0486 844 FF D1 E9 DF path alu_dec, sp
0487
0488 ; 入栈
0489 848 BF C1 E5 FF path sp, mar
0490 84C FF 81 E7 FF path rs, [mar]
0491 850 FD FF FF FF inc pc
0492 854 CB FF FF FF check irq
0493 858 C3 FF FF FF reset upc
0494
0495 85C FF FF FF FF dup 1, null
0496
0497 ;67. pop reg
0498 ; 出栈
0499 860 BF C1 E5 FF path sp, mar
0500 864 FF 87 E9 FF path [mar], rd
0501
0502 ; 更新栈顶
0503 868 BF C1 E1 FF path sp, a
0504 86C FF D1 E9 D0 path alu_inc, sp
0505 870 FD FF FF FF inc pc
0506 874 CB FF FF FF check irq
0507 878 C3 FF FF FF reset upc
0508
0509 87C FF FF FF FF dup 1, null
0510
0511 ;68. not reg
0512 880 FD FF FF FF inc pc
0513 884 FF 47 EF FF path [pc], ir
0514 888 BF C1 E1 FF path rd, a
0515 88C FF D1 E9 F0 path alu_not, rd
0516 890 FF CB EB FF path al_flag, flag
0517 894 FD FF FF FF inc pc
0518 898 CB FF FF FF check irq
0519 89C C3 FF FF FF reset upc
0520
0521 ; test指令主要影响ZF标志
0522 ;69. test reg, imm
0523 8A0 FD FF FF FF inc pc
0524 8A4 FF 47 EF FF path [pc], ir
0525 8A8 BF C1 E1 FF path rd, a
0526 8AC FD FF FF FF inc pc
0527 8B0 FF 47 E3 FF path [pc], w
0528 8B4 FF CB EB FF path al_flag, flag
0529 8B8 FD FF FF FF inc pc
0530 8BC CB FF FF FF check irq
0531 8C0 C3 FF FF FF reset upc
0532
0533 8C4 FF FF FF FF dup 7, null
0534
0535 ;71. cmp reg, immediate
0536 8E0 FD FF FF FF inc pc
0537 8E4 FF 47 EF FF path [pc], ir
0538 8E8 BF C1 E1 FF path rd, a
0539 8EC FD FF FF FF inc pc
0540 8F0 FF 47 E3 FF path [pc], w
0541 8F4 FF D1 E1 D6 path alu_sub, a
0542 8F8 FF CB EB FF path al_flag, flag
0543 8FC FD FF FF FF inc pc
0544 900 CB FF FF FF check irq
0545 904 C3 FF FF FF reset upc
0546
0547 908 FF FF FF FF dup 6, null
0548
0549 ;73. cmp reg, reg
0550 920 FD FF FF FF inc pc
0551 924 FF 47 EF FF path [pc], ir
0552 928 BF C1 E1 FF path rd, a
0553 92C FF C1 E3 FF path rs, w
0554 930 FF D1 E1 D6 path alu_sub, a
0555 934 FF CB EB FF path al_flag, flag
0556 938 FD FF FF FF inc pc
0557 93C CB FF FF FF check irq
0558 940 C3 FF FF FF reset upc
0559
0560 944 FF FF FF FF dup 7, null
0561
0562 ;75. in al, imm
0563 960 FD FF FF FF inc pc
0564 964 FF 47 EF FF path [pc], ir
0565 968 FD FF FF FF inc pc
0566 96C FF 47 E5 FF path [pc], mar
0567 970 FE 87 E9 FF path <mar>, rd
0568 974 FD FF FF FF inc pc
0569 978 C3 FF FF FF reset upc
0570
0571 97C FF FF FF FF dup 1, null
0572
0573 ;76. in al, dl
0574 980 FD FF FF FF inc pc
0575 984 FF 47 EF FF path [pc], ir
0576 988 FF C1 E5 FF path rs, mar
0577 98C FE 87 E9 FF path <mar>, rd
0578 990 FD FF FF FF inc pc
0579 994 C3 FF FF FF reset upc
0580
0581 998 FF FF FF FF dup 2, null
0582
0583 ;77. out dl, al
0584 9A0 FD FF FF FF inc pc
0585 9A4 FF 47 EF FF path [pc], ir
0586 9A8 BF C1 E5 FF path rd, mar
0587 9AC FE 81 E7 FF path rs, <mar>
0588 9B0 FD FF FF FF inc pc
0589 9B4 C3 FF FF FF reset upc
0590
0591 9B8 FF FF FF FF dup 2, null
0592
0593 ;78. out imm, al
0594 9C0 FD FF FF FF inc pc
0595 9C4 FF 47 EF FF path [pc], ir
0596 9C8 FD FF FF FF inc pc
0597 9CC FF 47 E5 FF path [pc], mar
0598 9D0 FE 81 E7 FF path rs, <mar>
0599 9D4 FD FF FF FF inc pc
0600 9D8 C3 FF FF FF reset upc
0601
0602 9DC FF FF FF FF dup 1, null
0603
0604 ;79. lea reg, symbol
0605 9E0 FD FF FF FF inc pc
0606 9E4 FF 47 EF FF path [pc], ir
0607 9E8 FD FF FF FF inc pc
0608 9EC FF 47 E9 FF path [pc], rd
0609 9F0 FD FF FF FF inc pc
0610 9F4 CB FF FF FF check irq
0611 9F8 C3 FF FF FF reset upc
0612
0613 9FC FF FF FF FF dup 1, null
0614
0615 ;80. ja symbol
0616 A00 CB FF FF FF check irq
0617 A04 FD FF FF FF inc pc
0618 A08 FD 46 7F FF path ja[pc], pc
0619 A0C C3 FF FF FF reset upc
0620
0621 A10 FF FF FF FF dup 4, null
0622
0623 ;81. jb symbol
0624 A20 CB FF FF FF check irq
0625 A24 FD FF FF FF inc pc
0626 A28 FD 46 9F FF path jb[pc], pc
0627 A2C C3 FF FF FF reset upc
0628
0629 A30 FF FF FF FF dup 4, null
0630
0631 ;82. jg symbol
0632 A40 CB FF FF FF check irq
0633 A44 FD FF FF FF inc pc
0634 A48 FD 46 BF FF path jg[pc], pc
0635 A4C C3 FF FF FF reset upc
0636
0637 A50 FF FF FF FF dup 4, null
0638
0639 ;83. jl symbol
0640 A60 CB FF FF FF check irq
0641 A64 FD FF FF FF inc pc
0642 A68 FD 46 DF FF path jl[pc], pc
0643 A6C C3 FF FF FF reset upc
0644
0645 A70 FF FF FF FF dup 4, null
0646
0647 ;84. je symbol
0648 A80 CB FF FF FF check irq
0649 A84 FD FF FF FF inc pc
0650 A88 FD 46 1F FF path jz[pc], pc
0651 A8C C3 FF FF FF reset upc
0652
0653 A90 FF FF FF FF dup 4, null
0654
0655 ;85. jne symbol
0656 AA0 CB FF FF FF check irq
0657 AA4 FD FF FF FF inc pc
0658 AA8 FD 46 3F FF path jnz[pc], pc
0659 AAC C3 FF FF FF reset upc
0660
0661 AB0 FF FF FF FF dup 4, null
0662
0663 ;86. jc symbol
0664 AC0 CB FF FF FF check irq
0665 AC4 FD FF FF FF inc pc
0666 AC8 FD 46 5F FF path jc[pc], pc
0667 ACC C3 FF FF FF reset upc
0668
0669 AD0 FF FF FF FF dup 4, null
0670
0671 ;87. jmp symbol
0672 AE0 CB FF FF FF check irq
0673 AE4 FD FF FF FF inc pc
0674 AE8 FD 46 FF FF path jmp[pc], pc
0675 AEC C3 FF FF FF reset upc
0676
0677 AF0 FF FF FF FF dup 4, null
0678
0679 ;88. loop symbol 将cl作为目的操作数减1,改变零标志,若zf = 1,则跳转
0680 B00 FD FF FF FF inc pc
0681 B04 FF 47 EF FF path [pc], ir
0682 B08 BF C1 E1 FF path rd, a
0683 B0C FF D1 E9 DF path alu_dec, rd
0684 B10 FF CB EB FF path al_flag, flag
0685 B14 FD FF FF FF inc pc
0686 B18 FD 46 FF FF path jmp[pc], pc
0687 B1C CB FF FF FF check irq
0688 B20 C3 FF FF FF reset upc
0689
0690 B24 FF FF FF FF dup 7, null
0691
0692 ;====================================================================================================
0693
0694 ; 软中断,首先将标志寄存器入栈,清除中断标志IF,并将当前程序断点的地址入栈保护,从
0695 ; 中断向量表中获取中断入口地址,CPU转向中断入口地址去执行相应的中断服务程序。
0696 ; 中断向量表段地址保存在ES寄存器中
0697 ;90. int immediate
0698 ; 将标志寄存器入栈
0699 B40 FD FF FF FF inc pc
0700 B44 FF 47 EF FF path [pc], ir
0701 B48 BF C1 E1 FF path sp, a
0702 B4C BF C1 E3 FF path sp, w
0703 B50 FF D1 E9 DF path alu_dec, sp
0704 B54 BF C1 E5 FF path sp, mar
0705 B58 FF 83 E7 FF path flag, [mar]
0706 ; 关中断
0707 B5C D3 FF FF FF cli
0708
0709 ; 更新栈顶
0710 B60 BF C1 E1 FF path sp, a
0711 B64 BF C1 E3 FF path sp, w
0712 B68 FF D1 E9 DF path alu_dec, sp
0713
0714 ; 计算中断服务程序入口地址
0715 B6C FD FF FF FF inc pc
0716 B70 FF 47 E5 FF path [pc], mar
0717
0718 B74 FD FF FF FF inc pc ;下一条指令地址(中断返回地址)暂存到a
0719 B78 FF C5 E1 FF path pc, a
0720
0721 ; 将中断服务程序入口地址置入pc,准备执行服务程序
0722 B7C FF 86 FF FF path [mar], pc
0723
0724 ; 将a中的返回地址入栈
0725 B80 BF C1 E5 FF path sp, mar
0726 B84 FF 91 E7 FF path a, [mar]
0727 B88 C3 FF FF FF reset upc
0728
0729 B8C FF FF FF FF dup 5, null
0730
0731 ;====================================================================================================
0732
0733 ;93. iret
0734 ; 先恢复标志寄存器内容
0735 BA0 FD FF FF FF inc pc
0736 BA4 FF 47 EF FF path [pc], ir
0737 BA8 BF C1 E1 FF path sp, a
0738 BAC FF D1 E5 D0 path alu_inc, mar
0739 BB0 FF 87 EB FF path [mar], flag
0740
0741 ; 恢复中断返回地址
0742 BB4 BF C1 E5 FF path sp, mar
0743 BB8 FF 86 FF FF path [mar], pc
0744
0745 ; 计算新的栈顶
0746 BBC BF C1 E1 FF path sp, a
0747 BC0 FF D1 E1 D0 path alu_inc, a
0748 BC4 FF D1 E9 D0 path alu_inc, sp
0749 BC8 C3 FF FF FF reset upc
0750
0751 BCC FF FF FF FF dup 5, null
0752
0753 ;====================================================================================================
0754
0755 ;95. sal reg, reg
0756 BE0 FD FF FF FF inc pc
0757 BE4 FF 47 EF FF path [pc], ir
0758 BE8 FF C1 E3 FF path rs, w
0759 BEC BF C1 E1 FF path rd, a
0760 BF0 FF C9 E8 7F path alu_sal, rd
0761 BF4 FF D3 EB FF path shift_flag, flag
0762 BF8 FD FF FF FF inc pc
0763 BFC CB FF FF FF check irq
0764 C00 C3 FF FF FF reset upc
0765
0766 C04 FF FF FF FF dup 7, null
0767
0768 ;97. sar reg, reg
0769 C20 FD FF FF FF inc pc
0770 C24 FF 47 EF FF path [pc], ir
0771 C28 FF C1 E3 FF path rs, w
0772 C2C BF C1 E1 FF path rd, a
0773 C30 FF C9 E9 7F path alu_sar, rd
0774 C34 FF D3 EB FF path shift_flag, flag
0775 C38 FD FF FF FF inc pc
0776 C3C CB FF FF FF check irq
0777 C40 C3 FF FF FF reset upc
0778
0779 C44 FF FF FF FF dup 7, null
0780
0781 ;99. shl reg, reg
0782 C60 FD FF FF FF inc pc
0783 C64 FF 47 EF FF path [pc], ir
0784 C68 FF C1 E3 FF path rs, w
0785 C6C BF C1 E1 FF path rd, a
0786 C70 FF C9 E8 3F path alu_shl, rd
0787 C74 FF D3 EB FF path shift_flag, flag
0788 C78 FD FF FF FF inc pc
0789 C7C CB FF FF FF check irq
0790 C80 C3 FF FF FF reset upc
0791
0792 C84 FF FF FF FF dup 7, null
0793
0794 ;101. shr reg, reg
0795 CA0 FD FF FF FF inc pc
0796 CA4 FF 47 EF FF path [pc], ir
0797 CA8 FF C1 E3 FF path rs, w
0798 CAC BF C1 E1 FF path rd, a
0799 CB0 FF C9 E9 3F path alu_shr, rd
0800 CB4 FF D3 EB FF path shift_flag, flag
0801 CB8 FD FF FF FF inc pc
0802 CBC CB FF FF FF check irq
0803 CC0 C3 FF FF FF reset upc
0804
0805 CC4 FF FF FF FF dup 7, null
0806
0807 ;103. rol reg, reg
0808 CE0 FD FF FF FF inc pc
0809 CE4 FF 47 EF FF path [pc], ir
0810 CE8 FF C1 E3 FF path rs, w
0811 CEC BF C1 E1 FF path rd, a
0812 CF0 FF C9 E8 BF path alu_rol, rd
0813 CF4 FF D3 EB FF path shift_flag, flag
0814 CF8 FD FF FF FF inc pc
0815 CFC CB FF FF FF check irq
0816 D00 C3 FF FF FF reset upc
0817
0818 D04 FF FF FF FF dup 7, null
0819
0820 ;105. ror reg, reg
0821 D20 FD FF FF FF inc pc
0822 D24 FF 47 EF FF path [pc], ir
0823 D28 FF C1 E3 FF path rs, w
0824 D2C BF C1 E1 FF path rd, a
0825 D30 FF C9 E9 BF path alu_ror, rd
0826 D34 FF D3 EB FF path shift_flag, flag
0827 D38 FD FF FF FF inc pc
0828 D3C CB FF FF FF check irq
0829 D40 C3 FF FF FF reset upc
0830
0831 D44 FF FF FF FF dup 7, null
0832
0833 ;107. rcl reg, reg
0834 D60 FD FF FF FF inc pc
0835 D64 FF 47 EF FF path [pc], ir
0836 D68 FF C1 E3 FF path rs, w
0837 D6C BF C1 E1 FF path rd, a
0838 D70 FF C9 E8 FF path alu_rcl, rd
0839 D74 FF D3 EB FF path shift_flag, flag
0840 D78 FD FF FF FF inc pc
0841 D7C CB FF FF FF check irq
0842 D80 C3 FF FF FF reset upc
0843
0844 D84 FF FF FF FF dup 7, null
0845
0846 ;109. rcr reg, reg
0847 DA0 FD FF FF FF inc pc
0848 DA4 FF 47 EF FF path [pc], ir
0849 DA8 FF C1 E3 FF path rs, w
0850 DAC BF C1 E1 FF path rd, a
0851 DB0 FF C9 E9 FF path alu_rcr, rd
0852 DB4 FF D3 EB FF path shift_flag, flag
0853 DB8 FD FF FF FF inc pc
0854 DBC CB FF FF FF check irq
0855 DC0 C3 FF FF FF reset upc
0856
0857 DC4 FF FF FF FF dup 7, null
0858
0859 ;111. nop
0860 DE0 FD FF FF FF inc pc
0861 DE4 C3 FF FF FF reset upc
0862
0863 DE8 FF FF FF FF dup 6, null
0864
0865 ;112. hlt
0866 E00 C3 FF FF FF reset upc
0867 E04 FF FF FF FF dup 7, null
0868
0869 ;113. call symbol
0870 ; 计算新的栈顶
0871 E20 BF C1 E1 FF path sp, a
0872 E24 BF C1 E3 FF path sp, w
0873 E28 FF D1 E9 DF path alu_dec, sp
0874 E2C BF C1 E5 FF path sp, mar
0875
0876 ; 读出标号指定的跳转地址并暂存到寄存器a中
0877 E30 FD FF FF FF inc pc
0878 E34 FF 47 E1 FF path [pc], a
0879
0880 ; 将下一条指令地址(中断返回地址)入栈
0881 E38 FD FF FF FF inc pc
0882 E3C FF 85 E7 FF path pc, [mar]
0883
0884 ; 将a中暂存的跳转地址置入pc,实现调用
0885 E40 FF D0 FF FF path a, pc
0886 E44 CB FF FF FF check irq
0887 E48 C3 FF FF FF reset upc
0888
0889 E4C FF FF FF FF dup 5, null
0890
0891 ;115. ret
0892 E60 BF C1 E5 FF path sp, mar
0893 E64 FF 86 FF FF path [mar], pc
0894 E68 BF C1 E1 FF path sp, a
0895 E6C FF D1 E9 D0 path alu_inc, sp
0896 E70 C3 FF FF FF reset upc
0897
0898 E74 FF FF FF FF dup 3, null
0899
0900 ;116. cli
0901 E80 D3 FF FF FF cli
0902 E84 FD FF FF FF inc pc
0903 E88 C3 FF FF FF reset upc
0904
0905 E8C FF FF FF FF dup 5, null
0906
0907 ;117. sti
0908 EA0 D7 FF FF FF sti
0909 EA4 FD FF FF FF inc pc
0910 EA8 C3 FF FF FF reset upc
0911
0912 EAC FF FF FF FF dup 5, null
0913
0914 ;118. 硬中断处理微指令程序
0915 ; 标志寄存器和断点地址入栈
0916 EC0 BF C1 E1 FF path sp, a
0917 EC4 BF C1 E3 FF path sp, w
0918 EC8 FF D1 E9 DF path alu_dec, sp
0919 ECC BF C1 E5 FF path sp, mar
0920 ED0 FF 83 E7 FF path flag, [mar]
0921 ED4 BF C1 E1 FF path sp, a
0922 ED8 FF D1 E9 DF path alu_dec, sp
0923 EDC BF C1 E5 FF path sp, mar
0924 EE0 FF 85 E7 FF path pc, [mar]
0925 ; IF标志置位,开中断,允许中断嵌套
0926 EE4 D7 FF FF FF sti
0927 ; 获取中断号中断服务程序入口地址
0928 EE8 CF FF FF FF inta
0929 EEC FF FF FF FF dup 1, null ;插入空闲周期
0930 EF0 CE C7 E5 FF path inta, mar ;读取中断号并送入地址寄存器中
0931 ; 转移到中断服务程序执行
0932 EF4 FF 86 FF FF path [mar], pc
0933 EF8 C3 FF FF FF reset upc
0934
0935 EFC FF FF FF FF dup 1, null
0936
0937 ;120. inc reg
0938 F00 FD FF FF FF inc pc
0939 F04 FF 47 EF FF path [pc], ir
0940 F08 BF C1 E1 FF path rd, a
0941 F0C FF D1 E9 D0 path alu_inc, rd
0942 F10 FF CB EB FF path al_flag, flag
0943 F14 FD FF FF FF inc pc
0944 F18 CB FF FF FF check irq
0945 F1C C3 FF FF FF reset upc
0946
0947 ;121. dec reg
0948 F20 FD FF FF FF inc pc
0949 F24 FF 47 EF FF path [pc], ir
0950 F28 BF C1 E1 FF path rd, a
0951 F2C BF C1 E3 FF path rd, w
0952 F30 FF D1 E9 DF path alu_dec, rd
0953 F34 FF CB EB FF path al_flag, flag
0954 F38 FD FF FF FF inc pc
0955 F3C CB FF FF FF check irq
0956 F40 C3 FF FF FF reset upc
0957
0958 F44 FF FF FF FF dup 7, null
\ No newline at end of file
编写
预览
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论