提交 cf6aa868 创建 作者: 赵鹏翀's avatar 赵鹏翀

Initial commit

上级
*.cir
*.xml
*.bak
/.vs
\ No newline at end of file
添加文件
这个 源代码变更 因为 太大 而不能显示。 你可以 浏览blob
添加文件
这个 源代码变更 因为 太大 而不能显示。 你可以 浏览blob
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<project id="1066ea9b-8510-4194-ab6e-5b2e2c42f996" name="Hardware-IRQ" version="1">
<files>
<filefolder id="a9f57fc8-c239-4574-a5da-f8fa2760024b" name="子模块">
<file relativepath="ALU.dlsche"/>
<file relativepath="PC.dlsche"/>
<file relativepath="REG.dlsche"/>
<file relativepath="CU.dlsche"/>
<file relativepath="MEM.dlsche"/>
<file relativepath="uPC_NEXT.dlsche"/>
<file relativepath="IRR.dlsche"/>
<file relativepath="IRQ.dlsche"/>
<file relativepath="PR.dlsche"/>
<file relativepath="ISR.dlsche"/>
</filefolder>
<filefolder id="80f1035e-e898-408b-bb0c-e69c72ad13b4" name="汇编源程序">
<file relativepath="ram.asm"/>
<file relativepath="ram.bat"/>
</filefolder>
<filefolder id="03f70f98-2bea-4829-91ee-a9e5f6ee0c87" name="微指令源程序">
<file relativepath="rom.masm"/>
<file relativepath="rom.bat"/>
</filefolder>
<filefolder id="be71b6f0-d920-4758-8b3a-3a343b490c2e" name="存储器映射文件">
<file relativepath="ram.rxm"/>
<file relativepath="rom.rxm"/>
</filefolder>
<file relativepath="Hardware-IRQ.dlsche"/>
</files>
</project>
这个 源代码变更 因为 太大 而不能显示。 你可以 浏览blob
添加文件
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<svg height="2993" version="1.1" width="5644" xmlns="http://www.w3.org/2000/svg">
<text alignment-baseline="after-edge" fill="#000000" font-family="微软雅黑" font-size="250" font-weight="700" text-anchor="start" x="2302" y="314">硬中断控制器</text>
<polyline fill="none" points="1372 1244, 1572 1244" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1372 1344, 1572 1344" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1372 1444, 1572 1444" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1372 1544, 1572 1544" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1372 1644, 1572 1644" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1372 1744, 1572 1744" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1372 1844, 1572 1844" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1372 1944, 1572 1944" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="1572" x2="1622" y1="1244" y2="1194"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="1572" x2="1622" y1="1344" y2="1294"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="1572" x2="1622" y1="1444" y2="1394"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="1572" x2="1622" y1="1544" y2="1494"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="1572" x2="1622" y1="1644" y2="1594"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="1572" x2="1622" y1="1744" y2="1694"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="1572" x2="1622" y1="1844" y2="1794"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="1572" x2="1622" y1="1944" y2="1894"/>
<polyline fill="none" points="1622 1194, 1622 1894" stroke="#000080" stroke-linecap="round" stroke-linejoin="round" stroke-width="20"/>
<polyline fill="none" points="2172 1344, 1622 1344" stroke="#000080" stroke-linecap="round" stroke-linejoin="round" stroke-width="20"/>
<polyline fill="none" points="2172 1244, 2072 1244, 2072 894, 4372 894, 4372 1544, 4172 1544" stroke="#000080" stroke-linecap="round" stroke-linejoin="round" stroke-width="20"/>
<rect fill="#80ff80" height="900" stroke="#800000" stroke-width="1" width="700" x="3472" y="1144"/>
<text alignment-baseline="after-edge" fill="#000080" font-family="微软雅黑" font-size="200" font-weight="700" text-anchor="start" x="3462" y="1134">ISR</text>
<text alignment-baseline="after-edge" fill="#000080" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="3472" y="1124">ISR.dlsche</text>
<polygon fill="#ffff80" points="3472 1694, 3497 1669, 3547 1669, 3572 1694, 3547 1719, 3497 1719, 3472 1694" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="3582" y="1694">INTA1</text>
<polygon fill="#ffff80" points="3472 1774, 3497 1749, 3547 1749, 3572 1774, 3547 1799, 3497 1799, 3472 1774" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="3582" y="1774">EOI</text>
<polygon fill="#ffff80" points="3472 1244, 3497 1219, 3547 1219, 3572 1244, 3547 1269, 3497 1269, 3472 1244" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="3582" y="1244">INTR</text>
<polygon fill="#ffff80" points="3472 1854, 3497 1829, 3547 1829, 3572 1854, 3547 1879, 3497 1879, 3472 1854" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="3582" y="1854">RESET</text>
<polygon fill="#ffff80" points="3472 1344, 3497 1319, 3547 1319, 3572 1344, 3547 1369, 3497 1369, 3472 1344" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="3582" y="1344">IRNM0</text>
<polygon fill="#ffff80" points="3472 1444, 3497 1419, 3547 1419, 3572 1444, 3547 1469, 3497 1469, 3472 1444" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="3582" y="1444">IRNM1</text>
<polygon fill="#ffff80" points="3472 1544, 3497 1519, 3547 1519, 3572 1544, 3547 1569, 3497 1569, 3472 1544" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="3582" y="1544">IRNM2</text>
<polygon fill="#ffff80" points="4172 1244, 4147 1219, 4097 1219, 4072 1244, 4097 1269, 4147 1269, 4172 1244" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="3962" y="1244">T0</text>
<polygon fill="#ffff80" points="4172 1344, 4147 1319, 4097 1319, 4072 1344, 4097 1369, 4147 1369, 4172 1344" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="3962" y="1344">T1</text>
<polygon fill="#ffff80" points="4172 1444, 4147 1419, 4097 1419, 4072 1444, 4097 1469, 4147 1469, 4172 1444" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="3962" y="1444">T2</text>
<polygon fill="#ffff80" points="4172 1544, 4147 1519, 4097 1519, 4072 1544, 4097 1569, 4147 1569, 4172 1544" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="3962" y="1544">ISR[7..0]</text>
<polygon fill="#ffff80" points="3472 1944, 3497 1919, 3547 1919, 3572 1944, 3547 1969, 3497 1969, 3472 1944" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="3584" y="1944">CLK</text>
<rect fill="#80ff80" height="500" stroke="#800000" stroke-width="1" width="700" x="2172" y="1144"/>
<text alignment-baseline="after-edge" fill="#000080" font-family="微软雅黑" font-size="200" font-weight="700" text-anchor="start" x="2152" y="1144">PR</text>
<text alignment-baseline="after-edge" fill="#000080" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="2172" y="1134">PR.dlsche</text>
<polygon fill="#ffff80" points="2172 1244, 2197 1219, 2247 1219, 2272 1244, 2247 1269, 2197 1269, 2172 1244" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="2282" y="1244">ISR[7..0]</text>
<polygon fill="#ffff80" points="2172 1344, 2197 1319, 2247 1319, 2272 1344, 2247 1369, 2197 1369, 2172 1344" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="2282" y="1344">IRR[7..0]</text>
<polygon fill="#ffff80" points="2872 1244, 2847 1219, 2797 1219, 2772 1244, 2797 1269, 2847 1269, 2872 1244" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="2662" y="1244">INTR</text>
<polygon fill="#ffff80" points="2872 1344, 2847 1319, 2797 1319, 2772 1344, 2797 1369, 2847 1369, 2872 1344" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="2662" y="1344">IRNM0</text>
<polygon fill="#ffff80" points="2872 1444, 2847 1419, 2797 1419, 2772 1444, 2797 1469, 2847 1469, 2872 1444" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="2662" y="1444">IRNM1</text>
<polygon fill="#ffff80" points="2872 1544, 2847 1519, 2797 1519, 2772 1544, 2797 1569, 2847 1569, 2872 1544" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="2662" y="1544">IRNM2</text>
<polyline fill="none" points="2872 1244, 3472 1244" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2872 1344, 3472 1344" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2872 1444, 3472 1444" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2872 1544, 3472 1544" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="4172 1244, 4472 1244, 4472 744, 472 744, 472 1244, 672 1244" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="672 1344, 422 1344, 422 694, 4522 694, 4522 1344, 4172 1344" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="4172 1444, 4572 1444, 4572 644, 372 644, 372 1444, 672 1444" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="672 1544, 172 1544" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="672 1644, 172 1644" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="672 1744, 172 1744" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="672 1844, 172 1844" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="672 1944, 172 1944" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="672 2044, 172 2044" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="672 2144, 172 2144" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="672 2244, 172 2244" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polygon fill="#ffff80" points="22 1544, 22 1519, 147 1519, 172 1544, 147 1569, 22 1569, 22 1544" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="22" y="1544">IRQ0</text>
<polygon fill="#ffff80" points="22 1644, 22 1619, 147 1619, 172 1644, 147 1669, 22 1669, 22 1644" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="22" y="1644">IRQ1</text>
<polygon fill="#ffff80" points="22 1744, 22 1719, 147 1719, 172 1744, 147 1769, 22 1769, 22 1744" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="22" y="1744">IRQ2</text>
<polygon fill="#ffff80" points="22 1844, 22 1819, 147 1819, 172 1844, 147 1869, 22 1869, 22 1844" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="22" y="1844">IRQ3</text>
<polygon fill="#ffff80" points="22 1944, 22 1919, 147 1919, 172 1944, 147 1969, 22 1969, 22 1944" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="22" y="1944">IRQ4</text>
<polygon fill="#ffff80" points="22 2044, 22 2019, 147 2019, 172 2044, 147 2069, 22 2069, 22 2044" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="22" y="2044">IRQ5</text>
<polygon fill="#ffff80" points="22 2144, 22 2119, 147 2119, 172 2144, 147 2169, 22 2169, 22 2144" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="22" y="2144">IRQ6</text>
<polygon fill="#ffff80" points="22 2244, 22 2219, 147 2219, 172 2244, 147 2269, 22 2269, 22 2244" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="22" y="2244">IRQ7</text>
<polyline fill="none" points="672 2344, 172 2344" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polygon fill="#ffff80" points="22 2444, 22 2419, 147 2419, 172 2444, 147 2469, 22 2469, 22 2444" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="22" y="2444">INTA2</text>
<polyline fill="none" points="3472 1774, 3122 1774, 3122 2644, 172 2644" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polygon fill="#ffff80" points="22 2644, 22 2619, 147 2619, 172 2644, 147 2669, 22 2669, 22 2644" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="22" y="2644">EOI</text>
<polygon fill="#ffff80" points="22 2744, 22 2719, 147 2719, 172 2744, 147 2769, 22 2769, 22 2744" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="22" y="2744">RESET</text>
<polyline fill="none" points="172 2744, 3172 2744, 3172 1854, 3472 1854" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polygon fill="#ffff80" points="5472 544, 5472 519, 5597 519, 5622 544, 5597 569, 5472 569, 5472 544" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="5472" y="544">INTR</text>
<polyline fill="none" points="4472 1244, 4672 1244, 4772 1244" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="4522 1344, 4672 1344, 4672 1274, 4772 1274" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="4572 1444, 4672 1444, 4702 1444, 4702 1304, 4772 1304" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="4822" x2="4772" y1="1244" y2="1244"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="4855" y="1244">A0</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="4822" x2="4772" y1="1274" y2="1274"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="4855" y="1274">A1</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="4822" x2="4772" y1="1304" y2="1304"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="4855" y="1304">A2</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="4822" x2="4772" y1="1334" y2="1334"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="4855" y="1334">A3</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="4822" x2="4772" y1="1364" y2="1364"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="4855" y="1364">A4</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="4822" x2="4772" y1="1394" y2="1394"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="4855" y="1394">A5</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="4822" x2="4772" y1="1424" y2="1424"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="4855" y="1424">A6</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="4822" x2="4772" y1="1454" y2="1454"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="4855" y="1454">A7</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="4972" x2="5022" y1="1244" y2="1244"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="4939" y="1244">D0</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="4972" x2="5022" y1="1274" y2="1274"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="4939" y="1274">D1</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="4972" x2="5022" y1="1304" y2="1304"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="4939" y="1304">D2</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="4972" x2="5022" y1="1334" y2="1334"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="4939" y="1334">D3</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="4972" x2="5022" y1="1364" y2="1364"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="4939" y="1364">D4</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="4972" x2="5022" y1="1394" y2="1394"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="4939" y="1394">D5</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="4972" x2="5022" y1="1424" y2="1424"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="4939" y="1424">D6</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="4972" x2="5022" y1="1454" y2="1454"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="4939" y="1454">D7</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="4812" x2="4772" y1="1514" y2="1514"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="4866" y="1513">^EN</text>
<rect fill="#a0c0ff" fill-opacity="0.5" height="350" stroke="#000000" stroke-width="5" width="150" x="4822" y="1204"/>
<circle cx="4817" cy="1514" fill="none" r="5" stroke="#000000" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="4882" y="1204">1</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="4822" y="1604">BUS_TRANS8</text>
<polyline fill="none" points="3072 1244, 3072 544, 5472 544" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="5022 1244, 5222 1244" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="5022 1274, 5222 1274" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="5022 1304, 5222 1304" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="5022 1334, 5222 1334" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="5022 1364, 5222 1364" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="5022 1394, 5222 1394" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="5022 1424, 5222 1424" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="5022 1454, 5222 1454" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="5222" x2="5272" y1="1244" y2="1194"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="5222" x2="5272" y1="1274" y2="1224"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="5222" x2="5272" y1="1304" y2="1254"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="5222" x2="5272" y1="1334" y2="1284"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="5222" x2="5272" y1="1364" y2="1314"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="5222" x2="5272" y1="1394" y2="1344"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="5222" x2="5272" y1="1424" y2="1374"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="5222" x2="5272" y1="1454" y2="1404"/>
<polyline fill="none" points="5272 1404, 5272 1194, 5472 1194" stroke="#000080" stroke-linecap="round" stroke-linejoin="round" stroke-width="20"/>
<polygon fill="#ffff80" points="5472 1194, 5472 1169, 5597 1169, 5622 1194, 5597 1219, 5472 1219, 5472 1194" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="5472" y="1194">DBUS[7..0]</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="5022" y="1244">DBUS0</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="5022" y="1274">DBUS1</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="5022" y="1304">DBUS2</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="5022" y="1334">DBUS3</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="5022" y="1364">DBUS4</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="5022" y="1394">DBUS5</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="5022" y="1424">DBUS6</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="5022" y="1454">DBUS7</text>
<polyline fill="none" points="3472 1694, 3072 1694, 3072 2544, 172 2544" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polygon fill="#ffff80" points="22 2544, 22 2519, 147 2519, 172 2544, 147 2569, 22 2569, 22 2544" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="22" y="2544">INTA1</text>
<polyline fill="none" points="672 2444, 172 2444" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polygon fill="#ffff80" points="22 2344, 22 2319, 147 2319, 172 2344, 147 2369, 22 2369, 22 2344" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="22" y="2344">RESET</text>
<polyline fill="none" points="3472 1944, 3222 1944, 3222 2844, 172 2844" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polygon fill="#ffff80" points="22 2844, 22 2819, 147 2819, 172 2844, 147 2869, 22 2869, 22 2844" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="22" y="2844">CLK</text>
<polyline fill="none" points="4772 1514, 4672 1514, 4672 2944, 172 2944" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polygon fill="#ffff80" points="22 2944, 22 2919, 147 2919, 172 2944, 147 2969, 22 2969, 22 2944" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="22" y="2944">INTA2</text>
<text alignment-baseline="after-edge" fill="#000080" font-family="宋体" font-size="25" font-weight="400" text-anchor="start" x="362" y="2934">在第二个应答信号期间读出中断号</text>
<rect fill="#80ff80" height="1500" stroke="#800000" stroke-width="1" width="700" x="672" y="1044"/>
<text alignment-baseline="after-edge" fill="#000080" font-family="微软雅黑" font-size="200" font-weight="700" text-anchor="start" x="652" y="994">IRR</text>
<text alignment-baseline="after-edge" fill="#000080" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="672" y="994">IRR.dlsche</text>
<polygon fill="#ffff80" points="672 1244, 697 1219, 747 1219, 772 1244, 747 1269, 697 1269, 672 1244" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="782" y="1244">T0</text>
<polygon fill="#ffff80" points="672 1344, 697 1319, 747 1319, 772 1344, 747 1369, 697 1369, 672 1344" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="782" y="1344">T1</text>
<polygon fill="#ffff80" points="672 1444, 697 1419, 747 1419, 772 1444, 747 1469, 697 1469, 672 1444" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="782" y="1444">T2</text>
<polygon fill="#ffff80" points="672 1544, 697 1519, 747 1519, 772 1544, 747 1569, 697 1569, 672 1544" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="782" y="1544">IRQ0</text>
<polygon fill="#ffff80" points="672 1644, 697 1619, 747 1619, 772 1644, 747 1669, 697 1669, 672 1644" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="782" y="1644">IRQ1</text>
<polygon fill="#ffff80" points="672 1744, 697 1719, 747 1719, 772 1744, 747 1769, 697 1769, 672 1744" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="782" y="1744">IRQ2</text>
<polygon fill="#ffff80" points="672 1844, 697 1819, 747 1819, 772 1844, 747 1869, 697 1869, 672 1844" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="782" y="1844">IRQ3</text>
<polygon fill="#ffff80" points="672 1944, 697 1919, 747 1919, 772 1944, 747 1969, 697 1969, 672 1944" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="782" y="1944">IRQ4</text>
<polygon fill="#ffff80" points="672 2044, 697 2019, 747 2019, 772 2044, 747 2069, 697 2069, 672 2044" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="782" y="2044">IRQ5</text>
<polygon fill="#ffff80" points="672 2144, 697 2119, 747 2119, 772 2144, 747 2169, 697 2169, 672 2144" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="782" y="2144">IRQ6</text>
<polygon fill="#ffff80" points="672 2244, 697 2219, 747 2219, 772 2244, 747 2269, 697 2269, 672 2244" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="782" y="2244">IRQ7</text>
<polygon fill="#ffff80" points="672 2344, 697 2319, 747 2319, 772 2344, 747 2369, 697 2369, 672 2344" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="782" y="2344">RESET</text>
<polygon fill="#ffff80" points="672 1144, 697 1119, 747 1119, 772 1144, 747 1169, 697 1169, 672 1144" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="782" y="1144">CLK</text>
<polygon fill="#ffff80" points="672 2444, 697 2419, 747 2419, 772 2444, 747 2469, 697 2469, 672 2444" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="782" y="2444">INTA2</text>
<polygon fill="#ffff80" points="1372 1244, 1347 1219, 1297 1219, 1272 1244, 1297 1269, 1347 1269, 1372 1244" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="1162" y="1244">IRR0</text>
<polygon fill="#ffff80" points="1372 1344, 1347 1319, 1297 1319, 1272 1344, 1297 1369, 1347 1369, 1372 1344" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="1162" y="1344">IRR1</text>
<polygon fill="#ffff80" points="1372 1444, 1347 1419, 1297 1419, 1272 1444, 1297 1469, 1347 1469, 1372 1444" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="1162" y="1444">IRR2</text>
<polygon fill="#ffff80" points="1372 1544, 1347 1519, 1297 1519, 1272 1544, 1297 1569, 1347 1569, 1372 1544" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="1162" y="1544">IRR3</text>
<polygon fill="#ffff80" points="1372 1644, 1347 1619, 1297 1619, 1272 1644, 1297 1669, 1347 1669, 1372 1644" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="1162" y="1644">IRR4</text>
<polygon fill="#ffff80" points="1372 1744, 1347 1719, 1297 1719, 1272 1744, 1297 1769, 1347 1769, 1372 1744" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="1162" y="1744">IRR5</text>
<polygon fill="#ffff80" points="1372 1844, 1347 1819, 1297 1819, 1272 1844, 1297 1869, 1347 1869, 1372 1844" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="1162" y="1844">IRR6</text>
<polygon fill="#ffff80" points="1372 1944, 1347 1919, 1297 1919, 1272 1944, 1297 1969, 1347 1969, 1372 1944" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="1162" y="1944">IRR7</text>
<circle cx="1622" cy="1344" fill="#000080" r="25" stroke="#000080" stroke-width="5"/>
<circle cx="4472" cy="1244" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="4522" cy="1344" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="4572" cy="1444" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="3072" cy="1244" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
</svg>
添加文件
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<svg height="3847" version="1.1" width="3308" xmlns="http://www.w3.org/2000/svg">
<polyline fill="none" points="2637 1318, 2507 1318, 2507 798, 2087 798, 1577 798, 777 798" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2637 1718, 2477 1718, 2477 828, 2087 828, 1577 828, 777 828" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2637 2118, 2447 2118, 2447 858, 2087 858, 1577 858, 777 858" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2637 2518, 2417 2518, 2417 888, 2087 888, 1577 888, 777 888" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2637 2918, 2387 2918, 2387 918, 2087 918, 1577 918, 777 918" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2637 3318, 2357 3318, 2357 948, 2087 948, 1577 948, 777 948" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2637 3718, 2327 3718, 2327 978, 2087 978, 1577 978, 777 978" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2887 818, 3137 818" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2887 1218, 3137 1218" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2887 1618, 3137 1618" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2887 2018, 3137 2018" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2887 2418, 3137 2418" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2887 2818, 3137 2818" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2887 3218, 3137 3218" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2887 3618, 3137 3618" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="65" font-weight="400" text-anchor="start" x="2887" y="818">IRR0</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="65" font-weight="400" text-anchor="start" x="2887" y="1218">IRR1</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="65" font-weight="400" text-anchor="start" x="2887" y="1618">IRR2</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="65" font-weight="400" text-anchor="start" x="2887" y="2018">IRR3</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="65" font-weight="400" text-anchor="start" x="2887" y="2418">IRR4</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="65" font-weight="400" text-anchor="start" x="2887" y="2818">IRR5</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="65" font-weight="400" text-anchor="start" x="2887" y="3218">IRR6</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="65" font-weight="400" text-anchor="start" x="2887" y="3618">IRR7</text>
<polyline fill="none" points="2637 918, 2537 918, 2537 768, 2087 768, 1577 768, 777 768" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1127" x2="1077" y1="1228" y2="1228"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1173" y="1227">G1</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1100" y="1227">6</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1117" x2="1077" y1="1258" y2="1258"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1197" y="1257">^G2A</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1100" y="1259">4</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1117" x2="1077" y1="1288" y2="1288"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1197" y="1287">^G2B</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1099" y="1288">5</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1127" x2="1077" y1="1128" y2="1128"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="1154" y="1128">A</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1087" y="1127">1</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1127" x2="1077" y1="1158" y2="1158"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1160" y="1158">B</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1101" y="1158">2</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1127" x2="1077" y1="1188" y2="1188"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="1154" y="1188">C</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1088" y="1188">3</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1287" x2="1327" y1="1108" y2="1108"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="1248" y="1105">Y0</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1296" y="1108">15</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1287" x2="1327" y1="1138" y2="1138"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="1248" y="1135">Y1</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1297" y="1138">14</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1287" x2="1327" y1="1168" y2="1168"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="1248" y="1165">Y2</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1297" y="1168">13</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1287" x2="1327" y1="1198" y2="1198"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="1248" y="1195">Y3</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1297" y="1198">12</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1287" x2="1327" y1="1228" y2="1228"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="1248" y="1225">Y4</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1297" y="1228">11</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1287" x2="1327" y1="1258" y2="1258"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="1248" y="1255">Y5</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1297" y="1258">10</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1287" x2="1327" y1="1288" y2="1288"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="1248" y="1285">Y6</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1309" y="1288">9</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1287" x2="1327" y1="1318" y2="1318"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1262" y="1317">Y7</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1324" y="1318">7</text>
<circle cx="1122" cy="1288" fill="none" r="5" stroke="#000000" stroke-width="5"/>
<circle cx="1282" cy="1168" fill="none" r="5" stroke="#000000" stroke-width="5"/>
<circle cx="1282" cy="1199" fill="none" r="5" stroke="#000000" stroke-width="5"/>
<circle cx="1283" cy="1228" fill="#ffffff" r="5" stroke="#000000" stroke-width="5"/>
<circle cx="1282" cy="1108" fill="none" r="5" stroke="#000000" stroke-width="5"/>
<circle cx="1282" cy="1258" fill="none" r="5" stroke="#000000" stroke-width="5"/>
<circle cx="1282" cy="1137" fill="none" r="5" stroke="#000000" stroke-width="5"/>
<circle cx="1282" cy="1287" fill="none" r="5" stroke="#000000" stroke-width="5"/>
<circle cx="1282" cy="1319" fill="none" r="5" stroke="#000000" stroke-width="5"/>
<circle cx="1122" cy="1258" fill="none" r="5" stroke="#000000" stroke-width="5"/>
<rect fill="#ffffff" fill-opacity="0.5" height="264" stroke="#000000" stroke-width="5" width="146" x="1129" y="1074"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="1192" y="1065">U17</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="1130" y="1380">74LS138D</text>
<polygon fill="#ffff80" points="627 1128, 627 1113, 762 1113, 777 1128, 762 1143, 627 1143, 627 1128" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="627" y="1128">T0</text>
<polygon fill="#ffff80" points="627 1158, 627 1143, 762 1143, 777 1158, 762 1173, 627 1173, 627 1158" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="627" y="1158">T1</text>
<polygon fill="#ffff80" points="627 1188, 627 1173, 762 1173, 777 1188, 762 1203, 627 1203, 627 1188" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="627" y="1188">T2</text>
<text alignment-baseline="after-edge" fill="#000080" font-family="宋体" font-size="25" font-weight="400" text-anchor="start" x="17" y="1468">读出中断号后的第二个应答信号期间清除响应的中断请求,以免该中断源再次发出中断申请</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="微软雅黑" font-size="250" font-weight="700" text-anchor="start" x="797" y="318">IRR-中断请求模块</text>
<polyline fill="none" points="1077 1128, 827 1128, 777 1128" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1077 1158, 827 1158, 777 1158" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1077 1188, 827 1188, 777 1188" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polygon fill="#ffff80" points="627 768, 627 753, 762 753, 777 768, 762 783, 627 783, 627 768" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="627" y="768">IRQ0</text>
<polygon fill="#ffff80" points="627 798, 627 783, 762 783, 777 798, 762 813, 627 813, 627 798" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="627" y="798">IRQ1</text>
<polygon fill="#ffff80" points="627 828, 627 813, 762 813, 777 828, 762 843, 627 843, 627 828" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="627" y="828">IRQ2</text>
<polygon fill="#ffff80" points="627 858, 627 843, 762 843, 777 858, 762 873, 627 873, 627 858" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="627" y="858">IRQ3</text>
<polygon fill="#ffff80" points="627 888, 627 873, 762 873, 777 888, 762 903, 627 903, 627 888" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="627" y="888">IRQ4</text>
<polygon fill="#ffff80" points="627 918, 627 903, 762 903, 777 918, 762 933, 627 933, 627 918" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="627" y="918">IRQ5</text>
<polygon fill="#ffff80" points="627 948, 627 933, 762 933, 777 948, 762 963, 627 963, 627 948" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="627" y="948">IRQ6</text>
<polygon fill="#ffff80" points="627 978, 627 963, 762 963, 777 978, 762 993, 627 993, 627 978" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="627" y="978">IRQ7</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2687" x2="2637" y1="818" y2="818"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="2711" y="815">D</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2655" y="817">1</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2687" x2="2637" y1="918" y2="918"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="2725" y="918">CLK</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2655" y="916">2</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2767" x2="2767" y1="768" y2="718"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="2767" y="791">PR</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2745" y="756">6</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2767" x2="2767" y1="968" y2="1018"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="2768" y="951">CLR</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2744" y="1011">3</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2837" x2="2887" y1="818" y2="818"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="2811" y="815">Q</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2855" y="818">5</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2837" x2="2887" y1="918" y2="918"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2795" y="917">^Q</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2846" y="918">4</text>
<rect fill="#ffffff" fill-opacity="0.5" height="200" stroke="#000000" stroke-width="5" width="150" x="2687" y="768"/>
<polyline fill="none" points="2690 908, 2700 918, 2690 928" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="2842" y="760">U1</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="2804" y="1023">D_FLOP</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2687" x2="2637" y1="1218" y2="1218"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="2711" y="1215">D</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2655" y="1217">1</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2687" x2="2637" y1="1318" y2="1318"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="2725" y="1318">CLK</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2655" y="1316">2</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2767" x2="2767" y1="1168" y2="1118"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="2767" y="1191">PR</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2745" y="1156">6</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2767" x2="2767" y1="1368" y2="1418"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="2768" y="1351">CLR</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2744" y="1411">3</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2837" x2="2887" y1="1218" y2="1218"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="2811" y="1215">Q</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2855" y="1218">5</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2837" x2="2887" y1="1318" y2="1318"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2795" y="1317">^Q</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2846" y="1318">4</text>
<rect fill="#ffffff" fill-opacity="0.5" height="200" stroke="#000000" stroke-width="5" width="150" x="2687" y="1168"/>
<polyline fill="none" points="2690 1308, 2700 1318, 2690 1328" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="2842" y="1160">U2</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="2804" y="1423">D_FLOP</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2687" x2="2637" y1="1618" y2="1618"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="2711" y="1615">D</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2655" y="1617">1</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2687" x2="2637" y1="1718" y2="1718"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="2725" y="1718">CLK</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2655" y="1716">2</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2767" x2="2767" y1="1568" y2="1518"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="2767" y="1591">PR</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2745" y="1556">6</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2767" x2="2767" y1="1768" y2="1818"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="2768" y="1751">CLR</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2744" y="1811">3</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2837" x2="2887" y1="1618" y2="1618"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="2811" y="1615">Q</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2855" y="1618">5</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2837" x2="2887" y1="1718" y2="1718"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2795" y="1717">^Q</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2846" y="1718">4</text>
<rect fill="#ffffff" fill-opacity="0.5" height="200" stroke="#000000" stroke-width="5" width="150" x="2687" y="1568"/>
<polyline fill="none" points="2690 1708, 2700 1718, 2690 1728" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="2842" y="1560">U3</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="2804" y="1823">D_FLOP</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2687" x2="2637" y1="2018" y2="2018"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="2711" y="2015">D</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2655" y="2017">1</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2687" x2="2637" y1="2118" y2="2118"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="2725" y="2118">CLK</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2655" y="2116">2</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2767" x2="2767" y1="1968" y2="1918"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="2767" y="1991">PR</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2745" y="1956">6</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2767" x2="2767" y1="2168" y2="2218"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="2768" y="2151">CLR</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2744" y="2211">3</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2837" x2="2887" y1="2018" y2="2018"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="2811" y="2015">Q</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2855" y="2018">5</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2837" x2="2887" y1="2118" y2="2118"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2795" y="2117">^Q</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2846" y="2118">4</text>
<rect fill="#ffffff" fill-opacity="0.5" height="200" stroke="#000000" stroke-width="5" width="150" x="2687" y="1968"/>
<polyline fill="none" points="2690 2108, 2700 2118, 2690 2128" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="2842" y="1960">U4</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="2804" y="2223">D_FLOP</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2687" x2="2637" y1="2418" y2="2418"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="2711" y="2415">D</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2655" y="2417">1</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2687" x2="2637" y1="2518" y2="2518"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="2725" y="2518">CLK</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2655" y="2516">2</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2767" x2="2767" y1="2368" y2="2318"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="2767" y="2391">PR</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2745" y="2356">6</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2767" x2="2767" y1="2568" y2="2618"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="2768" y="2551">CLR</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2744" y="2611">3</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2837" x2="2887" y1="2418" y2="2418"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="2811" y="2415">Q</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2855" y="2418">5</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2837" x2="2887" y1="2518" y2="2518"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2795" y="2517">^Q</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2846" y="2518">4</text>
<rect fill="#ffffff" fill-opacity="0.5" height="200" stroke="#000000" stroke-width="5" width="150" x="2687" y="2368"/>
<polyline fill="none" points="2690 2508, 2700 2518, 2690 2528" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="2842" y="2360">U5</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="2804" y="2623">D_FLOP</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2687" x2="2637" y1="2818" y2="2818"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="2711" y="2815">D</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2655" y="2817">1</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2687" x2="2637" y1="2918" y2="2918"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="2725" y="2918">CLK</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2655" y="2916">2</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2767" x2="2767" y1="2768" y2="2718"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="2767" y="2791">PR</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2745" y="2756">6</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2767" x2="2767" y1="2968" y2="3018"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="2768" y="2951">CLR</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2744" y="3011">3</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2837" x2="2887" y1="2818" y2="2818"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="2811" y="2815">Q</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2855" y="2818">5</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2837" x2="2887" y1="2918" y2="2918"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2795" y="2917">^Q</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2846" y="2918">4</text>
<rect fill="#ffffff" fill-opacity="0.5" height="200" stroke="#000000" stroke-width="5" width="150" x="2687" y="2768"/>
<polyline fill="none" points="2690 2908, 2700 2918, 2690 2928" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="2842" y="2760">U6</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="2804" y="3023">D_FLOP</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2687" x2="2637" y1="3218" y2="3218"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="2711" y="3215">D</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2655" y="3217">1</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2687" x2="2637" y1="3318" y2="3318"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="2725" y="3318">CLK</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2655" y="3316">2</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2767" x2="2767" y1="3168" y2="3118"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="2767" y="3191">PR</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2745" y="3156">6</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2767" x2="2767" y1="3368" y2="3418"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="2768" y="3351">CLR</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2744" y="3411">3</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2837" x2="2887" y1="3218" y2="3218"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="2811" y="3215">Q</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2855" y="3218">5</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2837" x2="2887" y1="3318" y2="3318"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2795" y="3317">^Q</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2846" y="3318">4</text>
<rect fill="#ffffff" fill-opacity="0.5" height="200" stroke="#000000" stroke-width="5" width="150" x="2687" y="3168"/>
<polyline fill="none" points="2690 3308, 2700 3318, 2690 3328" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="2842" y="3160">U7</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="2804" y="3423">D_FLOP</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2687" x2="2637" y1="3618" y2="3618"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="2711" y="3615">D</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2655" y="3617">1</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2687" x2="2637" y1="3718" y2="3718"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="2725" y="3718">CLK</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2655" y="3716">2</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2767" x2="2767" y1="3568" y2="3518"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="2767" y="3591">PR</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2745" y="3556">6</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2767" x2="2767" y1="3768" y2="3818"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="2768" y="3751">CLR</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2744" y="3811">3</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2837" x2="2887" y1="3618" y2="3618"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="2811" y="3615">Q</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2855" y="3618">5</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2837" x2="2887" y1="3718" y2="3718"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2795" y="3717">^Q</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2846" y="3718">4</text>
<rect fill="#ffffff" fill-opacity="0.5" height="200" stroke="#000000" stroke-width="5" width="150" x="2687" y="3568"/>
<polyline fill="none" points="2690 3708, 2700 3718, 2690 3728" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="2842" y="3560">U8</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="2804" y="3823">D_FLOP</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2577" x2="2577" y1="578" y2="628"/>
<polygon fill="#ffffff" fill-opacity="0.5" points="2577 578, 2627 528, 2527 528, 2577 578" stroke="#000000" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="微软雅黑" font-size="30" font-weight="700" text-anchor="start" x="2567" y="568">1</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="2567" y="498">U9</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="2507" y="528">DIGITAL1</text>
<polyline fill="none" points="2637 3618, 2577 3618, 2577 628" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2637 818, 2577 818" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2637 1218, 2577 1218" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2637 1618, 2577 1618" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2637 2018, 2577 2018" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2637 2418, 2577 2418" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2637 2818, 2577 2818" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2637 3218, 2577 3218" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polygon fill="#ffff80" points="3137 818, 3137 793, 3262 793, 3287 818, 3262 843, 3137 843, 3137 818" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="3137" y="818">IRR0</text>
<polygon fill="#ffff80" points="3137 1218, 3137 1193, 3262 1193, 3287 1218, 3262 1243, 3137 1243, 3137 1218" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="3137" y="1218">IRR1</text>
<polygon fill="#ffff80" points="3137 1618, 3137 1593, 3262 1593, 3287 1618, 3262 1643, 3137 1643, 3137 1618" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="3137" y="1618">IRR2</text>
<polygon fill="#ffff80" points="3137 2018, 3137 1993, 3262 1993, 3287 2018, 3262 2043, 3137 2043, 3137 2018" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="3137" y="2018">IRR3</text>
<polygon fill="#ffff80" points="3137 2418, 3137 2393, 3262 2393, 3287 2418, 3262 2443, 3137 2443, 3137 2418" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="3137" y="2418">IRR4</text>
<polygon fill="#ffff80" points="3137 2818, 3137 2793, 3262 2793, 3287 2818, 3262 2843, 3137 2843, 3137 2818" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="3137" y="2818">IRR5</text>
<polygon fill="#ffff80" points="3137 3218, 3137 3193, 3262 3193, 3287 3218, 3262 3243, 3137 3243, 3137 3218" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="3137" y="3218">IRR6</text>
<polygon fill="#ffff80" points="3137 3618, 3137 3593, 3262 3593, 3287 3618, 3262 3643, 3137 3643, 3137 3618" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="3137" y="3618">IRR7</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1677" x2="1627" y1="1328" y2="1328"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1677" x2="1627" y1="1388" y2="1388"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1827" x2="1877" y1="1358" y2="1358"/>
<path d="M1687 1308" fill="none" stroke="#ff0000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M1687 1308" fill="none" stroke="#ff0000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M1684 1308 C 1714 1358, 1684 1408, 1684 1408" fill="none" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<circle cx="1684" cy="1328" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1684" cy="1387" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<polyline fill="none" points="1684 1307, 1744 1307" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1684 1408, 1743 1408" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M1744 1307" fill="none" stroke="#ff0000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M1744 1307" fill="none" stroke="#ff0000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M1743 1307" fill="none" stroke="#ff0000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M1743 1408" fill="none" stroke="#ff0000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M1744 1307" fill="none" stroke="#ff0000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M1743 1307 C 1805 1307, 1828 1359, 1828 1359" fill="none" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M1742 1408 C 1810 1408, 1828 1359, 1828 1359" fill="none" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="1734" y="1297">U11</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="1700" y="1464">NNOR</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1677" x2="1627" y1="1458" y2="1458"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1677" x2="1627" y1="1518" y2="1518"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1827" x2="1877" y1="1488" y2="1488"/>
<path d="M1687 1438" fill="none" stroke="#ff0000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M1687 1438" fill="none" stroke="#ff0000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M1684 1438 C 1714 1488, 1684 1538, 1684 1538" fill="none" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<circle cx="1684" cy="1458" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1684" cy="1517" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<polyline fill="none" points="1684 1437, 1744 1437" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1684 1538, 1743 1538" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M1744 1437" fill="none" stroke="#ff0000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M1744 1437" fill="none" stroke="#ff0000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M1743 1437" fill="none" stroke="#ff0000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M1743 1538" fill="none" stroke="#ff0000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M1744 1437" fill="none" stroke="#ff0000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M1743 1437 C 1805 1437, 1828 1489, 1828 1489" fill="none" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M1742 1538 C 1810 1538, 1828 1489, 1828 1489" fill="none" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="1734" y="1427">U12</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="1700" y="1594">NNOR</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1677" x2="1627" y1="1578" y2="1578"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1677" x2="1627" y1="1638" y2="1638"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1827" x2="1877" y1="1608" y2="1608"/>
<path d="M1687 1558" fill="none" stroke="#ff0000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M1687 1558" fill="none" stroke="#ff0000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M1684 1558 C 1714 1608, 1684 1658, 1684 1658" fill="none" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<circle cx="1684" cy="1578" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1684" cy="1637" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<polyline fill="none" points="1684 1557, 1744 1557" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1684 1658, 1743 1658" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M1744 1557" fill="none" stroke="#ff0000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M1744 1557" fill="none" stroke="#ff0000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M1743 1557" fill="none" stroke="#ff0000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M1743 1658" fill="none" stroke="#ff0000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M1744 1557" fill="none" stroke="#ff0000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M1743 1557 C 1805 1557, 1828 1609, 1828 1609" fill="none" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M1742 1658 C 1810 1658, 1828 1609, 1828 1609" fill="none" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="1734" y="1547">U13</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="1700" y="1714">NNOR</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1677" x2="1627" y1="1708" y2="1708"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1677" x2="1627" y1="1768" y2="1768"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1827" x2="1877" y1="1738" y2="1738"/>
<path d="M1687 1688" fill="none" stroke="#ff0000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M1687 1688" fill="none" stroke="#ff0000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M1684 1688 C 1714 1738, 1684 1788, 1684 1788" fill="none" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<circle cx="1684" cy="1708" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1684" cy="1767" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<polyline fill="none" points="1684 1687, 1744 1687" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1684 1788, 1743 1788" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M1744 1687" fill="none" stroke="#ff0000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M1744 1687" fill="none" stroke="#ff0000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M1743 1687" fill="none" stroke="#ff0000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M1743 1788" fill="none" stroke="#ff0000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M1744 1687" fill="none" stroke="#ff0000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M1743 1687 C 1805 1687, 1828 1739, 1828 1739" fill="none" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M1742 1788 C 1810 1788, 1828 1739, 1828 1739" fill="none" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="1734" y="1677">U14</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="1700" y="1844">NNOR</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1677" x2="1627" y1="1828" y2="1828"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1677" x2="1627" y1="1888" y2="1888"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1827" x2="1877" y1="1858" y2="1858"/>
<path d="M1687 1808" fill="none" stroke="#ff0000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M1687 1808" fill="none" stroke="#ff0000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M1684 1808 C 1714 1858, 1684 1908, 1684 1908" fill="none" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<circle cx="1684" cy="1828" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1684" cy="1887" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<polyline fill="none" points="1684 1807, 1744 1807" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1684 1908, 1743 1908" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M1744 1807" fill="none" stroke="#ff0000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M1744 1807" fill="none" stroke="#ff0000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M1743 1807" fill="none" stroke="#ff0000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M1743 1908" fill="none" stroke="#ff0000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M1744 1807" fill="none" stroke="#ff0000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M1743 1807 C 1805 1807, 1828 1859, 1828 1859" fill="none" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M1742 1908 C 1810 1908, 1828 1859, 1828 1859" fill="none" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="1734" y="1797">U15</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="1700" y="1964">NNOR</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1677" x2="1627" y1="1948" y2="1948"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1677" x2="1627" y1="2008" y2="2008"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1827" x2="1877" y1="1978" y2="1978"/>
<path d="M1687 1928" fill="none" stroke="#ff0000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M1687 1928" fill="none" stroke="#ff0000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M1684 1928 C 1714 1978, 1684 2028, 1684 2028" fill="none" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<circle cx="1684" cy="1948" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1684" cy="2007" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<polyline fill="none" points="1684 1927, 1744 1927" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1684 2028, 1743 2028" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M1744 1927" fill="none" stroke="#ff0000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M1744 1927" fill="none" stroke="#ff0000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M1743 1927" fill="none" stroke="#ff0000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M1743 2028" fill="none" stroke="#ff0000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M1744 1927" fill="none" stroke="#ff0000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M1743 1927 C 1805 1927, 1828 1979, 1828 1979" fill="none" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M1742 2028 C 1810 2028, 1828 1979, 1828 1979" fill="none" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="1734" y="1917">U16</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="1700" y="2084">NNOR</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1677" x2="1627" y1="2068" y2="2068"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1677" x2="1627" y1="2128" y2="2128"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1827" x2="1877" y1="2098" y2="2098"/>
<path d="M1687 2048" fill="none" stroke="#ff0000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M1687 2048" fill="none" stroke="#ff0000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M1684 2048 C 1714 2098, 1684 2148, 1684 2148" fill="none" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<circle cx="1684" cy="2068" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1684" cy="2127" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<polyline fill="none" points="1684 2047, 1744 2047" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1684 2148, 1743 2148" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M1744 2047" fill="none" stroke="#ff0000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M1744 2047" fill="none" stroke="#ff0000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M1743 2047" fill="none" stroke="#ff0000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M1743 2148" fill="none" stroke="#ff0000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M1744 2047" fill="none" stroke="#ff0000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M1743 2047 C 1805 2047, 1828 2099, 1828 2099" fill="none" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M1742 2148 C 1810 2148, 1828 2099, 1828 2099" fill="none" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="1734" y="2037">U18</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="1700" y="2204">NNOR</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1677" x2="1627" y1="2188" y2="2188"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1677" x2="1627" y1="2248" y2="2248"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1827" x2="1877" y1="2218" y2="2218"/>
<path d="M1687 2168" fill="none" stroke="#ff0000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M1687 2168" fill="none" stroke="#ff0000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M1684 2168 C 1714 2218, 1684 2268, 1684 2268" fill="none" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<circle cx="1684" cy="2188" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1684" cy="2247" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<polyline fill="none" points="1684 2167, 1744 2167" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1684 2268, 1743 2268" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M1744 2167" fill="none" stroke="#ff0000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M1744 2167" fill="none" stroke="#ff0000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M1743 2167" fill="none" stroke="#ff0000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M1743 2268" fill="none" stroke="#ff0000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M1744 2167" fill="none" stroke="#ff0000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M1743 2167 C 1805 2167, 1828 2219, 1828 2219" fill="none" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M1742 2268 C 1810 2268, 1828 2219, 1828 2219" fill="none" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="1734" y="2157">U19</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="1700" y="2324">NNOR</text>
<polyline fill="none" points="1327 1108, 1627 1108, 1627 1328" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1327 1138, 1607 1138, 1607 1458, 1627 1458" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1327 1168, 1587 1168, 1587 1578, 1627 1578" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1327 1198, 1567 1198, 1567 1708, 1627 1708" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1327 1228, 1547 1228, 1547 1828, 1627 1828" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1327 1258, 1527 1258, 1527 1948, 1627 1948" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1327 1288, 1507 1288, 1507 2068, 1627 2068" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1327 1318, 1487 1318, 1487 2188, 1627 2188" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1627 2248, 777 2248" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polygon fill="#ffff80" points="627 2248, 627 2223, 752 2223, 777 2248, 752 2273, 627 2273, 627 2248" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="627" y="2248">RESET</text>
<polyline fill="none" points="1627 1388, 1427 1388, 1427 2248" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1627 1518, 1427 1518" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1627 1638, 1427 1638" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1627 1768, 1427 1768" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1627 1888, 1427 1888" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1627 2008, 1427 2008" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1627 2128, 1427 2128" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1877 1358, 2227 1358, 2227 1078, 2767 1078, 2767 1018" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1877 1488, 2767 1488, 2767 1418" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1877 1608, 2227 1608, 2227 1818, 2767 1818" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1877 1738, 2177 1738, 2177 2218, 2767 2218" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1877 1858, 2127 1858, 2127 2618, 2767 2618" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1877 1978, 2077 1978, 2077 3018, 2767 3018" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1877 2098, 2027 2098, 2027 3418, 2767 3418" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1877 2218, 1977 2218, 1977 3818, 2767 3818" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polygon fill="#ffff80" points="627 1308, 627 1283, 752 1283, 777 1308, 752 1333, 627 1333, 627 1308" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="627" y="1308">CLK</text>
<polygon fill="#ffff80" points="627 1358, 627 1333, 752 1333, 777 1358, 752 1383, 627 1383, 627 1358" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="627" y="1358">INTA2</text>
<polyline fill="none" points="277 1228, 327 1228, 327 1178, 377 1178, 377 1228, 427 1228, 427 1178, 477 1178, 477 1228, 527 1228" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="277 1278, 327 1278, 327 1328, 427 1328, 427 1278, 527 1278" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000080" font-family="宋体" font-size="25" font-weight="400" text-anchor="start" x="217" y="1228">CLK</text>
<text alignment-baseline="after-edge" fill="#000080" font-family="宋体" font-size="25" font-weight="400" text-anchor="start" x="217" y="1278">INTA2</text>
<polyline fill="none" points="377 1128, 377 1368, 377 1378" stroke="#000000" stroke-dasharray="1,10" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="427 1128, 427 1378" stroke="#000000" stroke-dasharray="1,10" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="837" x2="777" y1="1308" y2="1308"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="837" x2="777" y1="1358" y2="1358"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="977" x2="1027" y1="1328" y2="1328"/>
<circle cx="968" cy="1328" fill="none" r="5" stroke="#000000" stroke-width="5"/>
<polyline fill="none" points="836 1286, 886 1286" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="833 1377, 884 1377" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M886 1286 C 953 1286, 962 1330, 962 1330" fill="none" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M885 1377 C 953 1377, 963 1331, 963 1331" fill="none" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M837 1288" fill="none" stroke="#ff0000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M833 1286 C 852 1329, 832 1376, 832 1376" fill="none" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="878" y="1278">U10</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="858" y="1422">NOR</text>
<polyline fill="none" points="1077 1228, 1027 1228, 1027 1328" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<circle cx="2577" cy="818" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="2577" cy="1218" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="2577" cy="1618" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="2577" cy="2018" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="2577" cy="2418" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="2577" cy="2818" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="2577" cy="3218" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1427" cy="2248" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1427" cy="1518" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1427" cy="1638" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1427" cy="1768" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1427" cy="1888" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1427" cy="2008" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1427" cy="2128" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
</svg>
添加文件
这个 源代码变更 因为 太大 而不能显示。 你可以 浏览blob
添加文件
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<svg height="1244" version="1.1" width="1944" xmlns="http://www.w3.org/2000/svg">
<polygon fill="#ffff80" points="20 296, 20 271, 145 271, 170 296, 145 321, 20 321, 20 296" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="20" y="296">ABUS[7..0]</text>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="220" x2="270" y1="356" y2="406"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="220" x2="270" y1="376" y2="426"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="220" x2="270" y1="396" y2="446"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="220" x2="270" y1="416" y2="466"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="220" x2="270" y1="436" y2="486"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="220" x2="270" y1="456" y2="506"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="220" x2="270" y1="476" y2="526"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="220" x2="270" y1="496" y2="546"/>
<polyline fill="none" points="270 406, 540 406" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="270 426, 540 426" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="270 446, 540 446" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="270 466, 540 466" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="270 486, 540 486" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="270 506, 540 506" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="270 526, 540 526" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="270 546, 540 546" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="12" font-weight="400" text-anchor="start" x="340" y="406">ABUS0</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="12" font-weight="400" text-anchor="start" x="340" y="426">ABUS1</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="12" font-weight="400" text-anchor="start" x="340" y="446">ABUS2</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="12" font-weight="400" text-anchor="start" x="340" y="466">ABUS3</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="12" font-weight="400" text-anchor="start" x="340" y="486">ABUS4</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="12" font-weight="400" text-anchor="start" x="340" y="506">ABUS5</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="12" font-weight="400" text-anchor="start" x="340" y="526">ABUS6</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="12" font-weight="400" text-anchor="start" x="340" y="546">ABUS7</text>
<polygon fill="#ffff80" points="20 616, 20 591, 145 591, 170 616, 145 641, 20 641, 20 616" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="20" y="616">DBUS[7..0]</text>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="220" x2="270" y1="796" y2="746"/>
<polyline fill="none" points="540 746, 270 746" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="220" x2="270" y1="776" y2="726"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="220" x2="270" y1="756" y2="706"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="220" x2="270" y1="736" y2="686"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="220" x2="270" y1="716" y2="666"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="220" x2="270" y1="696" y2="646"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="220" x2="270" y1="676" y2="626"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="220" x2="270" y1="656" y2="606"/>
<polyline fill="none" points="270 726, 540 726" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="270 706, 540 706" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="270 686, 540 686" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="270 666, 540 666" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="270 646, 540 646" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="270 626, 540 626" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="270 606, 540 606" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="12" font-weight="400" text-anchor="start" x="310" y="606">DBUS0</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="12" font-weight="400" text-anchor="start" x="310" y="626">DBUS1</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="12" font-weight="400" text-anchor="start" x="310" y="646">DBUS2</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="12" font-weight="400" text-anchor="start" x="310" y="666">DBUS3</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="12" font-weight="400" text-anchor="start" x="310" y="686">DBUS4</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="12" font-weight="400" text-anchor="start" x="310" y="706">DBUS5</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="12" font-weight="400" text-anchor="start" x="310" y="726">DBUS6</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="12" font-weight="400" text-anchor="start" x="310" y="746">DBUS7</text>
<polygon fill="#ffff80" points="20 906, 20 881, 145 881, 170 906, 145 931, 20 931, 20 906" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="20" y="906">MEM_WR</text>
<polygon fill="#ffff80" points="20 1016, 20 991, 145 991, 170 1016, 145 1041, 20 1041, 20 1016" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="20" y="1016">CLK</text>
<polyline fill="none" points="170 1016, 540 1016, 540 826" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="170 906, 510 906, 510 806, 540 806" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polygon fill="#ffff80" points="20 1196, 20 1171, 245 1171, 270 1196, 245 1221, 20 1221, 20 1196" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="20" y="1196">MEM_GATE_EN</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="22" font-weight="400" text-anchor="start" x="1480" y="406">DBUS0</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="22" font-weight="400" text-anchor="start" x="1480" y="436">DBUS1</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="22" font-weight="400" text-anchor="start" x="1480" y="466">DBUS2</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="22" font-weight="400" text-anchor="start" x="1480" y="496">DBUS3</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="22" font-weight="400" text-anchor="start" x="1480" y="526">DBUS4</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="22" font-weight="400" text-anchor="start" x="1480" y="556">DBUS5</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="22" font-weight="400" text-anchor="start" x="1480" y="586">DBUS6</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="22" font-weight="400" text-anchor="start" x="1480" y="616">DBUS7</text>
<polyline fill="none" points="1430 406, 1630 406" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1430 436, 1630 436" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1430 466, 1630 466" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1430 496, 1630 496" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1430 526, 1630 526" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1430 556, 1630 556" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1430 586, 1630 586" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1430 616, 1630 616" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="1630" x2="1680" y1="406" y2="356"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="1630" x2="1680" y1="436" y2="386"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="1630" x2="1680" y1="466" y2="416"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="1630" x2="1680" y1="496" y2="446"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="1630" x2="1680" y1="526" y2="476"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="1630" x2="1680" y1="556" y2="506"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="1630" x2="1680" y1="586" y2="536"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="1630" x2="1680" y1="616" y2="566"/>
<polygon fill="#ffff80" points="1770 306, 1770 281, 1895 281, 1920 306, 1895 331, 1770 331, 1770 306" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="1770" y="306">DBUS[7..0]</text>
<polyline fill="none" points="790 406, 1180 406" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="790 426, 1080 426, 1080 436, 1180 436" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="790 446, 1060 446, 1060 466, 1180 466" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="790 466, 1040 466, 1040 496, 1180 496" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="790 486, 1010 486, 1010 526, 1180 526" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="790 506, 980 506, 980 556, 1180 556" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="790 526, 950 526, 950 586, 1180 586" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="790 546, 920 546, 920 616, 1180 616" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="微软雅黑" font-size="150" font-weight="700" text-anchor="start" x="330" y="196">存储器MEM模块</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1230" x2="1180" y1="406" y2="406"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1263" y="406">A0</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1230" x2="1180" y1="436" y2="436"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1263" y="436">A1</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1230" x2="1180" y1="466" y2="466"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1263" y="466">A2</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1230" x2="1180" y1="496" y2="496"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1263" y="496">A3</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1230" x2="1180" y1="526" y2="526"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1263" y="526">A4</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1230" x2="1180" y1="556" y2="556"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1263" y="556">A5</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1230" x2="1180" y1="586" y2="586"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1263" y="586">A6</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1230" x2="1180" y1="616" y2="616"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1263" y="616">A7</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1380" x2="1430" y1="406" y2="406"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1347" y="406">D0</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1380" x2="1430" y1="436" y2="436"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1347" y="436">D1</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1380" x2="1430" y1="466" y2="466"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1347" y="466">D2</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1380" x2="1430" y1="496" y2="496"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1347" y="496">D3</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1380" x2="1430" y1="526" y2="526"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1347" y="526">D4</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1380" x2="1430" y1="556" y2="556"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1347" y="556">D5</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1380" x2="1430" y1="586" y2="586"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1347" y="586">D6</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1380" x2="1430" y1="616" y2="616"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1347" y="616">D7</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1220" x2="1180" y1="676" y2="676"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1274" y="675">^EN</text>
<rect fill="#a0c0ff" fill-opacity="0.5" height="350" stroke="#000000" stroke-width="5" width="150" x="1230" y="366"/>
<circle cx="1225" cy="676" fill="none" r="5" stroke="#000000" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="1230" y="356">MEM_gate</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="1230" y="766">BUS_TRANS8</text>
<polyline fill="none" points="220 796, 220 616, 170 616" stroke="#000080" stroke-linecap="round" stroke-linejoin="round" stroke-width="20"/>
<polyline fill="none" points="270 1196, 1180 1196, 1180 676" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1770 306, 1680 306, 1680 566" stroke="#000080" stroke-linecap="round" stroke-linejoin="round" stroke-width="20"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="590" x2="540" y1="406" y2="406"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="623" y="406">A0</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="590" x2="540" y1="426" y2="426"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="623" y="426">A1</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="590" x2="540" y1="446" y2="446"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="623" y="446">A2</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="590" x2="540" y1="466" y2="466"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="623" y="466">A3</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="590" x2="540" y1="486" y2="486"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="623" y="486">A4</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="590" x2="540" y1="506" y2="506"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="623" y="506">A5</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="590" x2="540" y1="526" y2="526"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="623" y="526">A6</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="590" x2="540" y1="546" y2="546"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="623" y="546">A7</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="590" x2="540" y1="606" y2="606"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="623" y="606">D0</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="590" x2="540" y1="626" y2="626"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="623" y="626">D1</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="590" x2="540" y1="646" y2="646"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="623" y="646">D2</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="590" x2="540" y1="666" y2="666"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="623" y="666">D3</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="590" x2="540" y1="686" y2="686"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="623" y="686">D4</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="590" x2="540" y1="706" y2="706"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="623" y="706">D5</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="590" x2="540" y1="726" y2="726"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="623" y="726">D6</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="590" x2="540" y1="746" y2="746"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="623" y="746">D7</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="740" x2="790" y1="406" y2="406"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="707" y="406">Q0</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="740" x2="790" y1="426" y2="426"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="707" y="426">Q1</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="740" x2="790" y1="446" y2="446"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="707" y="446">Q2</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="740" x2="790" y1="466" y2="466"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="707" y="466">Q3</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="740" x2="790" y1="486" y2="486"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="707" y="486">Q4</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="740" x2="790" y1="506" y2="506"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="707" y="506">Q5</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="740" x2="790" y1="526" y2="526"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="707" y="526">Q6</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="740" x2="790" y1="546" y2="546"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="707" y="546">Q7</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="580" x2="540" y1="806" y2="806"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="656" y="806">^W\R</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="590" x2="540" y1="826" y2="826"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="643" y="826">CLK</text>
<rect fill="#ff8057" fill-opacity="0.5" height="490" stroke="#000000" stroke-width="5" width="150" x="590" y="376"/>
<polyline fill="none" points="590 816, 600 826, 590 836" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<circle cx="585" cy="806" fill="none" r="5" stroke="#000000" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="65" font-weight="700" text-anchor="start" x="580" y="366">RAM</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="610" y="906">256RAM1</text>
<polyline fill="none" points="220 496, 220 296, 170 296" stroke="#000080" stroke-linecap="round" stroke-linejoin="round" stroke-width="20"/>
</svg>
添加文件
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<svg height="2286" version="1.1" width="3108" xmlns="http://www.w3.org/2000/svg">
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="957" x2="907" y1="2086" y2="2086"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="990" y="2086">A</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="942" y="2086">11</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="957" x2="907" y1="2116" y2="2116"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="990" y="2116">B</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="942" y="2116">10</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="957" x2="907" y1="2146" y2="2146"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="990" y="2146">C</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="928" y="2146">9</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="947" x2="907" y1="2176" y2="2176"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1000" y="2176">^G</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="928" y="2176">7</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="957" x2="907" y1="1816" y2="1816"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1000" y="1816">D0</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="929" y="1815">4</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="957" x2="907" y1="1846" y2="1846"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1000" y="1846">D1</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="929" y="1845">3</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="957" x2="907" y1="1876" y2="1876"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1000" y="1876">D2</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="929" y="1875">2</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="957" x2="907" y1="1906" y2="1906"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1000" y="1906">D3</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="929" y="1905">1</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="957" x2="907" y1="1936" y2="1936"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1000" y="1936">D4</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="942" y="1936">15</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="957" x2="907" y1="1966" y2="1966"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1000" y="1966">D5</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="942" y="1966">14</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="957" x2="907" y1="1996" y2="1996"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1000" y="1996">D6</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="942" y="1996">13</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="957" x2="907" y1="2026" y2="2026"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1000" y="2026">D7</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="942" y="2026">12</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1107" x2="1157" y1="1816" y2="1816"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="1074" y="1816">Y</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1138" y="1816">5</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1107" x2="1157" y1="1876" y2="1876"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="1074" y="1876">W</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1138" y="1876">6</text>
<circle cx="953" cy="2176" fill="none" r="5" stroke="#000000" stroke-width="5"/>
<rect fill="#ffffff" fill-opacity="0.5" height="430" stroke="#000000" stroke-width="5" width="150" x="957" y="1786"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="1022" y="1773">U1</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="965" y="2265">74LS151D</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="457" x2="507" y1="1906" y2="1906"/>
<polygon fill="#ffffff" fill-opacity="0.5" points="457 1906, 407 1856, 407 1956, 457 1906" stroke="#000000" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Times New Roman" font-size="30" font-weight="700" text-anchor="start" transform="rotate(-90 447 1916)" x="447" y="1916">1</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" transform="rotate(-90 377 1916)" x="377" y="1916">U2</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" transform="rotate(-90 407 1996)" x="407" y="1996">CONSTANT1</text>
<polygon fill="#ffff80" points="457 1816, 457 1801, 592 1801, 607 1816, 592 1831, 457 1831, 457 1816" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="457" y="1816">CF</text>
<polygon fill="#ffff80" points="457 1846, 457 1831, 592 1831, 607 1846, 592 1861, 457 1861, 457 1846" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="457" y="1846">ZF</text>
<polygon fill="#ffff80" points="457 2086, 457 2071, 592 2071, 607 2086, 592 2101, 457 2101, 457 2086" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="457" y="2086">IR2</text>
<polygon fill="#ffff80" points="457 2116, 457 2101, 592 2101, 607 2116, 592 2131, 457 2131, 457 2116" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="457" y="2116">IR3</text>
<polygon fill="#ffff80" points="457 2146, 457 2131, 592 2131, 607 2146, 592 2161, 457 2161, 457 2146" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="12" font-weight="700" text-anchor="start" x="457" y="2146">PC_LOAD_EN</text>
<polygon fill="#ffff80" points="457 1346, 457 1331, 592 1331, 607 1346, 592 1361, 457 1361, 457 1346" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="457" y="1346">CLK</text>
<polygon fill="#ffff80" points="457 966, 457 941, 582 941, 607 966, 582 991, 457 991, 457 966" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="22" font-weight="400" text-anchor="start" x="457" y="966">DBUS[7..0]</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="20" font-weight="400" text-anchor="start" x="907" y="986">DBUS0</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="20" font-weight="400" text-anchor="start" x="907" y="1016">DBUS1</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="20" font-weight="400" text-anchor="start" x="907" y="1046">DBUS2</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="20" font-weight="400" text-anchor="start" x="907" y="1076">DBUS3</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="20" font-weight="400" text-anchor="start" x="907" y="1106">DBUS4</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="20" font-weight="400" text-anchor="start" x="907" y="1136">DBUS5</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="20" font-weight="400" text-anchor="start" x="907" y="1166">DBUS6</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="20" font-weight="400" text-anchor="start" x="907" y="1196">DBUS7</text>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="2747" x2="2797" y1="986" y2="936"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="2747" x2="2797" y1="1016" y2="966"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="2747" x2="2797" y1="1046" y2="996"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="2747" x2="2797" y1="1076" y2="1026"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="2747" x2="2797" y1="1106" y2="1056"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="2747" x2="2797" y1="1136" y2="1086"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="2747" x2="2797" y1="1166" y2="1116"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="2747" x2="2797" y1="1196" y2="1146"/>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="2557" y="986">ABUS0</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="2557" y="1016">ABUS1</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="2557" y="1046">ABUS2</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="2557" y="1076">ABUS3</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="2557" y="1106">ABUS4</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="2557" y="1136">ABUS5</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="2557" y="1166">ABUS6</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="2557" y="1196">ABUS7</text>
<polygon fill="#ffff80" points="457 1516, 457 1491, 582 1491, 607 1516, 582 1541, 457 1541, 457 1516" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="12" font-weight="700" text-anchor="start" x="457" y="1516">PC_A_GATE_EN</text>
<text alignment-baseline="after-edge" fill="#000080" font-family="宋体" font-size="12" font-weight="400" text-anchor="start" x="357" y="2086">指令第3位</text>
<text alignment-baseline="after-edge" fill="#000080" font-family="宋体" font-size="12" font-weight="400" text-anchor="start" x="357" y="2126">指令第4位</text>
<polyline fill="none" points="2747 986, 2457 986" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2457 1016, 2747 1016" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2457 1046, 2747 1046" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2457 1076, 2747 1076" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2457 1106, 2747 1106" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2457 1136, 2747 1136" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2457 1166, 2747 1166" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2457 1196, 2747 1196" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polygon fill="#ffff80" points="457 726, 457 701, 582 701, 607 726, 582 751, 457 751, 457 726" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="12" font-weight="700" text-anchor="start" x="457" y="726">PC_D_GATE_EN</text>
<polyline fill="none" points="2207 666, 2157 666, 2157 1126, 2157 1196" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2207 576, 2097 576, 2097 1066, 2097 1106" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2207 516, 2057 516, 2057 1026, 2057 1046" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2207 486, 2037 486, 2037 1006, 2037 1016" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2207 456, 2017 456, 2017 986" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="2557" y="456">DBUS0</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="2557" y="486">DBUS1</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="2557" y="516">DBUS2</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="2557" y="546">DBUS3</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="2557" y="576">DBUS4</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="2557" y="606">DBUS5</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="2557" y="636">DBUS6</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="2557" y="666">DBUS7</text>
<polyline fill="none" points="907 1876, 827 1876, 827 1906" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2457 456, 2737 456" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2457 486, 2737 486" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2457 516, 2737 516" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2457 546, 2737 546" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2457 576, 2737 576" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2457 606, 2737 606" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2457 636, 2737 636" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2457 666, 2737 666" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="2737" x2="2787" y1="456" y2="406"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="2737" x2="2787" y1="486" y2="436"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="2737" x2="2787" y1="516" y2="466"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="2737" x2="2787" y1="546" y2="496"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="2737" x2="2787" y1="576" y2="526"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="2737" x2="2787" y1="606" y2="556"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="2737" x2="2787" y1="636" y2="586"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="2737" x2="2787" y1="666" y2="616"/>
<polyline fill="none" points="2207 546, 2077 546, 2077 1076" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2207 606, 2117 606, 2117 1136" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2207 636, 2137 636, 2137 1166" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polygon fill="#ffff80" points="457 1256, 457 1236, 587 1236, 607 1256, 587 1276, 457 1276, 457 1256" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="457" y="1256">PC_ADD</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="微软雅黑" font-size="250" font-weight="700" text-anchor="start" x="447" y="316">程序计数器PC模块</text>
<polygon fill="#ffff80" points="457 1596, 457 1571, 582 1571, 607 1596, 582 1621, 457 1621, 457 1596" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="457" y="1596">INTR_LOAD</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1067" x2="1007" y1="1596" y2="1596"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1067" x2="1007" y1="1656" y2="1656"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1197" x2="1257" y1="1626" y2="1626"/>
<path d="M1145 1574 A 47 47 0 1 1 1145 1667" fill="none" stroke="#000000" stroke-linecap="round" stroke-width="5"/>
<polyline fill="none" points="1146 1668, 1067 1668, 1067 1574, 1146 1574" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="1108" y="1568">U3</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="1091" y="1714">AND</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1407" x2="1357" y1="986" y2="986"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1440" y="986">D0</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1407" x2="1357" y1="1016" y2="1016"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1440" y="1016">D1</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1407" x2="1357" y1="1046" y2="1046"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1440" y="1046">D2</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1407" x2="1357" y1="1076" y2="1076"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1440" y="1076">D3</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1407" x2="1357" y1="1106" y2="1106"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1440" y="1106">D4</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1407" x2="1357" y1="1136" y2="1136"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1440" y="1136">D5</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1407" x2="1357" y1="1166" y2="1166"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1440" y="1166">D6</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1407" x2="1357" y1="1196" y2="1196"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1440" y="1196">D7</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1607" x2="1657" y1="986" y2="986"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1574" y="986">Q0</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1607" x2="1657" y1="1016" y2="1016"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1574" y="1016">Q1</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1607" x2="1657" y1="1046" y2="1046"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1574" y="1046">Q2</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1607" x2="1657" y1="1076" y2="1076"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1574" y="1076">Q3</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1607" x2="1657" y1="1106" y2="1106"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1574" y="1106">Q4</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1607" x2="1657" y1="1136" y2="1136"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1574" y="1136">Q5</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1607" x2="1657" y1="1166" y2="1166"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1574" y="1166">Q6</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1607" x2="1657" y1="1196" y2="1196"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1574" y="1196">Q7</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1407" x2="1357" y1="1256" y2="1256"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1455" y="1256">EN</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1397" x2="1357" y1="1286" y2="1286"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1493" y="1286">^LOAD</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1397" x2="1357" y1="1316" y2="1316"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1480" y="1316">^CLR</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1607" x2="1657" y1="1256" y2="1256"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1564" y="1256">RCO</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1407" x2="1357" y1="1346" y2="1346"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1468" y="1346">CLK</text>
<rect fill="#c0dcc0" fill-opacity="0.5" height="500" stroke="#000000" stroke-width="5" width="200" x="1407" y="936"/>
<polyline fill="none" points="1407 1336, 1417 1346, 1407 1356" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<circle cx="1402" cy="1286" fill="#ffffff" r="6" stroke="#000000" stroke-width="5"/>
<circle cx="1402" cy="1316" fill="#ffffff" r="6" stroke="#000000" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="65" font-weight="700" text-anchor="start" x="1447" y="926">PC</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="1447" y="1486">C_SAB8</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2257" x2="2207" y1="986" y2="986"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="2290" y="986">A0</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2257" x2="2207" y1="1016" y2="1016"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="2290" y="1016">A1</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2257" x2="2207" y1="1046" y2="1046"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="2290" y="1046">A2</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2257" x2="2207" y1="1076" y2="1076"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="2290" y="1076">A3</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2257" x2="2207" y1="1106" y2="1106"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="2290" y="1106">A4</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2257" x2="2207" y1="1136" y2="1136"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="2290" y="1136">A5</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2257" x2="2207" y1="1166" y2="1166"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="2290" y="1166">A6</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2257" x2="2207" y1="1196" y2="1196"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="2290" y="1196">A7</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2407" x2="2457" y1="986" y2="986"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2374" y="986">D0</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2407" x2="2457" y1="1016" y2="1016"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2374" y="1016">D1</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2407" x2="2457" y1="1046" y2="1046"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2374" y="1046">D2</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2407" x2="2457" y1="1076" y2="1076"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2374" y="1076">D3</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2407" x2="2457" y1="1106" y2="1106"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2374" y="1106">D4</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2407" x2="2457" y1="1136" y2="1136"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2374" y="1136">D5</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2407" x2="2457" y1="1166" y2="1166"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2374" y="1166">D6</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2407" x2="2457" y1="1196" y2="1196"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2374" y="1196">D7</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2247" x2="2207" y1="1256" y2="1256"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="2301" y="1255">^EN</text>
<rect fill="#a0c0ff" fill-opacity="0.5" height="350" stroke="#000000" stroke-width="5" width="150" x="2257" y="946"/>
<circle cx="2252" cy="1256" fill="none" r="5" stroke="#000000" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="2277" y="936">PC_gate</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="2257" y="1346">BUS_TRANS8</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2257" x2="2207" y1="456" y2="456"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="2290" y="456">A0</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2257" x2="2207" y1="486" y2="486"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="2290" y="486">A1</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2257" x2="2207" y1="516" y2="516"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="2290" y="516">A2</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2257" x2="2207" y1="546" y2="546"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="2290" y="546">A3</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2257" x2="2207" y1="576" y2="576"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="2290" y="576">A4</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2257" x2="2207" y1="606" y2="606"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="2290" y="606">A5</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2257" x2="2207" y1="636" y2="636"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="2290" y="636">A6</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2257" x2="2207" y1="666" y2="666"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="2290" y="666">A7</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2407" x2="2457" y1="456" y2="456"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2374" y="456">D0</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2407" x2="2457" y1="486" y2="486"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2374" y="486">D1</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2407" x2="2457" y1="516" y2="516"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2374" y="516">D2</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2407" x2="2457" y1="546" y2="546"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2374" y="546">D3</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2407" x2="2457" y1="576" y2="576"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2374" y="576">D4</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2407" x2="2457" y1="606" y2="606"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2374" y="606">D5</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2407" x2="2457" y1="636" y2="636"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2374" y="636">D6</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2407" x2="2457" y1="666" y2="666"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2374" y="666">D7</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2247" x2="2207" y1="726" y2="726"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="2301" y="725">^EN</text>
<rect fill="#a0c0ff" fill-opacity="0.5" height="350" stroke="#000000" stroke-width="5" width="150" x="2257" y="416"/>
<circle cx="2252" cy="726" fill="none" r="5" stroke="#000000" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="2257" y="396">PC_D_gate</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="2257" y="816">BUS_TRANS8</text>
<polyline fill="none" points="2787 616, 2787 366, 2907 366" stroke="#000080" stroke-linecap="round" stroke-linejoin="round" stroke-width="20"/>
<polyline fill="none" points="2797 1146, 2797 866, 2907 866" stroke="#000080" stroke-linecap="round" stroke-linejoin="round" stroke-width="20"/>
<polygon fill="#ffff80" points="2907 366, 2907 341, 3062 341, 3087 366, 3062 391, 2907 391, 2907 366" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="2907" y="366">DBUS[7..0]</text>
<polygon fill="#ffff80" points="2907 866, 2907 841, 3062 841, 3087 866, 3062 891, 2907 891, 2907 866" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="2907" y="866">ABUS[7..0]</text>
<polyline fill="none" points="1657 986, 2207 986" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2207 1016, 1657 1016" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1657 1046, 2207 1046" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2207 1076, 1657 1076" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1657 1106, 2207 1106" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2207 1136, 1657 1136" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1657 1166, 2207 1166" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2207 1196, 1657 1196" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1357 986, 907 986" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1357 1016, 907 1016" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1357 1046, 907 1046" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1357 1076, 907 1076" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1357 1106, 907 1106" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1357 1136, 907 1136" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1357 1166, 907 1166" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1357 1196, 907 1196" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="857" x2="907" y1="1036" y2="986"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="857" x2="907" y1="1066" y2="1016"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="857" x2="907" y1="1096" y2="1046"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="857" x2="907" y1="1156" y2="1106"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="857" x2="907" y1="1186" y2="1136"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="857" x2="907" y1="1216" y2="1166"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="857" x2="907" y1="1246" y2="1196"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="857" x2="907" y1="1126" y2="1076"/>
<polyline fill="none" points="857 1246, 857 966, 607 966" stroke="#000080" stroke-linecap="round" stroke-linejoin="round" stroke-width="20"/>
<polyline fill="none" points="2207 726, 607 726" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1357 1346, 607 1346" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2207 1256, 2157 1256, 2157 1516, 607 1516" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="907 1816, 607 1816" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="907 1846, 607 1846" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="907 1906, 607 1906, 507 1906" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="907 2086, 607 2086" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="907 2116, 607 2116" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="907 2146, 607 2146" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1157 1876, 1257 1876, 1257 1716, 1007 1716, 1007 1656" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1007 1596, 607 1596" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1257 1626, 1307 1626, 1307 1286, 1357 1286" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000080" font-family="宋体" font-size="25" font-weight="400" text-anchor="start" x="17" y="1616">加载中断服务程序入口地址</text>
<polygon fill="#ffff80" points="457 1316, 457 1301, 592 1301, 607 1316, 592 1331, 457 1331, 457 1316" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="457" y="1316">RESET</text>
<polyline fill="none" points="1357 1316, 607 1316" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1357 1256, 1207 1256, 1007 1256, 607 1256" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<circle cx="2017" cy="986" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="2037" cy="1016" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="2057" cy="1046" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="2077" cy="1076" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="2097" cy="1106" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="2117" cy="1136" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="2137" cy="1166" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="2157" cy="1196" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="827" cy="1906" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
</svg>
添加文件
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<svg height="2006" version="1.1" width="3443" xmlns="http://www.w3.org/2000/svg">
<polygon fill="#ffff80" points="21 894, 21 869, 146 869, 171 894, 146 919, 21 919, 21 894" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="21" y="894">ISR[7..0]</text>
<polygon fill="#ffff80" points="21 1294, 21 1269, 146 1269, 171 1294, 146 1319, 21 1319, 21 1294" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="21" y="1294">IRR[7..0]</text>
<polyline fill="none" points="171 894, 321 894, 321 1144, 321 1194" stroke="#000080" stroke-linecap="round" stroke-linejoin="round" stroke-width="20"/>
<polyline fill="none" points="171 1294, 321 1294, 321 1594" stroke="#000080" stroke-linecap="round" stroke-linejoin="round" stroke-width="20"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="321" x2="371" y1="1194" y2="1144"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="321" x2="371" y1="1164" y2="1114"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="321" x2="371" y1="1134" y2="1084"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="321" x2="371" y1="1104" y2="1054"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="321" x2="371" y1="1074" y2="1024"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="321" x2="371" y1="1044" y2="994"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="321" x2="371" y1="1014" y2="964"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="321" x2="371" y1="984" y2="934"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="321" x2="371" y1="1594" y2="1544"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="321" x2="371" y1="1564" y2="1514"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="321" x2="371" y1="1534" y2="1484"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="321" x2="371" y1="1504" y2="1454"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="321" x2="371" y1="1474" y2="1424"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="321" x2="371" y1="1444" y2="1394"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="321" x2="371" y1="1414" y2="1364"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="321" x2="371" y1="1384" y2="1334"/>
<polyline fill="none" points="371 934, 521 934" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="371 964, 521 964" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="371 994, 521 994" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="371 1024, 521 1024" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="371 1054, 521 1054" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="371 1084, 521 1084" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="371 1114, 521 1114" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="371 1144, 521 1144" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="371 1334, 521 1334" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="371 1364, 521 1364" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="371 1394, 521 1394" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="371 1424, 521 1424" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="371 1454, 521 1454" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="371 1484, 521 1484" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="371 1514, 521 1514" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="371 1544, 521 1544" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="371" y="934">ISR7</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="371" y="964">ISR6</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="371" y="994">ISR5</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="371" y="1024">ISR4</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="371" y="1054">ISR3</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="371" y="1084">ISR2</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="371" y="1114">ISR1</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="371" y="1144">ISR0</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="371" y="1334">IRR7</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="371" y="1364">IRR6</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="371" y="1394">IRR5</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="371" y="1424">IRR4</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="371" y="1454">IRR3</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="371" y="1484">IRR2</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="371" y="1514">IRR1</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="371" y="1544">IRR0</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="761" x2="721" y1="1334" y2="1334"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="818" y="1334">D0</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="754" y="1333">10</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="761" x2="721" y1="1364" y2="1364"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="818" y="1365">D1</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="754" y="1363">11</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="761" x2="721" y1="1394" y2="1394"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="818" y="1395">D2</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="754" y="1393">12</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="761" x2="721" y1="1424" y2="1424"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="818" y="1425">D3</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="754" y="1423">13</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="761" x2="721" y1="1454" y2="1454"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="819" y="1455">D4</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="740" y="1452">1</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="761" x2="721" y1="1484" y2="1484"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="819" y="1487">D5</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="740" y="1482">2</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="761" x2="721" y1="1514" y2="1514"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="818" y="1516">D6</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="740" y="1512">3</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="761" x2="721" y1="1544" y2="1544"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="818" y="1547">D7</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="740" y="1542">4</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="761" x2="721" y1="1574" y2="1574"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="831" y="1574">^EI</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="740" y="1572">5</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="921" x2="971" y1="1484" y2="1484"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="888" y="1484">EO</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="938" y="1484">15</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="921" x2="971" y1="1454" y2="1454"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="888" y="1454">GS</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="938" y="1454">14</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="921" x2="971" y1="1394" y2="1394"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="888" y="1394">A2</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="951" y="1393">6</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="921" x2="971" y1="1364" y2="1364"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="888" y="1364">A1</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="951" y="1363">7</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="921" x2="971" y1="1334" y2="1334"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="888" y="1334">A0</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="951" y="1333">9</text>
<circle cx="765" cy="1334" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="765" cy="1364" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="765" cy="1483" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="767" cy="1544" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="767" cy="1574" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="766" cy="1453" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="765" cy="1394" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="765" cy="1513" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="765" cy="1423" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<rect fill="#ffffff" fill-opacity="0.5" height="295" stroke="#000000" stroke-width="5" width="150" x="772" y="1307"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="836" y="1296">U15</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="774" y="1653">74LS148D</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="761" x2="721" y1="934" y2="934"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="818" y="934">D0</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="754" y="933">10</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="761" x2="721" y1="964" y2="964"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="818" y="965">D1</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="754" y="963">11</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="761" x2="721" y1="994" y2="994"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="818" y="995">D2</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="754" y="993">12</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="761" x2="721" y1="1024" y2="1024"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="818" y="1025">D3</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="754" y="1023">13</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="761" x2="721" y1="1054" y2="1054"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="819" y="1055">D4</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="740" y="1052">1</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="761" x2="721" y1="1084" y2="1084"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="819" y="1087">D5</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="740" y="1082">2</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="761" x2="721" y1="1114" y2="1114"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="818" y="1116">D6</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="740" y="1112">3</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="761" x2="721" y1="1144" y2="1144"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="818" y="1147">D7</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="740" y="1142">4</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="761" x2="721" y1="1174" y2="1174"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="831" y="1174">^EI</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="740" y="1172">5</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="921" x2="971" y1="1084" y2="1084"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="888" y="1084">EO</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="938" y="1084">15</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="921" x2="971" y1="1054" y2="1054"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="888" y="1054">GS</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="938" y="1054">14</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="921" x2="971" y1="994" y2="994"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="888" y="994">A2</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="951" y="993">6</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="921" x2="971" y1="964" y2="964"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="888" y="964">A1</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="951" y="963">7</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="921" x2="971" y1="934" y2="934"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="888" y="934">A0</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="951" y="933">9</text>
<circle cx="765" cy="934" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="765" cy="964" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="765" cy="1083" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="767" cy="1144" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="767" cy="1174" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="766" cy="1053" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="765" cy="994" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="765" cy="1113" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="765" cy="1023" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<rect fill="#ffffff" fill-opacity="0.5" height="295" stroke="#000000" stroke-width="5" width="150" x="772" y="907"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="836" y="896">U7</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="774" y="1253">74LS148D</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1771" x2="1721" y1="934" y2="934"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1814" y="934">A3</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1756" y="934">15</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1771" x2="1721" y1="964" y2="964"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1814" y="964">B3</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1742" y="963">1</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1771" x2="1721" y1="994" y2="994"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1814" y="994">A2</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1756" y="994">13</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1771" x2="1721" y1="1024" y2="1024"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1814" y="1024">B2</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1756" y="1024">14</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1771" x2="1721" y1="1084" y2="1084"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1814" y="1084">A1</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1756" y="1084">12</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1771" x2="1721" y1="1114" y2="1114"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1814" y="1114">B1</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1756" y="1114">11</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1771" x2="1721" y1="1144" y2="1144"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1814" y="1144">A0</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1756" y="1144">10</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1771" x2="1721" y1="1174" y2="1174"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1814" y="1174">B0</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1742" y="1175">9</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1771" x2="1721" y1="1244" y2="1244"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1843" y="1244">AGTB</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1741" y="1245">4</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1771" x2="1721" y1="1274" y2="1274"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1843" y="1274">AEQB</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1741" y="1275">3</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1771" x2="1721" y1="1304" y2="1304"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1843" y="1304">ALTB</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1742" y="1304">2</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1921" x2="1971" y1="994" y2="994"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="1878" y="994">OALTB</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1948" y="994">7</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1921" x2="1971" y1="964" y2="964"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="1878" y="964">OAEQB</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1948" y="964">6</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1921" x2="1971" y1="934" y2="934"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="1878" y="934">OAGTB</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1948" y="934">5</text>
<rect fill="#ffffff" fill-opacity="0.5" height="430" stroke="#000000" stroke-width="5" width="150" x="1771" y="904"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="1836" y="893">U1</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="1781" y="1374">74LS85D</text>
<polyline fill="none" points="971 994, 1721 994" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="971 964, 1671 964, 1671 1084, 1721 1084" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="971 934, 1641 934, 1641 1144, 1721 1144" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="971 1334, 1521 1334, 1521 1174, 1721 1174" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="971 1364, 1491 1364, 1491 1114, 1721 1114" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="971 1394, 1461 1394, 1461 1024, 1721 1024" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1461 1394, 1461 1694, 2221 1694, 3271 1694" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1491 1364, 1491 1594, 2221 1594, 3271 1594" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1521 1334, 1521 1494, 2221 1494, 3271 1494" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2671 964, 2921 964" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polygon fill="#ffff80" points="3271 994, 3271 969, 3396 969, 3421 994, 3396 1019, 3271 1019, 3271 994" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="3271" y="994">INTR</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="581" x2="521" y1="934" y2="934"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="661" x2="721" y1="934" y2="934"/>
<circle cx="657" cy="934" fill="none" r="5" stroke="#000000" stroke-width="5"/>
<polygon fill="#ffffff" fill-opacity="0.5" points="581 884, 581 984, 651 934, 581 884" stroke="#000000" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="601" y="898">U11</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="581" y="1030">NOT</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="581" x2="521" y1="964" y2="964"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="661" x2="721" y1="964" y2="964"/>
<circle cx="657" cy="964" fill="none" r="5" stroke="#000000" stroke-width="5"/>
<polygon fill="#ffffff" fill-opacity="0.5" points="581 914, 581 1014, 651 964, 581 914" stroke="#000000" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="601" y="928">U12</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="581" y="1060">NOT</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="581" x2="521" y1="994" y2="994"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="661" x2="721" y1="994" y2="994"/>
<circle cx="657" cy="994" fill="none" r="5" stroke="#000000" stroke-width="5"/>
<polygon fill="#ffffff" fill-opacity="0.5" points="581 944, 581 1044, 651 994, 581 944" stroke="#000000" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="601" y="958">U13</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="581" y="1090">NOT</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="581" x2="521" y1="1024" y2="1024"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="661" x2="721" y1="1024" y2="1024"/>
<circle cx="657" cy="1024" fill="none" r="5" stroke="#000000" stroke-width="5"/>
<polygon fill="#ffffff" fill-opacity="0.5" points="581 974, 581 1074, 651 1024, 581 974" stroke="#000000" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="601" y="988">U14</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="581" y="1120">NOT</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="581" x2="521" y1="1054" y2="1054"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="661" x2="721" y1="1054" y2="1054"/>
<circle cx="657" cy="1054" fill="none" r="5" stroke="#000000" stroke-width="5"/>
<polygon fill="#ffffff" fill-opacity="0.5" points="581 1004, 581 1104, 651 1054, 581 1004" stroke="#000000" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="601" y="1018">U16</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="581" y="1150">NOT</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="581" x2="521" y1="1084" y2="1084"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="661" x2="721" y1="1084" y2="1084"/>
<circle cx="657" cy="1084" fill="none" r="5" stroke="#000000" stroke-width="5"/>
<polygon fill="#ffffff" fill-opacity="0.5" points="581 1034, 581 1134, 651 1084, 581 1034" stroke="#000000" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="601" y="1048">U17</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="581" y="1180">NOT</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="581" x2="521" y1="1114" y2="1114"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="661" x2="721" y1="1114" y2="1114"/>
<circle cx="657" cy="1114" fill="none" r="5" stroke="#000000" stroke-width="5"/>
<polygon fill="#ffffff" fill-opacity="0.5" points="581 1064, 581 1164, 651 1114, 581 1064" stroke="#000000" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="601" y="1078">U18</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="581" y="1210">NOT</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="581" x2="521" y1="1144" y2="1144"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="661" x2="721" y1="1144" y2="1144"/>
<circle cx="657" cy="1144" fill="none" r="5" stroke="#000000" stroke-width="5"/>
<polygon fill="#ffffff" fill-opacity="0.5" points="581 1094, 581 1194, 651 1144, 581 1094" stroke="#000000" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="601" y="1108">U19</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="581" y="1240">NOT</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="581" x2="521" y1="1334" y2="1334"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="661" x2="721" y1="1334" y2="1334"/>
<circle cx="657" cy="1334" fill="none" r="5" stroke="#000000" stroke-width="5"/>
<polygon fill="#ffffff" fill-opacity="0.5" points="581 1284, 581 1384, 651 1334, 581 1284" stroke="#000000" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="601" y="1298">U21</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="581" y="1430">NOT</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="581" x2="521" y1="1364" y2="1364"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="661" x2="721" y1="1364" y2="1364"/>
<circle cx="657" cy="1364" fill="none" r="5" stroke="#000000" stroke-width="5"/>
<polygon fill="#ffffff" fill-opacity="0.5" points="581 1314, 581 1414, 651 1364, 581 1314" stroke="#000000" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="601" y="1328">U22</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="581" y="1460">NOT</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="581" x2="521" y1="1394" y2="1394"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="661" x2="721" y1="1394" y2="1394"/>
<circle cx="657" cy="1394" fill="none" r="5" stroke="#000000" stroke-width="5"/>
<polygon fill="#ffffff" fill-opacity="0.5" points="581 1344, 581 1444, 651 1394, 581 1344" stroke="#000000" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="601" y="1358">U23</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="581" y="1490">NOT</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="581" x2="521" y1="1424" y2="1424"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="661" x2="721" y1="1424" y2="1424"/>
<circle cx="657" cy="1424" fill="none" r="5" stroke="#000000" stroke-width="5"/>
<polygon fill="#ffffff" fill-opacity="0.5" points="581 1374, 581 1474, 651 1424, 581 1374" stroke="#000000" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="601" y="1388">U24</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="581" y="1520">NOT</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="581" x2="521" y1="1454" y2="1454"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="661" x2="721" y1="1454" y2="1454"/>
<circle cx="657" cy="1454" fill="none" r="5" stroke="#000000" stroke-width="5"/>
<polygon fill="#ffffff" fill-opacity="0.5" points="581 1404, 581 1504, 651 1454, 581 1404" stroke="#000000" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="601" y="1418">U25</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="581" y="1550">NOT</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="581" x2="521" y1="1484" y2="1484"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="661" x2="721" y1="1484" y2="1484"/>
<circle cx="657" cy="1484" fill="none" r="5" stroke="#000000" stroke-width="5"/>
<polygon fill="#ffffff" fill-opacity="0.5" points="581 1434, 581 1534, 651 1484, 581 1434" stroke="#000000" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="601" y="1448">U26</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="581" y="1580">NOT</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="581" x2="521" y1="1514" y2="1514"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="661" x2="721" y1="1514" y2="1514"/>
<circle cx="657" cy="1514" fill="none" r="5" stroke="#000000" stroke-width="5"/>
<polygon fill="#ffffff" fill-opacity="0.5" points="581 1464, 581 1564, 651 1514, 581 1464" stroke="#000000" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="601" y="1478">U27</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="581" y="1610">NOT</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="581" x2="521" y1="1544" y2="1544"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="661" x2="721" y1="1544" y2="1544"/>
<circle cx="657" cy="1544" fill="none" r="5" stroke="#000000" stroke-width="5"/>
<polygon fill="#ffffff" fill-opacity="0.5" points="581 1494, 581 1594, 651 1544, 581 1494" stroke="#000000" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="601" y="1508">U28</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="581" y="1640">NOT</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2981" x2="2921" y1="964" y2="964"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2981" x2="2921" y1="1024" y2="1024"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="3111" x2="3171" y1="994" y2="994"/>
<path d="M3059 942 A 47 47 0 1 1 3059 1035" fill="none" stroke="#000000" stroke-linecap="round" stroke-width="5"/>
<polyline fill="none" points="3060 1036, 2981 1036, 2981 942, 3060 942" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="3022" y="936">U2</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="3005" y="1082">AND</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1181" x2="1121" y1="1894" y2="1894"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1261" x2="1321" y1="1894" y2="1894"/>
<circle cx="1257" cy="1894" fill="none" r="5" stroke="#000000" stroke-width="5"/>
<polygon fill="#ffffff" fill-opacity="0.5" points="1181 1844, 1181 1944, 1251 1894, 1181 1844" stroke="#000000" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="1201" y="1858">U4</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="1181" y="1990">NOT</text>
<polyline fill="none" points="971 1454, 1121 1454, 1121 1894" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000080" font-family="宋体" font-size="25" font-weight="400" text-anchor="start" x="981" y="1444">GS=0表示有外部中断请求</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1131" x2="1071" y1="1084" y2="1084"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1211" x2="1271" y1="1084" y2="1084"/>
<circle cx="1207" cy="1084" fill="none" r="5" stroke="#000000" stroke-width="5"/>
<polygon fill="#ffffff" fill-opacity="0.5" points="1131 1034, 1131 1134, 1201 1084, 1131 1034" stroke="#000000" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="1151" y="1048">U5</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="1131" y="1180">NOT</text>
<polyline fill="none" points="971 1084, 1071 1084" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1721 1244, 1271 1244, 1271 1084" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="微软雅黑" font-size="250" font-weight="700" text-anchor="start" x="501" y="314">PR优先级判别器</text>
<text alignment-baseline="after-edge" fill="#000080" font-family="宋体" font-size="25" font-weight="400" text-anchor="start" x="2121" y="1194">AGTB AEQB ALTB OAGTB OAEQB OALTB</text>
<text alignment-baseline="after-edge" fill="#000080" font-family="宋体" font-size="25" font-weight="400" text-anchor="start" x="2121" y="1294">0 0 0 1 0 1</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2081" x2="2021" y1="994" y2="994"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2161" x2="2221" y1="994" y2="994"/>
<circle cx="2157" cy="994" fill="none" r="5" stroke="#000000" stroke-width="5"/>
<polygon fill="#ffffff" fill-opacity="0.5" points="2081 944, 2081 1044, 2151 994, 2081 944" stroke="#000000" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="2101" y="958">U8</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="2081" y="1090">NOT</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2481" x2="2421" y1="934" y2="934"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2481" x2="2421" y1="994" y2="994"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2611" x2="2671" y1="964" y2="964"/>
<path d="M2559 912 A 47 47 0 0 1 2559 1005" fill="none" stroke="#000000" stroke-linecap="round" stroke-width="5"/>
<polyline fill="none" points="2560 1006, 2481 1006, 2481 912, 2560 912" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="2522" y="906">U20</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="2505" y="1052">AND</text>
<text alignment-baseline="after-edge" fill="#000080" font-family="宋体" font-size="25" font-weight="400" text-anchor="start" x="2261" y="824">A&gt;B,有更高优先级的中断请求</text>
<text alignment-baseline="after-edge" fill="#000080" font-family="宋体" font-size="25" font-weight="400" text-anchor="start" x="2121" y="1144">A=B时输入输出逻辑关系</text>
<polyline fill="none" points="1971 994, 2021 994" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000080" font-family="微软雅黑" font-size="60" font-weight="700" text-anchor="start" x="921" y="514">固定优先级,0级中断优先级最高</text>
<polygon fill="#ffff80" points="3271 1494, 3271 1469, 3396 1469, 3421 1494, 3396 1519, 3271 1519, 3271 1494" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="3271" y="1494">IRNM0</text>
<polygon fill="#ffff80" points="3271 1594, 3271 1569, 3396 1569, 3421 1594, 3396 1619, 3271 1619, 3271 1594" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="3271" y="1594">IRNM1</text>
<polygon fill="#ffff80" points="3271 1694, 3271 1669, 3396 1669, 3421 1694, 3396 1719, 3271 1719, 3271 1694" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="3271" y="1694">IRNM2</text>
<polyline fill="none" points="1971 934, 2421 934" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2221 994, 2421 994" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1321 1894, 2871 1894, 2871 1024, 2921 1024" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="3171 994, 3271 994" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<circle cx="1521" cy="1334" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1491" cy="1364" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1461" cy="1394" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
</svg>
添加文件
这个 源代码变更 因为 太大 而不能显示。 你可以 浏览blob
/*******************************************************************************
*******************************************************************************/
#define _CRT_SECURE_NO_WARNINGS
#define _CRT_NONSTDC_NO_DEPRECATE
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
typedef unsigned char BYTE;
typedef long BOOL;
#define FALSE 0
#define TRUE 1
#define MAX_LINE_LENGTH 256 // 一行代码最多可以有多少个字符
#define MAX_LINE_COUNT 1024 // 源代码文件最多可以有多少行
#define MAX_SYMBOL_LENGTH 64 // 一个符号最多可以包含多少个字符
#define MAX_SYMBOL_COUNT 256 // 源代码文件中最多可以包含多少个符号
#ifndef MAX_PATH
#define MAX_PATH 256 // 文件路径最多可以包含多少个字符
#endif
// 代码行数据库。记录源代码文件中所有代码行的信息(包括注释行、空行)
struct LINE_RECORD
{
char line_string[MAX_LINE_LENGTH]; // 代码行的内容
unsigned long line_num; // 行号
unsigned long address; // 此行代码转换的机器码在映像文件中的地址(偏移)
int machine_code_count; // 此行代码转换的机器码的字节数量
unsigned long flag; // 代码行标志位,32位
};
struct LINE_RECORD line_database[MAX_LINE_COUNT] = {0};
int line_count = 0;
int machine_code_line_count = 0; // 记录产生了机器码的代码行的数量
// 在此定义所有的代码行标志位。注意,代码行标志位是按位或的关系。
#define LF_INSTRUCTION 0x00000001 // 代码行标志位的最低位是1,表示此行是一条指令,否则表示此行是数据
// 重定位表。如果指令中使用了标号、变量名等符号,在第一次扫描时无法确定他们的地址,需要
// 在第二次扫描时进行重定位。
struct REALLOCATE
{
unsigned long address; // 第一次扫描时,在这里记录了需要重定位的机器码的地址(偏移),
// 第二次扫描时,根据符号的地址进行重定位。
char symbol_name[MAX_SYMBOL_LENGTH]; // 需要重定位的符号名称。
int line_num; // 行号。
};
struct REALLOCATE reallocate_table[MAX_LINE_COUNT] = {0};
int reallocate_count = 0;
// 符号表。符号包括源代码中的标号、变量名。
struct SYMBOL
{
char name[MAX_SYMBOL_LENGTH]; // 符号名称
unsigned long address; // 符号表示的地址。重定位时需要用到。
int machine_code_count; // 符号生成的机器码的数量(以字节为单位)。
int line_num; // 行号
int ref_count; // 引用计数
};
struct SYMBOL symbol_table[MAX_SYMBOL_COUNT] = {0};
int symbol_count = 0;
// 汇编过程的状态
enum
{
AS_BEGIN // 起始状态。在遇到代码段名称前,处于此状态
,AS_TEXT // 正在处理代码段。遇到代码段名称后,遇到数据的名称前,处于此状态
,AS_DATA // 正在处理数据段。遇到数据段名称后,处于此状态
};
unsigned long assembler_state = AS_BEGIN;
//
// 在下面定义所有的关键字
//
// 段名称
const char* code_section_keyword = ".text"; // 代码段标志
char const* data_section_keyword = ".data"; // 数据段标志
// 指令名称
const char* mov_instruction_keyword = "mov";
const char* jmp_instruction_keyword = "jmp";
const char* add_instruction_keyword = "add";
const char* adc_instruction_keyword = "adc";
const char* sub_instruction_keyword = "sub";
const char* sbb_instruction_keyword = "sbb";
const char* and_instruction_keyword = "and";
const char* or_instruction_keyword = "or";
const char* read_instruction_keyword = "read";
const char* write_instruction_keyword = "write";
const char* jc_instruction_keyword = "jc";
const char* jz_instruction_keyword = "jz";
const char* call_instruction_keyword = "call";
const char* in_instruction_keyword = "in";
const char* out_instruction_keyword = "out";
const char* ret_instruction_keyword = "ret";
const char* shr_instruction_keyword = "shr";
const char* shl_instruction_keyword = "shl";
const char* rcr_instruction_keyword = "rcr";
const char* rcl_instruction_keyword = "rcl";
const char* not_instruction_keyword = "not";
const char* iret_instruction_keyword = "iret";
const char* nop_instruction_keyword = "nop";
const char* int_instruction_keyword = "int";
const char* lea_instruction_keyword = "lea";
// 通用寄存器名称
const char* r0_register_keyword = "r0";
const char* r1_register_keyword = "r1";
const char* r2_register_keyword = "r2";
const char* r3_register_keyword = "r3";
const char* r0_register_indirect_keyword = "[r0]";
const char* r1_register_indirect_keyword = "[r1]";
const char* r2_register_indirect_keyword = "[r2]";
const char* r3_register_indirect_keyword = "[r3]";
const char* a_register_keyword = "a";
const char* sp_register_keyword = "sp";
const char* delimit_char = "\n\t\r "; // 需要忽略的空白字符
const char* delimit_char_comma = "\n\t\r, "; // 需要忽略的空白字符,包括英文逗号
// 汇编产生的机器码
#define MAX_MACHINE_CODE 1024
BYTE machine_code[MAX_MACHINE_CODE];
unsigned long machine_code_address = 0;
unsigned long machine_code_old_address = 0;
const char* assembly_file_name = NULL; // 汇编文件路径
const char* target_file_name = NULL; // 目标文件路径
const char* list_file_name = NULL; // 列表文件路径
const char* dbg_file_name = NULL; // 调试信息文件路径
const unsigned long dbg_file_magic = 58;
const unsigned long dbg_file_version = 1;
// 输出汇编过程中发现的语法错误信息
void error_msg(const char* error_msg, int line_num)
{
if(line_num >= 1)
{
printf("%s:%d: error: %s\n", assembly_file_name, line_num, error_msg);
}
else
{
printf("%s: error: %s\n", assembly_file_name, error_msg);
}
exit(1);
}
char formated_msg[1024]; // 将格式化后的错误信息放在此字符串中。
void error_msg_miss_op(const char* instruction_name, int line_num)
{
sprintf(formated_msg, "%s 指令缺少操作数。", instruction_name);
error_msg(formated_msg, line_num);
}
void error_msg_wrong_op(const char* instruction_name, int line_num)
{
sprintf(formated_msg, "%s 指令不支持这样的操作数。", instruction_name);
error_msg(formated_msg, line_num);
}
void error_msg_same_symbol(const char* symbol, int line_num, int ref_line_num)
{
sprintf(formated_msg, "符号 %s 重复定义。参见第 %d 行。", symbol, ref_line_num);
error_msg(formated_msg, line_num);
}
void error_msg_keyword_symbol(const char* symbol, int line_num)
{
sprintf(formated_msg, "不能使用保留的关键字 %s 作为符号名称。", symbol);
error_msg(formated_msg, line_num);
}
void error_msg_wrong_data(const char* data, int line_num)
{
sprintf(formated_msg, "%s 不是有效的数据。", data);
error_msg(formated_msg, line_num);
}
// 输出汇编过程中发现的警告信息
void warning_msg(const char* warning_msg, int line_num)
{
if(line_num >= 1)
{
printf("%s:%d: warning: %s\n", assembly_file_name, line_num, warning_msg);
}
else
{
printf("%s: warning: %s\n", assembly_file_name, warning_msg);
}
}
void warning_msg_invalid_line(int line_num)
{
warning_msg("忽略无效的代码行。", line_num);
}
void warning_msg_unref_symbol(const char* symbol, int line_num)
{
sprintf(formated_msg, "符号 %s 未被引用。", symbol);
warning_msg(formated_msg, line_num);
}
// 判断是否是立即数。如果是数字开头,或者是负号开头的,就认为是立即数。
int is_immediate(const char* token)
{
return (isdigit(token[0]) || '-' == token[0]) ? 1 : 0;
}
// 判断是否是主存数据
int is_main_memory(const char* token)
{
return (isdigit(token[0]) || '@' == token[0]) ? 1 : 0;
}
// 指令操作数类型
enum
{
OT_REGISTER_A // 累加器
,OT_REGISTER_R0 // r0
,OT_REGISTER_R1 // r1
,OT_REGISTER_R2 // r2
,OT_REGISTER_R3 // r3
,OT_REGISTER_R0_INDIRECT // [r0]
,OT_REGISTER_R1_INDIRECT // [r1]
,OT_REGISTER_R2_INDIRECT // [r2]
,OT_REGISTER_R3_INDIRECT // [r3]
,OT_IMMEDIATE // 立即数
,OT_SYMBOL // 符号
,OT_REGISTER_SP // 堆栈指针寄存器
};
// 得到指令操作数的类型
unsigned long get_operand_type(const char* op)
{
unsigned long op_type;
if(stricmp(op, a_register_keyword) == 0)
{
op_type = OT_REGISTER_A;
}
else if(stricmp(op, r0_register_keyword) == 0)
{
op_type = OT_REGISTER_R0;
}
else if(stricmp(op, r1_register_keyword) == 0)
{
op_type = OT_REGISTER_R1;
}
else if(stricmp(op, r2_register_keyword) == 0)
{
op_type = OT_REGISTER_R2;
}
else if(stricmp(op, r3_register_keyword) == 0)
{
op_type = OT_REGISTER_R3;
}
else if(stricmp(op, r0_register_indirect_keyword) == 0)
{
op_type = OT_REGISTER_R0_INDIRECT;
}
else if(stricmp(op, r1_register_indirect_keyword) == 0)
{
op_type = OT_REGISTER_R1_INDIRECT;
}
else if(stricmp(op, r2_register_indirect_keyword) == 0)
{
op_type = OT_REGISTER_R2_INDIRECT;
}
else if(stricmp(op, r3_register_indirect_keyword) == 0)
{
op_type = OT_REGISTER_R3_INDIRECT;
}
else if (stricmp(op, sp_register_keyword) == 0)
{
op_type = OT_REGISTER_SP;
}
else if(is_immediate(op))
{
op_type = OT_IMMEDIATE;
}
else
{
op_type = OT_SYMBOL;
}
return op_type;
}
// 根据 r? 寄存器和机器码的基础值,得到一个机器码
char get_machine_code_from_r(unsigned long op_type, char code_base)
{
return code_base + (char)(op_type - OT_REGISTER_R0);
}
// 根据 [r?] 寄存器和机器码的基础值,得到一个机器码
char get_machine_code_from_r_indirect(unsigned long op_type, char code_base)
{
return code_base + (char)(op_type - OT_REGISTER_R0_INDIRECT);
}
// 根据立即数得到一个机器码。注意,允许使用负数,所以返回值是带符号的 8 位 char。
char get_machine_code_from_immediate(const char* immediate)
{
char* end;
int start_index = (immediate[0] == '-' ? 1 : 0);
int base = (immediate[start_index] == '0' && (immediate[start_index + 1] == 'x' || immediate[start_index + 1] == 'X')) ? 16 : 10;
return (char)strtol(immediate, &end, base);
}
// 向重定位表中添加一个重定位信息
void add_reallocate(const char* symbol, int line_num)
{
reallocate_table[reallocate_count].address = machine_code_address;
strcpy(reallocate_table[reallocate_count].symbol_name, symbol);
reallocate_table[reallocate_count].line_num = line_num;
reallocate_count++;
}
// mov op1, op2
void parse_mov(int line_num)
{
char *op1, *op2;
unsigned long op1_type, op2_type;
if(assembler_state != AS_TEXT)
{
warning_msg_invalid_line(line_num);
return;
}
op1 = strtok(NULL, delimit_char_comma);
op2 = strtok(NULL, delimit_char);
if(NULL == op1 || NULL == op2)
{
error_msg_miss_op(mov_instruction_keyword, line_num);
}
op1_type = get_operand_type(op1);
op2_type = get_operand_type(op2);
if(OT_REGISTER_A == op1_type
&& (op2_type >= OT_REGISTER_R0 && op2_type <= OT_REGISTER_R3))
{
// mov a, r?
machine_code[machine_code_address] = get_machine_code_from_r(op2_type, 0x70);
machine_code_address++;
}
else if(OT_REGISTER_A == op1_type
&& (op2_type >= OT_REGISTER_R0_INDIRECT && op2_type <= OT_REGISTER_R3_INDIRECT))
{
// mov a, [r?]
machine_code[machine_code_address] = get_machine_code_from_r_indirect(op2_type, 0x74);
machine_code_address++;
}
else if(OT_REGISTER_A == op1_type && OT_SYMBOL == op2_type)
{
// mov a, symbol
machine_code[machine_code_address] = 0x78;
machine_code_address++;
// 重定位
add_reallocate(op2, line_num);
machine_code_address++;
}
else if(OT_REGISTER_A == op1_type && OT_IMMEDIATE == op2_type)
{
// mov a, immediate
machine_code[machine_code_address] = 0x7c;
machine_code_address++;
machine_code[machine_code_address] = get_machine_code_from_immediate(op2);
machine_code_address++;
}
else if((op1_type >= OT_REGISTER_R0 && op1_type <= OT_REGISTER_R3)
&& OT_REGISTER_A == op2_type)
{
// mov r?, a
machine_code[machine_code_address] = get_machine_code_from_r(op1_type, 0x80);
machine_code_address++;
}
else if((op1_type >= OT_REGISTER_R0_INDIRECT && op1_type <= OT_REGISTER_R3_INDIRECT)
&& OT_REGISTER_A == op2_type)
{
// mov [r?], a
machine_code[machine_code_address] = get_machine_code_from_r_indirect(op1_type, 0x84);
machine_code_address++;
}
else if(OT_SYMBOL == op1_type && OT_REGISTER_A == op2_type)
{
// mov symbol, a
machine_code[machine_code_address] = 0x88;
machine_code_address++;
// 重定位
add_reallocate(op1, line_num);
machine_code_address++;
}
else if((op1_type >= OT_REGISTER_R0 && op1_type <= OT_REGISTER_R3)
&& OT_IMMEDIATE == op2_type)
{
// mov r?, immediate
machine_code[machine_code_address] = get_machine_code_from_r(op1_type, 0x8c);
machine_code_address++;
machine_code[machine_code_address] = get_machine_code_from_immediate(op2);
machine_code_address++;
}
else if (OT_REGISTER_SP == op1_type && OT_IMMEDIATE == op2_type)
{
// mov sp, immediate
machine_code[machine_code_address] = 0x9c;
machine_code_address++;
machine_code[machine_code_address] = get_machine_code_from_immediate(op2);
machine_code_address++;
}
else
{
error_msg_wrong_op(mov_instruction_keyword, line_num);
}
//
// 在代码行数据库中,标记此行是一个指令行
//
line_database[line_count].flag |= LF_INSTRUCTION;
}
// jmp symbol
void parse_jmp(int line_num)
{
char *op;
unsigned long op_type;
if(assembler_state != AS_TEXT)
{
warning_msg_invalid_line(line_num);
return;
}
op = strtok(NULL, delimit_char);
if(NULL == op)
{
error_msg_miss_op(jmp_instruction_keyword, line_num);
}
op_type = get_operand_type(op);
if(OT_SYMBOL == op_type)
{
// jmp symbol
machine_code[machine_code_address] = 0xAC;
machine_code_address++;
// 重定位
add_reallocate(op, line_num);
machine_code_address++;
}
else
{
error_msg_wrong_op(jmp_instruction_keyword, line_num);
}
//
// 在代码行数据库中,标记此行是一个指令行
//
line_database[line_count].flag |= LF_INSTRUCTION;
}
// add op1, op2
void parse_add(int line_num)
{
char *op1, *op2;
unsigned long op1_type, op2_type;
if(assembler_state != AS_TEXT)
{
warning_msg_invalid_line(line_num);
return;
}
op1 = strtok(NULL, delimit_char_comma);
op2 = strtok(NULL, delimit_char);
if(NULL == op1 || NULL == op2)
{
error_msg_miss_op(add_instruction_keyword, line_num);
}
op1_type = get_operand_type(op1);
op2_type = get_operand_type(op2);
if(OT_REGISTER_A == op1_type
&& (op2_type >= OT_REGISTER_R0 && op2_type <= OT_REGISTER_R3))
{
// add a, r?
machine_code[machine_code_address] = get_machine_code_from_r(op2_type, 0x10);
machine_code_address++;
}
else if(OT_REGISTER_A == op1_type
&& (op2_type >= OT_REGISTER_R0_INDIRECT && op2_type <= OT_REGISTER_R3_INDIRECT))
{
// add a, [r?]
machine_code[machine_code_address] = get_machine_code_from_r_indirect(op2_type, 0x14);
machine_code_address++;
}
else if(OT_REGISTER_A == op1_type && OT_SYMBOL == op2_type)
{
// add a, symbol
machine_code[machine_code_address] = 0x18;
machine_code_address++;
// 重定位
add_reallocate(op2, line_num);
machine_code_address++;
}
else if(OT_REGISTER_A == op1_type && OT_IMMEDIATE == op2_type)
{
// add a, immediate
machine_code[machine_code_address] = 0x1c;
machine_code_address++;
machine_code[machine_code_address] = get_machine_code_from_immediate(op2);
machine_code_address++;
}
else
{
error_msg_wrong_op(add_instruction_keyword, line_num);
}
//
// 在代码行数据库中,标记此行是一个指令行
//
line_database[line_count].flag |= LF_INSTRUCTION;
}
// adc op1, op2
void parse_adc(int line_num)
{
char *op1, *op2;
unsigned long op1_type, op2_type;
if(assembler_state != AS_TEXT)
{
warning_msg_invalid_line(line_num);
return;
}
op1 = strtok(NULL, delimit_char_comma);
op2 = strtok(NULL, delimit_char);
if(NULL == op1 || NULL == op2)
{
error_msg_miss_op(adc_instruction_keyword, line_num);
}
op1_type = get_operand_type(op1);
op2_type = get_operand_type(op2);
if(OT_REGISTER_A == op1_type
&& (op2_type >= OT_REGISTER_R0 && op2_type <= OT_REGISTER_R3))
{
// adc a, r?
machine_code[machine_code_address] = get_machine_code_from_r(op2_type, 0x20);
machine_code_address++;
}
else if(OT_REGISTER_A == op1_type
&& (op2_type >= OT_REGISTER_R0_INDIRECT && op2_type <= OT_REGISTER_R3_INDIRECT))
{
// adc a, [r?]
machine_code[machine_code_address] = get_machine_code_from_r_indirect(op2_type, 0x24);
machine_code_address++;
}
else if(OT_REGISTER_A == op1_type && OT_SYMBOL == op2_type)
{
// adc a, symbol
machine_code[machine_code_address] = 0x28;
machine_code_address++;
// 重定位
add_reallocate(op2, line_num);
machine_code_address++;
}
else if(OT_REGISTER_A == op1_type && OT_IMMEDIATE == op2_type)
{
// adc a, immediate
machine_code[machine_code_address] = 0x2c;
machine_code_address++;
machine_code[machine_code_address] = get_machine_code_from_immediate(op2);
machine_code_address++;
}
else
{
error_msg_wrong_op(adc_instruction_keyword, line_num);
}
//
// 在代码行数据库中,标记此行是一个指令行
//
line_database[line_count].flag |= LF_INSTRUCTION;
}
// sub op1, op2
void parse_sub(int line_num)
{
char *op1, *op2;
unsigned long op1_type, op2_type;
if(assembler_state != AS_TEXT)
{
warning_msg_invalid_line(line_num);
return;
}
op1 = strtok(NULL, delimit_char_comma);
op2 = strtok(NULL, delimit_char);
if(NULL == op1 || NULL == op2)
{
error_msg_miss_op(sub_instruction_keyword, line_num);
}
op1_type = get_operand_type(op1);
op2_type = get_operand_type(op2);
if(OT_REGISTER_A == op1_type
&& (op2_type >= OT_REGISTER_R0 && op2_type <= OT_REGISTER_R3))
{
// sub a, r?
machine_code[machine_code_address] = get_machine_code_from_r(op2_type, 0x30);
machine_code_address++;
}
else if(OT_REGISTER_A == op1_type
&& (op2_type >= OT_REGISTER_R0_INDIRECT && op2_type <= OT_REGISTER_R3_INDIRECT))
{
// sub a, [r?]
machine_code[machine_code_address] = get_machine_code_from_r_indirect(op2_type, 0x34);
machine_code_address++;
}
else if(OT_REGISTER_A == op1_type && OT_SYMBOL == op2_type)
{
// sub a, symbol
machine_code[machine_code_address] = 0x38;
machine_code_address++;
// 重定位
add_reallocate(op2, line_num);
machine_code_address++;
}
else if(OT_REGISTER_A == op1_type && OT_IMMEDIATE == op2_type)
{
// sub a, immediate
machine_code[machine_code_address] = 0x3c;
machine_code_address++;
machine_code[machine_code_address] = get_machine_code_from_immediate(op2);
machine_code_address++;
}
else
{
error_msg_wrong_op(sub_instruction_keyword, line_num);
}
//
// 在代码行数据库中,标记此行是一个指令行
//
line_database[line_count].flag |= LF_INSTRUCTION;
}
// sbb op1, op2
void parse_sbb(int line_num)
{
char *op1, *op2;
unsigned long op1_type, op2_type;
if(assembler_state != AS_TEXT)
{
warning_msg_invalid_line(line_num);
return;
}
op1 = strtok(NULL, delimit_char_comma);
op2 = strtok(NULL, delimit_char);
if(NULL == op1 || NULL == op2)
{
error_msg_miss_op(sbb_instruction_keyword, line_num);
}
op1_type = get_operand_type(op1);
op2_type = get_operand_type(op2);
if(OT_REGISTER_A == op1_type
&& (op2_type >= OT_REGISTER_R0 && op2_type <= OT_REGISTER_R3))
{
// sbb a, r?
machine_code[machine_code_address] = get_machine_code_from_r(op2_type, 0x40);
machine_code_address++;
}
else if(OT_REGISTER_A == op1_type
&& (op2_type >= OT_REGISTER_R0_INDIRECT && op2_type <= OT_REGISTER_R3_INDIRECT))
{
// sbb a, [r?]
machine_code[machine_code_address] = get_machine_code_from_r_indirect(op2_type, 0x44);
machine_code_address++;
}
else if(OT_REGISTER_A == op1_type && OT_SYMBOL == op2_type)
{
// sbb a, symbol
machine_code[machine_code_address] = 0x48;
machine_code_address++;
// 重定位
add_reallocate(op2, line_num);
machine_code_address++;
}
else if(OT_REGISTER_A == op1_type && OT_IMMEDIATE == op2_type)
{
// sbb a, immediate
machine_code[machine_code_address] = 0x4c;
machine_code_address++;
machine_code[machine_code_address] = get_machine_code_from_immediate(op2);
machine_code_address++;
}
else
{
error_msg_wrong_op(sbb_instruction_keyword, line_num);
}
//
// 在代码行数据库中,标记此行是一个指令行
//
line_database[line_count].flag |= LF_INSTRUCTION;
}
// and op1, op2
void parse_and(int line_num)
{
char *op1, *op2;
unsigned long op1_type, op2_type;
if(assembler_state != AS_TEXT)
{
warning_msg_invalid_line(line_num);
return;
}
op1 = strtok(NULL, delimit_char_comma);
op2 = strtok(NULL, delimit_char);
if(NULL == op1 || NULL == op2)
{
error_msg_miss_op(and_instruction_keyword, line_num);
}
op1_type = get_operand_type(op1);
op2_type = get_operand_type(op2);
if(OT_REGISTER_A == op1_type
&& (op2_type >= OT_REGISTER_R0 && op2_type <= OT_REGISTER_R3))
{
// and a, r?
machine_code[machine_code_address] = get_machine_code_from_r(op2_type, 0x50);
machine_code_address++;
}
else if(OT_REGISTER_A == op1_type
&& (op2_type >= OT_REGISTER_R0_INDIRECT && op2_type <= OT_REGISTER_R3_INDIRECT))
{
// and a, [r?]
machine_code[machine_code_address] = get_machine_code_from_r_indirect(op2_type, 0x54);
machine_code_address++;
}
else if(OT_REGISTER_A == op1_type && OT_SYMBOL == op2_type)
{
// and a, symbol
machine_code[machine_code_address] = 0x58;
machine_code_address++;
// 重定位
add_reallocate(op2, line_num);
machine_code_address++;
}
else if(OT_REGISTER_A == op1_type && OT_IMMEDIATE == op2_type)
{
// and a, immediate
machine_code[machine_code_address] = 0x5c;
machine_code_address++;
machine_code[machine_code_address] = get_machine_code_from_immediate(op2);
machine_code_address++;
}
else
{
error_msg_wrong_op(and_instruction_keyword, line_num);
}
//
// 在代码行数据库中,标记此行是一个指令行
//
line_database[line_count].flag |= LF_INSTRUCTION;
}
// or op1, op2
void parse_or(int line_num)
{
char *op1, *op2;
unsigned long op1_type, op2_type;
if(assembler_state != AS_TEXT)
{
warning_msg_invalid_line(line_num);
return;
}
op1 = strtok(NULL, delimit_char_comma);
op2 = strtok(NULL, delimit_char);
if(NULL == op1 || NULL == op2)
{
error_msg_miss_op(or_instruction_keyword, line_num);
}
op1_type = get_operand_type(op1);
op2_type = get_operand_type(op2);
if(OT_REGISTER_A == op1_type
&& (op2_type >= OT_REGISTER_R0 && op2_type <= OT_REGISTER_R3))
{
// or a, r?
machine_code[machine_code_address] = get_machine_code_from_r(op2_type, 0x60);
machine_code_address++;
}
else if(OT_REGISTER_A == op1_type
&& (op2_type >= OT_REGISTER_R0_INDIRECT && op2_type <= OT_REGISTER_R3_INDIRECT))
{
// or a, [r?]
machine_code[machine_code_address] = get_machine_code_from_r_indirect(op2_type, 0x64);
machine_code_address++;
}
else if(OT_REGISTER_A == op1_type && OT_SYMBOL == op2_type)
{
// or a, symbol
machine_code[machine_code_address] = 0x68;
machine_code_address++;
// 重定位
add_reallocate(op2, line_num);
machine_code_address++;
}
else if(OT_REGISTER_A == op1_type && OT_IMMEDIATE == op2_type)
{
// or a, immediate
machine_code[machine_code_address] = 0x6c;
machine_code_address++;
machine_code[machine_code_address] = get_machine_code_from_immediate(op2);
machine_code_address++;
}
else
{
error_msg_wrong_op(or_instruction_keyword, line_num);
}
//
// 在代码行数据库中,标记此行是一个指令行
//
line_database[line_count].flag |= LF_INSTRUCTION;
}
// lea a, symbol
void parse_lea(int line_num)
{
char *op1, *op2;
unsigned long op1_type, op2_type;
if(assembler_state != AS_TEXT)
{
warning_msg_invalid_line(line_num);
return;
}
op1 = strtok(NULL, delimit_char_comma);
op2 = strtok(NULL, delimit_char);
if(NULL == op1 || NULL == op2)
{
error_msg_miss_op(lea_instruction_keyword, line_num);
}
op1_type = get_operand_type(op1);
op2_type = get_operand_type(op2);
if(OT_REGISTER_A == op1_type && OT_SYMBOL == op2_type)
{
// lea a, symbol
machine_code[machine_code_address] = 0x98;
machine_code_address++;
// 重定位
add_reallocate(op2, line_num);
machine_code_address++;
}
else
{
error_msg_wrong_op(lea_instruction_keyword, line_num);
}
//
// 在代码行数据库中,标记此行是一个指令行
//
line_database[line_count].flag |= LF_INSTRUCTION;
}
// read symbol
void parse_read(int line_num)
{
char *op;
unsigned long op_type;
if(assembler_state != AS_TEXT)
{
warning_msg_invalid_line(line_num);
return;
}
op = strtok(NULL, delimit_char);
if(NULL == op)
{
error_msg_miss_op(read_instruction_keyword, line_num);
}
op_type = get_operand_type(op);
if(OT_SYMBOL == op_type)
{
// read symbol
machine_code[machine_code_address] = 0x90;
machine_code_address++;
// 重定位
add_reallocate(op, line_num);
machine_code_address++;
}
else
{
error_msg_wrong_op(read_instruction_keyword, line_num);
}
//
// 在代码行数据库中,标记此行是一个指令行
//
line_database[line_count].flag |= LF_INSTRUCTION;
}
// write symbol
void parse_write(int line_num)
{
char *op;
unsigned long op_type;
if(assembler_state != AS_TEXT)
{
warning_msg_invalid_line(line_num);
return;
}
op = strtok(NULL, delimit_char);
if(NULL == op)
{
error_msg_miss_op(write_instruction_keyword, line_num);
}
op_type = get_operand_type(op);
if(OT_SYMBOL == op_type)
{
// write symbol
machine_code[machine_code_address] = 0x94;
machine_code_address++;
// 重定位
add_reallocate(op, line_num);
machine_code_address++;
}
else
{
error_msg_wrong_op(write_instruction_keyword, line_num);
}
//
// 在代码行数据库中,标记此行是一个指令行
//
line_database[line_count].flag |= LF_INSTRUCTION;
}
// jc symbol
void parse_jc(int line_num)
{
char *op;
unsigned long op_type;
if(assembler_state != AS_TEXT)
{
warning_msg_invalid_line(line_num);
return;
}
op = strtok(NULL, delimit_char);
if(NULL == op)
{
error_msg_miss_op(jc_instruction_keyword, line_num);
}
op_type = get_operand_type(op);
if(OT_SYMBOL == op_type)
{
// jc symbol
machine_code[machine_code_address] = 0xA0;
machine_code_address++;
// 重定位
add_reallocate(op, line_num);
machine_code_address++;
}
else
{
error_msg_wrong_op(jc_instruction_keyword, line_num);
}
//
// 在代码行数据库中,标记此行是一个指令行
//
line_database[line_count].flag |= LF_INSTRUCTION;
}
// jz symbol
void parse_jz(int line_num)
{
char *op;
unsigned long op_type;
if(assembler_state != AS_TEXT)
{
warning_msg_invalid_line(line_num);
return;
}
op = strtok(NULL, delimit_char);
if(NULL == op)
{
error_msg_miss_op(jz_instruction_keyword, line_num);
}
op_type = get_operand_type(op);
if(OT_SYMBOL == op_type)
{
// jz symbol
machine_code[machine_code_address] = 0xA4;
machine_code_address++;
// 重定位
add_reallocate(op, line_num);
machine_code_address++;
}
else
{
error_msg_wrong_op(jz_instruction_keyword, line_num);
}
//
// 在代码行数据库中,标记此行是一个指令行
//
line_database[line_count].flag |= LF_INSTRUCTION;
}
// call symbol
void parse_call(int line_num)
{
char *op;
unsigned long op_type;
if(assembler_state != AS_TEXT)
{
warning_msg_invalid_line(line_num);
return;
}
op = strtok(NULL, delimit_char);
if(NULL == op)
{
error_msg_miss_op(call_instruction_keyword, line_num);
}
op_type = get_operand_type(op);
if(OT_SYMBOL == op_type)
{
// call symbol
machine_code[machine_code_address] = 0xE8;
machine_code_address++;
// 重定位
add_reallocate(op, line_num);
machine_code_address++;
}
else
{
error_msg_wrong_op(call_instruction_keyword, line_num);
}
//
// 在代码行数据库中,标记此行是一个指令行
//
line_database[line_count].flag |= LF_INSTRUCTION;
}
// int immediate
void parse_int(int line_num)
{
char *op;
unsigned long op_type;
if(assembler_state != AS_TEXT)
{
warning_msg_invalid_line(line_num);
return;
}
op = strtok(NULL, delimit_char);
if(NULL == op)
{
error_msg_miss_op(int_instruction_keyword, line_num);
}
op_type = get_operand_type(op);
if(OT_IMMEDIATE == op_type)
{
// int immediate
machine_code[machine_code_address] = 0xB8;
machine_code_address++;
machine_code[machine_code_address] = get_machine_code_from_immediate(op);
machine_code_address++;
}
else
{
error_msg_wrong_op(int_instruction_keyword, line_num);
}
//
// 在代码行数据库中,标记此行是一个指令行
//
line_database[line_count].flag |= LF_INSTRUCTION;
}
// in
void parse_in(int line_num)
{
machine_code[machine_code_address] = 0xB0;
machine_code_address++;
//
// 在代码行数据库中,标记此行是一个指令行
//
line_database[line_count].flag |= LF_INSTRUCTION;
}
// out
void parse_out(int line_num)
{
machine_code[machine_code_address] = 0xB4;
machine_code_address++;
//
// 在代码行数据库中,标记此行是一个指令行
//
line_database[line_count].flag |= LF_INSTRUCTION;
}
// ret
void parse_ret(int line_num)
{
machine_code[machine_code_address] = 0xC8;
machine_code_address++;
//
// 在代码行数据库中,标记此行是一个指令行
//
line_database[line_count].flag |= LF_INSTRUCTION;
}
// shr a
void parse_shr(int line_num)
{
char *op;
unsigned long op_type;
if(assembler_state != AS_TEXT)
{
warning_msg_invalid_line(line_num);
return;
}
op = strtok(NULL, delimit_char);
if(NULL == op)
{
error_msg_miss_op(shr_instruction_keyword, line_num);
}
op_type = get_operand_type(op);
if(OT_REGISTER_A == op_type)
{
machine_code[machine_code_address] = 0xD0;
machine_code_address++;
}
else
{
error_msg_wrong_op(shr_instruction_keyword, line_num);
}
//
// 在代码行数据库中,标记此行是一个指令行
//
line_database[line_count].flag |= LF_INSTRUCTION;
}
// shl a
void parse_shl(int line_num)
{
char *op;
unsigned long op_type;
if(assembler_state != AS_TEXT)
{
warning_msg_invalid_line(line_num);
return;
}
op = strtok(NULL, delimit_char);
if(NULL == op)
{
error_msg_miss_op(shl_instruction_keyword, line_num);
}
op_type = get_operand_type(op);
if(OT_REGISTER_A == op_type)
{
machine_code[machine_code_address] = 0xD4;
machine_code_address++;
}
else
{
error_msg_wrong_op(shl_instruction_keyword, line_num);
}
//
// 在代码行数据库中,标记此行是一个指令行
//
line_database[line_count].flag |= LF_INSTRUCTION;
}
// rcr a
void parse_rcr(int line_num)
{
char *op;
unsigned long op_type;
if(assembler_state != AS_TEXT)
{
warning_msg_invalid_line(line_num);
return;
}
op = strtok(NULL, delimit_char);
if(NULL == op)
{
error_msg_miss_op(rcr_instruction_keyword, line_num);
}
op_type = get_operand_type(op);
if(OT_REGISTER_A == op_type)
{
machine_code[machine_code_address] = 0xD8;
machine_code_address++;
}
else
{
error_msg_wrong_op(rcr_instruction_keyword, line_num);
}
//
// 在代码行数据库中,标记此行是一个指令行
//
line_database[line_count].flag |= LF_INSTRUCTION;
}
// rcl a
void parse_rcl(int line_num)
{
char *op;
unsigned long op_type;
if(assembler_state != AS_TEXT)
{
warning_msg_invalid_line(line_num);
return;
}
op = strtok(NULL, delimit_char);
if(NULL == op)
{
error_msg_miss_op(rcl_instruction_keyword, line_num);
}
op_type = get_operand_type(op);
if(OT_REGISTER_A == op_type)
{
machine_code[machine_code_address] = 0xDC;
machine_code_address++;
}
else
{
error_msg_wrong_op(rcl_instruction_keyword, line_num);
}
//
// 在代码行数据库中,标记此行是一个指令行
//
line_database[line_count].flag |= LF_INSTRUCTION;
}
// not a
void parse_not(int line_num)
{
char *op;
unsigned long op_type;
if(assembler_state != AS_TEXT)
{
warning_msg_invalid_line(line_num);
return;
}
op = strtok(NULL, delimit_char);
if(NULL == op)
{
error_msg_miss_op(not_instruction_keyword, line_num);
}
op_type = get_operand_type(op);
if(OT_REGISTER_A == op_type)
{
machine_code[machine_code_address] = 0xE4;
machine_code_address++;
}
else
{
error_msg_wrong_op(not_instruction_keyword, line_num);
}
//
// 在代码行数据库中,标记此行是一个指令行
//
line_database[line_count].flag |= LF_INSTRUCTION;
}
// iret
void parse_iret(int line_num)
{
machine_code[machine_code_address] = 0xF8;
machine_code_address++;
//
// 在代码行数据库中,标记此行是一个指令行
//
line_database[line_count].flag |= LF_INSTRUCTION;
}
// nop
void parse_nop(int line_num)
{
machine_code[machine_code_address] = 0xE0;
machine_code_address++;
//
// 在代码行数据库中,标记此行是一个指令行
//
line_database[line_count].flag |= LF_INSTRUCTION;
}
// 向符号表中添加一个符号
void add_symbol(const char* symbol, int line_num)
{
int i;
// 符号名称不能重复
for(i=0; i<symbol_count; i++)
{
if(stricmp(symbol, symbol_table[i].name) == 0)
{
error_msg_same_symbol(symbol, line_num, symbol_table[i].line_num);
}
}
// 符号数量有限
if(symbol_count == MAX_SYMBOL_COUNT)
{
sprintf(formated_msg, "定义了太多的符号。最多可以定义 %d 个符号。", MAX_SYMBOL_COUNT);
error_msg(formated_msg, line_num);
}
// 添加符号
strcpy(symbol_table[symbol_count].name, symbol);
symbol_table[symbol_count].address = machine_code_address;
symbol_table[symbol_count].line_num = line_num;
symbol_count++;
}
// 解析符号
void parse_symbol(const char* symbol_with_colon, int line_num)
{
char symbol[MAX_SYMBOL_LENGTH];
char* token;
// 删除符号末尾的冒号
strcpy(symbol, symbol_with_colon);
symbol[strlen(symbol) - 1] = 0;
if(AS_TEXT == assembler_state)
{
// 代码段中的标号作为符号。记录到符号表中,不产生机器码。
add_symbol(symbol, line_num);
// 标号必须单独占一行,否则报错
if (strtok(NULL, delimit_char) != NULL)
{
error_msg("标号必须单独占用一行。", line_num);
}
}
else if(AS_DATA == assembler_state)
{
// 数据段中的变量作为符号。一个变量可以包含多个字节数据。记录到符号表中,产生机器码。
add_symbol(symbol, line_num);
while((token = strtok(NULL, delimit_char)) != NULL)
{
if(!is_immediate(token))
{
error_msg_wrong_data(token, line_num);
}
machine_code[machine_code_address] = get_machine_code_from_immediate(token);
machine_code_address++;
symbol_table[symbol_count - 1].machine_code_count++;
}
}
else
{
warning_msg_invalid_line(line_num);
}
}
// 解析代码段开始标志
void parse_code_section_keyword(int line_num)
{
// 代码段标志
if(AS_DATA == assembler_state)
{
error_msg("代码段不能定义在数据段的后面。", line_num);
}
else if(AS_TEXT == assembler_state)
{
error_msg("定义了重复的代码段。", line_num);
}
assembler_state = AS_TEXT;
}
// 解析数据段开始标志
void parse_data_section_keyword(int line_num)
{
// 数据段标志
if(AS_DATA == assembler_state)
{
error_msg("定义了重复的数据段。", line_num);
}
else if(AS_BEGIN == assembler_state)
{
error_msg("数据段不能定义在代码段的前面。", line_num);
}
assembler_state = AS_DATA;
}
// 定义关键字和解析函数的对应关系
typedef void (*PARSE_FUNCTION)(int line_num);
struct KEYWORD_FUNCTION_ENTRY
{
const char** keyword;
PARSE_FUNCTION parse_function;
};
//
// 必须将关键字及其解析函数放在下面的表中。从而可以使用“表驱动”的编程模式。
//
struct KEYWORD_FUNCTION_ENTRY keyword_function_table[] =
{
{ NULL, NULL } // 未用
,{ &code_section_keyword, parse_code_section_keyword }
,{ &data_section_keyword, parse_data_section_keyword }
,{ &mov_instruction_keyword, parse_mov }
,{ &jmp_instruction_keyword, parse_jmp }
,{ &add_instruction_keyword, parse_add }
,{ &adc_instruction_keyword, parse_adc }
,{ &sub_instruction_keyword, parse_sub }
,{ &sbb_instruction_keyword, parse_sbb }
,{ &and_instruction_keyword, parse_and }
,{ &or_instruction_keyword, parse_or }
,{ &read_instruction_keyword, parse_read }
,{ &write_instruction_keyword, parse_write }
,{ &jc_instruction_keyword, parse_jc }
,{ &jz_instruction_keyword, parse_jz }
,{ &call_instruction_keyword, parse_call }
,{ &in_instruction_keyword, parse_in }
,{ &out_instruction_keyword, parse_out }
,{ &ret_instruction_keyword, parse_ret }
,{ &shr_instruction_keyword, parse_shr }
,{ &shl_instruction_keyword, parse_shl }
,{ &rcr_instruction_keyword, parse_rcr }
,{ &rcl_instruction_keyword, parse_rcl }
,{ &not_instruction_keyword, parse_not }
,{ &iret_instruction_keyword, parse_iret }
,{ &nop_instruction_keyword, parse_nop }
,{ &int_instruction_keyword, parse_int }
,{ &lea_instruction_keyword, parse_lea }
,{ &r0_register_keyword, NULL }
,{ &r1_register_keyword, NULL }
,{ &r2_register_keyword, NULL }
,{ &r3_register_keyword, NULL }
,{ &r0_register_indirect_keyword, NULL }
,{ &r1_register_indirect_keyword, NULL }
,{ &r2_register_indirect_keyword, NULL }
,{ &r3_register_indirect_keyword, NULL }
,{ &a_register_keyword, NULL }
,{ &sp_register_keyword, NULL }
};
// 判断是否是一个关键字。返回0,不是关键字;返回非0,是关键字,并且返回值就是关键字在表中的下标。
int match_keyword(const char* token)
{
int i;
for(i=1; i<sizeof(keyword_function_table)/sizeof(keyword_function_table[0]); i++)
{
if(stricmp(token, *keyword_function_table[i].keyword) == 0)
{
return i;
}
}
return 0;
}
// 判断是否是一个符号
int is_symbol(const char* token, int line_num)
{
int i;
char symbol_name[MAX_SYMBOL_LENGTH];
// 最后一个字符必须是冒号
if(token[strlen(token) - 1] != ':')
{
return 0;
}
// 第一个字符必须是字母或者下划线
if(token[0] != '_' && !isalpha(token[0]))
{
return 0;
}
// 后面的字符必须是字母、数字、下划线
for(i=0; i<(int)strlen(token)-2; i++)
{
if(token[i] != '_' && !isalpha(token[i]) && !isdigit(token[i]))
{
return 0;
}
}
// 不能与关键字相同
strcpy(symbol_name, token);
symbol_name[strlen(symbol_name) - 1] = 0;
if(match_keyword(symbol_name) != 0)
{
error_msg_keyword_symbol(symbol_name, line_num);
}
return 1;
}
// 输出版本信息
void version_msg()
{
printf(
"Engintime DM1000 8位模型机汇编器 [版本 2.0]\n"
);
}
// 输出帮助信息
void help_msg()
{
printf(
"Engintime DM1000 8位模型机汇编器。\n\n"
"用法:\n\n"
" dmasm.exe assembly_file_name [options]\n\n"
"选项:\n\n"
" -g debug_file_name\t指定生成的调试信息文件路径。\n"
" -h\t\t\t打印此帮助信息。\n"
" -l list_file_name\t指定生成的列表文件路径。\n"
" -o target_file_name\t指定生成的目标文件路径。若未指定,默认生成 a.obj 文件。\n"
" -v\t\t\t打印版本信息。\n"
);
printf("\n");
version_msg();
exit(1);
}
void argument_error_msg()
{
printf("命令行参数错误。\n\n");
help_msg();
}
// 处理器用户输入的命令行参数
void process_argument(int argc, char* argv[])
{
int i;
// argv[0] 是 "easm.exe",所以可以忽略。
for(i=1; i<argc; i++)
{
if(strcmp(argv[i], "-v") == 0)
{
version_msg();
exit(1);
}
else if(strcmp(argv[i], "-h") == 0)
{
help_msg();
}
else if(strcmp(argv[i], "-o") == 0)
{
if(i + 1 < argc)
{
i++;
target_file_name = argv[i];
}
else
{
argument_error_msg();
}
}
else if(strcmp(argv[i], "-l") == 0)
{
if(i + 1 < argc)
{
i++;
list_file_name = argv[i];
}
else
{
argument_error_msg();
}
}
else if(strcmp(argv[i], "-g") == 0)
{
if(i + 1 < argc)
{
i++;
dbg_file_name = argv[i];
}
else
{
argument_error_msg();
}
}
else if(NULL == assembly_file_name && argv[i][0] != '-')
{
// 输入的汇编源代码文件路径。
assembly_file_name = argv[i];
}
else
{
argument_error_msg();
}
}
//
// 如果命令行参数中没有指定输入的汇编文件,就打印错误信息后退出
//
if(NULL == assembly_file_name)
{
printf("命令行参数错误。没有指定汇编源代码文件的路径。\n");
help_msg();
}
}
// 将一个字符串写入二进制文件中。先将字符串长度写入文件,然后将字符串中的
// 每个字符依次写入文件,不包括字符串末尾的 0.
void write_string_to_binary_file(const char* str, FILE* fp)
{
int str_length;
if(str != NULL)
{
str_length = strlen(str);
fwrite(&str_length, 1, sizeof(str_length), fp);
fwrite(str, 1, str_length, fp);
}
else
{
str_length = 0;
fwrite(&str_length, 1, sizeof(str_length), fp);
}
}
int main(int argc, char* argv[])
{
FILE* fp;
char* token;
char line[MAX_LINE_LENGTH];
int i, j;
int line_num = 1; // 行号从第一行开始计数
int keyword_index;
//
// 处理命令行参数
//
process_argument(argc, argv);
//
// 打开汇编源代码文件
//
fp = fopen(assembly_file_name, "r");
if(NULL == fp)
{
printf("无法打开源代码文件 %s\n", assembly_file_name);
return 1;
}
//////////////////////////////////////////////////////////////////////////
// 第一遍扫描
version_msg();
printf("\n正在汇编 %s...\n", assembly_file_name);
//
// 一次读取一行文本,同时记录所有的代码行信息
//
while(fgets(line, sizeof(line), fp) != NULL)
{
//
// 将一行代码的信息记录到代码行数据库中
//
strcpy(line_database[line_count].line_string, line);
line_database[line_count].line_num = line_num;
line_database[line_count].address = machine_code_address;
//
// 将代码行中的注释剥离
//
line[strcspn(line, ";")] = 0;
//
// 开始解析代码行
//
token = strtok(line, delimit_char);
if(NULL == token)
{
// 如果是空行,不做任何处理
}
else if((keyword_index = match_keyword(token)) != 0
&& keyword_function_table[keyword_index].parse_function != NULL)
{
// 根据关键字进行相应的处理
keyword_function_table[keyword_index].parse_function(line_num);
}
else if(is_symbol(token, line_num))
{
// 处理符号
parse_symbol(token, line_num);
}
else
{
error_msg("无法识别的代码行。", line_num);
}
//
// 补充代码行数据库信息
//
line_database[line_count].machine_code_count = machine_code_address - machine_code_old_address;
machine_code_old_address = machine_code_address;
//
// 记录产生了机器码的代码行数量
//
if(line_database[line_count].machine_code_count != 0)
{
machine_code_line_count++;
}
//
// 增加行号
//
line_count++;
line_num++;
if(line_count == MAX_LINE_COUNT)
{
sprintf(formated_msg, "汇编文件中的代码行过多,最多只能有 %d 行代码。", MAX_LINE_COUNT);
error_msg(formated_msg, -1);
}
}
fclose(fp);
//////////////////////////////////////////////////////////////////////////
// 第二遍扫描
//
// 根据符号表更新重定位表
//
for(i=0; i<reallocate_count; i++)
{
for(j=0; j<symbol_count; j++)
{
if(stricmp(symbol_table[j].name, reallocate_table[i].symbol_name) == 0)
{
machine_code[reallocate_table[i].address] = (BYTE)symbol_table[j].address;
symbol_table[j].ref_count++;
break;
}
}
if(j == symbol_count)
{
// 重定位表中使用的符号在符号表中未定义,报错
sprintf(formated_msg, "使用了未定义的符号 %s。", reallocate_table[i].symbol_name);
error_msg(formated_msg, reallocate_table[i].line_num);
}
}
//
// 如果存在未引用的符号,输出警告信息。
//
for(i=0; i<symbol_count; i++)
{
if(0 == symbol_table[i].ref_count)
{
warning_msg_unref_symbol(symbol_table[i].name, symbol_table[i].line_num);
}
}
//////////////////////////////////////////////////////////////////////////
// 产生各种输出文件
//
// 将机器码写入二进制文件
//
if(NULL == target_file_name)
{
target_file_name = "a.obj";
}
fp = fopen(target_file_name, "wb");
if(NULL == fp)
{
printf("无法打开输出文件 %s\n", target_file_name);
return 1;
}
fwrite(machine_code, 1, machine_code_address, fp);
fclose(fp);
printf("\n生成目标文件 %s\n", target_file_name);
//
// 将代码行数据库中的信息写入列表文件
//
if(list_file_name != NULL)
{
fp = fopen(list_file_name, "w");
if(NULL == fp)
{
printf("无法打开列表文件 %s\n", list_file_name);
return 1;
}
for(i=0; i<line_count; i++)
{
// 行号
fprintf(fp, "%04d ", line_database[i].line_num);
// 地址和机器码
if(line_database[i].machine_code_count > 0)
{
fprintf(fp, "%02X ", line_database[i].address);
for(j=0; j<line_database[i].machine_code_count; j++)
{
// 确保每行最多写两个字节的机器码
if(j != 0 && j % 2 == 0)
{
if(2 == j)
{
fprintf(fp, " ");
}
else
{
fprintf(fp, "\n ");
}
}
fprintf(fp, "%02X ", machine_code[line_database[i].address + j]);
if(1 == j)
{
fprintf(fp, " ");
fprintf(fp, line_database[i].line_string);
}
}
if(1 == j)
{
fprintf(fp, " ");
fprintf(fp, line_database[i].line_string);
}
else if(j > 2)
{
fprintf(fp, "\n");
}
}
else
{
fprintf(fp, " ");
// 源代码
fprintf(fp, line_database[i].line_string);
}
}
fclose(fp);
printf("生成列表文件 %s\n", list_file_name);
}
//
// 将代码行数据库中的信息写入二进制的调试信息文件。
//
// 调试信息的基本格式为:
// 魔数(4字节),固定不可改变
// 版本号(4字节),固定不可改变
// 源代码文件绝对路径字符串长度(4字节)
// 源代码文件绝对路径字符串(不包括字符串结尾的0)
// 列表文件绝对路径字符串长度(4字节)
// 列表文件绝对路径字符串(不包括字符串结尾的0)
//
// 代码行数据库中元素的数量(4字节)
// 代码行数据库中的所有元素
//
// 符号表元素的数量(4字节)
// 符号表中的所有元素
//
if(dbg_file_name != NULL)
{
fp = fopen(dbg_file_name, "wb");
if(NULL == fp)
{
printf("无法打开调试信息文件 %s\n", dbg_file_name);
return 1;
}
// 魔数
fwrite(&dbg_file_magic, 1, sizeof(dbg_file_magic), fp);
// 版本号
fwrite(&dbg_file_version, 1, sizeof(dbg_file_version), fp);
// 源代码文件路径
write_string_to_binary_file(assembly_file_name, fp);
// 列表文件路径
write_string_to_binary_file(list_file_name, fp);
// 代码行数据库中的所有元素
fwrite(&machine_code_line_count, 1, sizeof(machine_code_line_count), fp);
for(i=0; i<line_count; i++)
{
// 跳过没有产生机器码的代码行
if(0 == line_database[i].machine_code_count)
{
continue;
}
fwrite(&line_database[i].line_num, 1, sizeof(unsigned long), fp);
fwrite(&line_database[i].address, 1, sizeof(unsigned long), fp);
fwrite(&line_database[i].machine_code_count, 1, sizeof(int), fp);
fwrite(&line_database[i].flag, 1, sizeof(unsigned long), fp);
}
// 符号表中的所有元素
fwrite(&symbol_count, 1, sizeof(symbol_count), fp);
for(i=0; i<symbol_count; i++)
{
write_string_to_binary_file(symbol_table[i].name, fp);
fwrite(&symbol_table[i].address, 1, sizeof(unsigned long), fp);
fwrite(&symbol_table[i].machine_code_count, 1, sizeof(int), fp);
fwrite(&symbol_table[i].line_num, 1, sizeof(int), fp);
}
fclose(fp);
printf("生成调试信息文件 %s\n", dbg_file_name);
}
return 0;
}
添加文件
/*******************************************************************************
*******************************************************************************/
#define _CRT_SECURE_NO_WARNINGS
#define _CRT_NONSTDC_NO_DEPRECATE
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
typedef unsigned char BYTE;
typedef long BOOL;
#define FALSE 0
#define TRUE 1
#define MAX_LINE_LENGTH 256 // 一行代码最多可以有多少个字符
#define MAX_LINE_COUNT 1024 // 源代码文件最多可以有多少行
#define MAX_SYMBOL_LENGTH 64 // 一个符号最多可以包含多少个字符
#define MAX_SYMBOL_COUNT 256 // 源代码文件中最多可以包含多少个符号
#ifndef MAX_PATH
#define MAX_PATH 256 // 文件路径最多可以包含多少了字符
#endif
// 代码行数据库。记录源代码文件中所有代码行的信息(包括注释行、空行)
struct LINE_RECORD
{
char line_string[MAX_LINE_LENGTH]; // 代码行的内容
unsigned long line_num; // 行号
unsigned long address; // 此行代码转换的机器码在映像文件中的地址(偏移)。注意,对于 DM1000 来说,微指令的一个地址对应 4 个字节。
int machine_code_count; // 此行代码转换的机器码的字节数量
unsigned long flag; // 代码行标志位,32位
};
struct LINE_RECORD line_database[MAX_LINE_COUNT] = {0};
int line_count = 0;
int machine_code_line_count = 0; // 记录产生了机器码的代码行的数量
// 在此定义所有的代码行标志位。注意,代码行标志位是按位或的关系。
#define LF_INSTRUCTION 0x00000001 // 代码行标志位的最低位是1,表示此行是一条指令,否则表示此行是数据
//
// 在下面定义所有的关键字
//
// 寄存器名称
const char* rx_register_keyword = "rx";
const char* mar_register_keyword = "mar";
const char* rin_register_keyword = "rin";
const char* rout_register_keyword = "rout";
const char* sp_register_keyword = "sp";
const char* ia_register_keyword = "ia";
const char* ir_register_keyword = "ir";
const char* flag_register_keyword = "flag";
const char* pc_register_keyword = "pc";
const char* a_register_keyword = "a";
const char* w_register_keyword = "w";
const char* asr_register_keyword = "asr";
const char* upc_register_keyword = "upc";
// 堆栈计数器
const char* csp_counter_keyword = "csp";
//
// alu 操作码
const char* alu_add_keyword = "alu_add";
const char* alu_adc_keyword = "alu_adc";
const char* alu_sub_keyword = "alu_sub";
const char* alu_sbb_keyword = "alu_sbb";
const char* alu_and_keyword = "alu_and";
const char* alu_or_keyword = "alu_or";
const char* alu_aout_keyword = "alu_aout";
const char* alu_shr_keyword = "alu_shr";
const char* alu_shl_keyword = "alu_shl";
const char* alu_rcr_keyword = "alu_rcr";
const char* alu_rcl_keyword = "alu_rcl";
const char* alu_not_keyword = "alu_not";
const char* sp_inc_keyword = "sp_inc";
const char* sp_dec_keyword = "sp_dec";
const char* int_ia_keyword = "int_ia";
// 访问主存或外设的操作数
const char* pc_main_memory_keyword = "[pc]";
const char* mar_main_memory_keyword = "[mar]";
const char* delimit_char = "\n\t\r "; // 需要忽略的空白字符
const char* delimit_char_comma = "\n\t\r, "; // 需要忽略的空白字符,包括英文逗号
// 单操作数微指令
struct ONE_OPERAND_INSTRUCTION_ENTRY
{
const char** op;
unsigned long micro_machine_code;
};
struct ONE_OPERAND_INSTRUCTION_ENTRY one_operand_table[] =
{
{ NULL, 0x0 } // 未用
,{ &pc_register_keyword, 0xffffffff } // inc pc
,{ &upc_register_keyword, 0xffffffcf } // reset upc
};
// 查表,操作数是否匹配。返回0,操作数不匹配;返回非0,操作数匹配,并且返回值就是操作数在表中的下标。
int match_one_operand(const char* op)
{
int i;
for(i=1; i<sizeof(one_operand_table)/sizeof(one_operand_table[0]); i++)
{
if((stricmp(op, *one_operand_table[i].op) == 0))
{
return i;
}
}
return 0;
}
// 双操作数微指令
struct PATH_INSTRUCTION_OPERAND_ENTRY
{
const char** op1;
const char** op2;
unsigned long micro_machine_code;
};
//////////////////////////////////////////////////////////////////////////
//
struct PATH_INSTRUCTION_OPERAND_ENTRY path_operand_table[] =
{
{ NULL, NULL, 0x0 } // 未用
,{ &pc_main_memory_keyword, &ir_register_keyword, 0xfff93fef } // path [pc], ir ff e3 ff ff
,{ &alu_add_keyword, &a_register_keyword, 0x99e4ffef } // path alu_add, a ff ff fe 90
,{ &alu_sub_keyword, &a_register_keyword, 0x86e4ffef } // path alu_sub, a ff ff fe 91
,{ &alu_or_keyword, &a_register_keyword, 0xbee4ffef } // path alu_or, a
,{ &alu_and_keyword, &a_register_keyword, 0xbbe4ffef } // path alu_and, a
,{ &alu_adc_keyword, &a_register_keyword, 0x89e4ffef } // path alu_adc, a
,{ &alu_sbb_keyword, &a_register_keyword, 0x96e4ffef } // path alu_sbb, a
,{ &alu_shr_keyword, &a_register_keyword, 0x90d5ffef } // path alu_shr, a ff ff fc b7
,{ &alu_shl_keyword, &a_register_keyword, 0x90d6ffef } // path alu_shl, a
,{ &alu_rcr_keyword, &a_register_keyword, 0x90e5ffef } // path alu_rcr, a
,{ &alu_rcl_keyword, &a_register_keyword, 0x90e6ffef } // path alu_rcl, a
,{ &alu_not_keyword, &a_register_keyword, 0xb0f4ffef } // path alu_not, a
,{ &rx_register_keyword, &w_register_keyword, 0x7ffaffef } // path rx, w
,{ &rx_register_keyword, &mar_register_keyword, 0xfffaf7ef } // path rx, mar
,{ &mar_main_memory_keyword, &w_register_keyword, 0x7ff9fbef } // path [mar], w
,{ &pc_main_memory_keyword, &mar_register_keyword, 0xfff977ef } // path [pc], mar
,{ &pc_main_memory_keyword, &w_register_keyword, 0x7ff97fef } // path [pc], w
,{ &rx_register_keyword, &a_register_keyword, 0xbffaffef } // path rx, a
,{ &mar_main_memory_keyword, &a_register_keyword, 0xbff9fbef } // path [mar], a 从地址寄存器指定的内存单元读数据到a寄存器
,{ &pc_main_memory_keyword, &a_register_keyword, 0xbff97fef } // path [pc], a
,{ &a_register_keyword, &rx_register_keyword, 0xd0b4ffef } // path a, rx
,{ &a_register_keyword, &mar_main_memory_keyword, 0xd0f4fbed } // path a, [mar] 将a寄存器数据写入地址寄存器指向的内存
,{ &pc_main_memory_keyword, &rx_register_keyword, 0xffb97fef } // path [pc], rx
,{ &alu_aout_keyword, &mar_main_memory_keyword, 0xd0f4fbec } // path alu_aout, [mar]
,{ &pc_main_memory_keyword, &pc_register_keyword, 0xfff96fff } // path [pc], pc
,{ &pc_register_keyword, &sp_register_keyword, 0xfff3feef } // path pc, sp
,{ &ia_register_keyword, &mar_register_keyword, 0xfff1f7ef } // path ia, mar
,{ &pc_register_keyword, &mar_register_keyword, 0xfff3f7ef } // path pc, mar
,{ &rin_register_keyword, &a_register_keyword, 0xbff0ffef } // path rin, a
,{ &a_register_keyword, &rout_register_keyword, 0xd0f4ffee } // path a, rout
,{ &mar_main_memory_keyword, &pc_register_keyword, 0xfff9ebef } // path [mar], pc 从地址寄存器指定的内存单元读数据到程序计数器pc
,{ &pc_main_memory_keyword, &sp_register_keyword, 0xfff97eef } // path [pc], sp
,{ &sp_register_keyword, &mar_register_keyword, 0xfff2f7ef } // path sp, mar
,{ &sp_register_keyword, &csp_counter_keyword, 0xff72ffef } // path sp, csp
,{ &pc_main_memory_keyword, &ia_register_keyword, 0xfff97feb } // path [pc], ia
,{ &pc_main_memory_keyword, &asr_register_keyword, 0xfff97def } // path [pc], asr
,{ &csp_counter_keyword, &mar_register_keyword, 0xfff8f7ef } // path csp, mar
,{ &csp_counter_keyword, &sp_register_keyword, 0xfff8feef } // path csp, sp
,{ &sp_inc_keyword, &csp_counter_keyword, 0xffffffe7 } // path sp_inc, csp
,{ &sp_dec_keyword, &csp_counter_keyword, 0xffffffef } // path sp_dec, csp
,{ &pc_register_keyword, &mar_main_memory_keyword, 0xfff3fbed } // path pc, [mar] 将pc值写入mar指向的存储单元
,{ &asr_register_keyword, &pc_register_keyword, 0xfff7efef } // path asr, pc
,{ &sp_register_keyword, &asr_register_keyword, 0xfff2fdef } // path sp, asr
,{ &int_ia_keyword, &mar_register_keyword, 0xfff1f7ef } // path int_ia, mar
};
// 查表,判断两个操作数是否匹配。返回0,操作数不完全匹配;返回非0,操作数完全匹配,并且返回值就是操作数在表中的下标。
int match_ops(const char* op1, const char* op2)
{
int i;
for(i=1; i<sizeof(path_operand_table)/sizeof(path_operand_table[0]); i++)
{
if((stricmp(op1, *path_operand_table[i].op1) == 0)
&& (stricmp(op2, *path_operand_table[i].op2) == 0))
{
return i;
}
}
return 0;
}
// 汇编产生的机器码
#define MAX_MACHINE_CODE 1024
BYTE machine_code[MAX_MACHINE_CODE];
unsigned long machine_code_address = 0; // 一个地址对应一个字节
unsigned long machine_code_old_address = 0;
const char* micro_file_name = NULL; // 微指令文件路径
const char* target_file_name = NULL; // 目标文件路径
const char* list_file_name = NULL; // 列表文件路径
const char* dbg_file_name = NULL; // 调试信息文件路径
const unsigned long dbg_file_magic = 58;
const unsigned long dbg_file_version = 1;
// 输出汇编过程中发现的语法错误信息
void error_msg(const char* error_msg, int line_num)
{
if(line_num >= 1)
{
printf("%s:%d: error: %s\n", micro_file_name, line_num, error_msg);
}
else
{
printf("%s: error: %s\n", micro_file_name, error_msg);
}
exit(1);
}
char formated_msg[1024]; // 将格式化后的错误信息放在此字符串中。
void error_msg_miss_op(const char* instruction_name, int line_num)
{
sprintf(formated_msg, "%s 指令缺少操作数。", instruction_name);
error_msg(formated_msg, line_num);
}
void error_msg_wrong_op(const char* instruction_name, int line_num)
{
sprintf(formated_msg, "%s 指令不支持这样的操作数。", instruction_name);
error_msg(formated_msg, line_num);
}
// 定义关键字和解析函数的对应关系
typedef void (*PARSE_FUNCTION)(int line_num);
struct KEYWORD_FUNCTION_ENTRY
{
const char** keyword;
PARSE_FUNCTION parse_function;
};
// 指令名称
const char* dup_instruction_keyword = "dup";
const char* null_instruction_keyword = "null";
const char* path_instruction_keyword = "path";
const char* inc_instruction_keyword = "inc"; // pc+1
const char* reset_instruction_keyword = "reset"; // 复位
const char* ask_for_int_instruction_keyword = "ask_for_int"; //查询硬中断
const char* inta1_instruction_keyword = "inta1"; //第一个中断应答信号
const char* inta2_instruction_keyword = "inta2"; //第二个中断应答信号
const char* eoi_instruction_keyword = "eoi"; //中断返回
// 判断是否是立即数。不支持负数。
int is_immediate(const char* token)
{
return isdigit(token[0]);
}
// 根据立即数得到值。不支持负数。
unsigned long get_value_from_immediate(const char* immediate)
{
char* end;
int base = (immediate[0] == '0' && (immediate[1] == 'x' || immediate[1] == 'X')) ? 16 : 10;
return strtoul(immediate, &end, base);
}
// dup n, null
void parse_dup(int line_num)
{
char *op1, *op2;
int i;
unsigned long micro_instruction_count; // 微指令个数
unsigned long micro_code; // 微指令编码
op1 = strtok(NULL, delimit_char_comma);
op2 = strtok(NULL, delimit_char);
if(NULL == op1 || NULL == op2)
{
error_msg_miss_op(dup_instruction_keyword, line_num);
}
// dup微指令的第一个操作数必须是立即数(十进制或十六进制)
if (!is_immediate(op1))
{
error_msg_wrong_op(dup_instruction_keyword, line_num);
}
// 得到微指令个数
micro_instruction_count = get_value_from_immediate(op1);
// 解析第二个操作数
if (is_immediate(op2))
{
micro_code = get_value_from_immediate(op2);
}
else if(0 == stricmp(op2, null_instruction_keyword))
{
micro_code = 0xffffffff;
}
else
{
error_msg_wrong_op(dup_instruction_keyword, line_num);
}
for (i = 0; i < (int)micro_instruction_count; i++)
{
memcpy(&machine_code[machine_code_address], &micro_code, 4);
machine_code_address += 4;
}
}
// null
void parse_null(int line_num)
{
unsigned long ul = 0xffffffff;
memcpy(&machine_code[machine_code_address], &ul, 4);
machine_code_address += 4;
}
// ask_for_int
void parse_ask_for_int(int line_num)
{
unsigned long ul = 0xffffffaf;
memcpy(&machine_code[machine_code_address], &ul, 4);
machine_code_address += 4;
}
// inta1
void parse_inta1(int line_num)
{
unsigned long ul = 0xfffbffef;
memcpy(&machine_code[machine_code_address], &ul, 4);
machine_code_address += 4;
}
// inta2
void parse_inta2(int line_num)
{
unsigned long ul = 0xfffcffeb;
memcpy(&machine_code[machine_code_address], &ul, 4);
machine_code_address += 4;
}
// eoi
void parse_eoi(int line_num)
{
unsigned long ul = 0xfffdffef;
memcpy(&machine_code[machine_code_address], &ul, 4);
machine_code_address += 4;
}
// path op1, op2
void parse_path(int line_num)
{
char *op1, *op2;
int index;
op1 = strtok(NULL, delimit_char_comma);
op2 = strtok(NULL, delimit_char);
if(NULL == op1 || NULL == op2)
{
error_msg_miss_op(path_instruction_keyword, line_num);
}
index = match_ops(op1, op2);
if (0 == index)
{
error_msg_wrong_op(path_instruction_keyword, line_num);
}
memcpy(&machine_code[machine_code_address], &path_operand_table[index].micro_machine_code, 4);
machine_code_address += 4;
//
// 在代码行数据库中,标记此行是一个指令行
//
line_database[line_count].flag |= LF_INSTRUCTION;
}
// inc
void parse_inc(int line_num)
{
char *op;
int index;
op = strtok(NULL, delimit_char_comma);
if(NULL == op)
{
error_msg_miss_op(inc_instruction_keyword, line_num);
}
index = match_one_operand(op);
if (0 == index)
{
error_msg_wrong_op(inc_instruction_keyword, line_num);
}
memcpy(&machine_code[machine_code_address], &one_operand_table[index].micro_machine_code, 4);
machine_code_address += 4;
//
// 在代码行数据库中,标记此行是一个指令行
//
line_database[line_count].flag |= LF_INSTRUCTION;
}
// reset
void parse_reset(int line_num)
{
char *op;
int index;
op = strtok(NULL, delimit_char_comma);
if(NULL == op)
{
error_msg_miss_op(reset_instruction_keyword, line_num);
}
index = match_one_operand(op);
if (0 == index)
{
error_msg_wrong_op(reset_instruction_keyword, line_num);
}
memcpy(&machine_code[machine_code_address], &one_operand_table[index].micro_machine_code, 4);
machine_code_address += 4;
//
// 在代码行数据库中,标记此行是一个指令行
//
line_database[line_count].flag |= LF_INSTRUCTION;
}
//
// 必须将关键字及其解析函数放在下面的表中。从而可以使用“表驱动”的编程模式。
//
struct KEYWORD_FUNCTION_ENTRY keyword_function_table[] =
{
{ NULL, NULL } // 未用
,{ &dup_instruction_keyword, parse_dup }
,{ &null_instruction_keyword, parse_null }
,{ &path_instruction_keyword, parse_path }
,{ &inc_instruction_keyword, parse_inc }
,{ &reset_instruction_keyword, parse_reset }
,{ &ask_for_int_instruction_keyword, parse_ask_for_int }
,{ &inta1_instruction_keyword, parse_inta1 }
,{ &inta2_instruction_keyword, parse_inta2 }
,{ &eoi_instruction_keyword, parse_eoi }
};
// 判断是否是一个关键字。返回0,不是关键字;返回非0,是关键字,并且返回值就是关键字在表中的下标。
int match_keyword(const char* token)
{
int i;
for(i=1; i<sizeof(keyword_function_table)/sizeof(keyword_function_table[0]); i++)
{
if(stricmp(token, *keyword_function_table[i].keyword) == 0)
{
return i;
}
}
return 0;
}
// 输出版本信息
void version_msg()
{
printf(
"Engintime DM1000 8位模型机微指令汇编器 [版本 2.0]\n"
);
}
// 输出帮助信息
void help_msg()
{
printf(
"Engintime DM1000 8位模型机微指令汇编器。\n\n"
"用法:\n\n"
" microasm.exe micro_file_name [options]\n\n"
"选项:\n\n"
" -g debug_file_name\t指定生成的调试信息文件路径。\n"
" -h\t\t\t打印此帮助信息。\n"
" -l list_file_name\t指定生成的列表文件路径。\n"
" -o target_file_name\t指定生成的目标文件路径。若未指定,默认生成 micro.obj 文件。\n"
" -v\t\t\t打印版本信息。\n"
);
printf("\n");
version_msg();
exit(1);
}
void argument_error_msg()
{
printf("命令行参数错误。\n\n");
help_msg();
}
// 处理器用户输入的命令行参数
void process_argument(int argc, char* argv[])
{
int i;
// argv[0] 是 "easm.exe",所以可以忽略。
for(i=1; i<argc; i++)
{
if(strcmp(argv[i], "-v") == 0)
{
version_msg();
exit(1);
}
else if(strcmp(argv[i], "-h") == 0)
{
help_msg();
}
else if(strcmp(argv[i], "-o") == 0)
{
if(i + 1 < argc)
{
i++;
target_file_name = argv[i];
}
else
{
argument_error_msg();
}
}
else if(strcmp(argv[i], "-l") == 0)
{
if(i + 1 < argc)
{
i++;
list_file_name = argv[i];
}
else
{
argument_error_msg();
}
}
else if(strcmp(argv[i], "-g") == 0)
{
if(i + 1 < argc)
{
i++;
dbg_file_name = argv[i];
}
else
{
argument_error_msg();
}
}
else if(NULL == micro_file_name && argv[i][0] != '-')
{
// 输入的汇编源代码文件路径。
micro_file_name = argv[i];
}
else
{
argument_error_msg();
}
}
//
// 如果命令行参数中没有指定输入的汇编文件,就打印错误信息后退出
//
if(NULL == micro_file_name)
{
printf("命令行参数错误。没有指定微指令源代码文件的路径。\n");
help_msg();
}
}
// 将一个字符串写入二进制文件中。先将字符串长度写入文件,然后将字符串中的
// 每个字符依次写入文件,不包括字符串末尾的 0.
void write_string_to_binary_file(const char* str, FILE* fp)
{
int str_length;
if(str != NULL)
{
str_length = strlen(str);
fwrite(&str_length, 1, sizeof(str_length), fp);
fwrite(str, 1, str_length, fp);
}
else
{
str_length = 0;
fwrite(&str_length, 1, sizeof(str_length), fp);
}
}
int main(int argc, char* argv[])
{
FILE* fp;
char* token;
char line[MAX_LINE_LENGTH];
int i, j;
int line_num = 1; // 行号从第一行开始计数
int keyword_index;
unsigned long micro_code;
//
// 处理命令行参数
//
process_argument(argc, argv);
//
// 打开汇编源代码文件
//
fp = fopen(micro_file_name, "r");
if(NULL == fp)
{
printf("无法打开微指令源代码文件 %s\n", micro_file_name);
return 1;
}
////////////////////////////////////////////////////////////////////////////
//// 扫描
version_msg();
printf("\n正在汇编 %s...\n", micro_file_name);
//
// 一次读取一行文本,同时记录所有的代码行信息
//
while(fgets(line, sizeof(line), fp) != NULL)
{
//
// 将一行代码的信息记录到代码行数据库中
//
strcpy(line_database[line_count].line_string, line);
line_database[line_count].line_num = line_num;
line_database[line_count].address = machine_code_address;
//
// 将代码行中的注释剥离
//
line[strcspn(line, ";")] = 0;
//
// 开始解析代码行
//
token = strtok(line, delimit_char);
if(NULL == token)
{
// 如果是空行,不做任何处理
}
else if((keyword_index = match_keyword(token)) != 0)
{
// 根据关键字进行相应的处理
keyword_function_table[keyword_index].parse_function(line_num);
}
else if(is_immediate(token))
{
// 将立即数直接作为微指令
micro_code = get_value_from_immediate(token);
memcpy(&machine_code[machine_code_address], &micro_code, 4);
machine_code_address += 4;
}
else
{
error_msg("无法识别的代码行。", line_num);
}
//
// 补充代码行数据库信息
//
line_database[line_count].machine_code_count = machine_code_address - machine_code_old_address;
machine_code_old_address = machine_code_address;
//
// 记录产生了机器码的代码行数量
//
if(line_database[line_count].machine_code_count != 0)
{
machine_code_line_count++;
}
//
// 增加行号
//
line_count++;
line_num++;
if(line_count == MAX_LINE_COUNT)
{
sprintf(formated_msg, "微指令文件中的代码行过多,最多只能有 %d 行代码。", MAX_LINE_COUNT);
error_msg(formated_msg, -1);
}
}
fclose(fp);
////////////////////////////////////////////////////////////////////////////
//// 产生各种输出文件
//
// 将机器码写入二进制文件
//
if(NULL == target_file_name)
{
target_file_name = "micro.obj";
}
fp = fopen(target_file_name, "wb");
if(NULL == fp)
{
printf("无法打开目标文件 %s\n", target_file_name);
return 1;
}
fwrite(machine_code, 1, machine_code_address, fp);
fclose(fp);
printf("\n生成目标文件 %s\n", target_file_name);
//
// 将代码行数据库中的信息写入列表文件
//
if(list_file_name != NULL)
{
fp = fopen(list_file_name, "w");
if(NULL == fp)
{
printf("无法打开列表文件 %s\n", list_file_name);
return 1;
}
for(i=0; i<line_count; i++)
{
// 行号
fprintf(fp, "%04d ", line_database[i].line_num);
// 地址和机器码
if(line_database[i].machine_code_count > 0)
{
fprintf(fp, "%02X ", line_database[i].address);
for(j=0; j<4; j++)
{
fprintf(fp, "%02X ", machine_code[line_database[i].address + j]);
}
fprintf(fp, " ");
}
else
{
fprintf(fp, " ");
}
// 源代码
fprintf(fp, line_database[i].line_string);
}
fclose(fp);
printf("生成列表文件 %s\n", list_file_name);
}
//
// 将代码行数据库中的信息写入二进制的调试信息文件。
//
// 调试信息的基本格式为:
// 魔数(4字节),固定不可改变
// 版本号(4字节),固定不可改变
// 源代码文件绝对路径字符串长度(4字节)
// 源代码文件绝对路径字符串(不包括字符串结尾的0)
// 列表文件绝对路径字符串长度(4字节)
// 列表文件绝对路径字符串(不包括字符串结尾的0)
//
// 代码行数据库中元素的数量(4字节)
// 代码行数据库中的所有元素
//
// 符号表元素的数量(4字节)
// 符号表中的所有元素
//
if(dbg_file_name != NULL)
{
fp = fopen(dbg_file_name, "wb");
if(NULL == fp)
{
printf("无法打开调试信息文件 %s\n", dbg_file_name);
return 1;
}
// 魔数
fwrite(&dbg_file_magic, 1, sizeof(dbg_file_magic), fp);
// 版本号
fwrite(&dbg_file_version, 1, sizeof(dbg_file_version), fp);
// 源代码文件路径
write_string_to_binary_file(micro_file_name, fp);
// 列表文件路径
write_string_to_binary_file(list_file_name, fp);
// 代码行数据库中的所有元素
fwrite(&machine_code_line_count, 1, sizeof(machine_code_line_count), fp);
for(i=0; i<line_count; i++)
{
// 跳过没有产生机器码的代码行
if(0 == line_database[i].machine_code_count)
{
continue;
}
fwrite(&line_database[i].line_num, 1, sizeof(unsigned long), fp);
fwrite(&line_database[i].address, 1, sizeof(unsigned long), fp);
fwrite(&line_database[i].machine_code_count, 1, sizeof(int), fp);
fwrite(&line_database[i].flag, 1, sizeof(unsigned long), fp);
}
// 没有符号表。但是为了确保调试信息的格式能够被正确读取,必须写入符号表数量为 0
i = 0;
fwrite(&i, 1, sizeof(i), fp);
fclose(fp);
printf("生成调试信息文件 %s\n", dbg_file_name);
}
return 0;
}
添加文件
; 示例程序
.text
mov sp, 0xf8 ;初始化栈指针寄存器
;=======================================================
;安装中断向量,安装中断的过程是将各个中断服务程序的入口地址(首地址)保存到对应中断向量指向的存储单元中。
;中断向量本身是一个地址,它指向一个存储单元,该存储单元保存的就是某个中断服务程序的入口地址(起始地址)
;设中断向量列表的首地址为0xf8,即第一个中断向量是存储单元0xf8
;安装0号中断向量0xf8,0xf8中保存0号中断服务程序的入口地址
lea a, int_0
mov r0, 0xf8
mov [r0], a
;安装3号中断向量0xfb,0xfb中保存3号中断服务程序的入口地址
lea a, int_3
mov r0, 0xfb
mov [r0], a
;安装5号中断向量0xfd,0xfd中保存5号中断服务程序的入口地址
lea a, int_5
mov r0, 0xfd
mov [r0], a
;=======================================================
;主程序代码
mov a, -1
LOOPC:
mov r0, 1
add a, r0
jmp LOOPC
;=======================================================
;中断服务程序
;0号中断的服务程序
int_0:
mov a, 0x10
adc a, -1
iret
;3号中断的服务程序
int_3:
mov a, 0x13
or a, [r0]
sbb a, -1
iret
;5号中断的服务程序
int_5:
mov r2, 3
mov a, 1
and a, r2
iret
@echo off
dmasm.exe ram.asm -o ram.rxm -l ram.lst -g ram.dbg
pause
添加文件
0001 ; 示例程序
0002
0003 .text
0004
0005 00 9C F8 mov sp, 0xf8 ;初始化栈指针寄存器
0006
0007 ;=======================================================
0008 ;安装中断向量,安装中断的过程是将各个中断服务程序的入口地址(首地址)保存到对应中断向量指向的存储单元中。
0009 ;中断向量本身是一个地址,它指向一个存储单元,该存储单元保存的就是某个中断服务程序的入口地址(起始地址)
0010 ;设中断向量列表的首地址为0xf8,即第一个中断向量是存储单元0xf8
0011
0012 ;安装0号中断向量0xf8,0xf8中保存0号中断服务程序的入口地址
0013 02 98 18 lea a, int_0
0014 04 8C F8 mov r0, 0xf8
0015 06 84 mov [r0], a
0016
0017
0018 ;安装3号中断向量0xfb,0xfb中保存3号中断服务程序的入口地址
0019 07 98 1D lea a, int_3
0020 09 8C FB mov r0, 0xfb
0021 0B 84 mov [r0], a
0022
0023
0024 ;安装5号中断向量0xfd,0xfd中保存5号中断服务程序的入口地址
0025 0C 98 23 lea a, int_5
0026 0E 8C FD mov r0, 0xfd
0027 10 84 mov [r0], a
0028
0029
0030 ;=======================================================
0031 ;主程序代码
0032
0033 11 7C FF mov a, -1
0034
0035 LOOPC:
0036 13 8C 01 mov r0, 1
0037 15 10 add a, r0
0038
0039 16 AC 13 jmp LOOPC
0040
0041
0042 ;=======================================================
0043 ;中断服务程序
0044 ;0号中断的服务程序
0045 int_0:
0046 18 7C 10 mov a, 0x10
0047 1A 2C FF adc a, -1
0048 1C F8 iret
0049
0050
0051 ;3号中断的服务程序
0052 int_3:
0053 1D 7C 13 mov a, 0x13
0054 1F 64 or a, [r0]
0055 20 4C FF sbb a, -1
0056 22 F8 iret
0057
0058
0059 ;5号中断的服务程序
0060 int_5:
0061 23 8E 03 mov r2, 3
0062 25 7C 01 mov a, 1
0063 27 52 and a, r2
0064 28 F8 iret
0065
添加文件
# 说明
基于 DM1000 的硬中断实现
# 原理图
![raw svg](Hardware-IRQ.dlsche.svg)
\ No newline at end of file
@echo off
microasm.exe rom.masm -o rom.rxm -l rom.lst -g rom.dbg
pause
\ No newline at end of file
添加文件
0001
0002
0003 ; 所有指令的第一条微指令地址必须是8的倍数
0004 ; 取指微指令,所有指令的第一步均为取指操作,都要执行该条微指令
0005 00 EF 3F F9 FF path [pc], ir
0006
0007 ; 填充空白指令 01-1f
0008 04 FF FF FF FF dup 31, null
0009
0010 ; add a, rx
0011 80 EF FF FA 7F path rx, w
0012 84 EF FF E4 99 path alu_add, a
0013 88 FF FF FF FF inc pc
0014
0015 ;查询硬中断请求,将低3位中断号与高5位中断向量基地址组合,得到8位中断向量(8位地址)
0016 ;该中断向量指向一个存储单元,该存储单元保存的就是中断服务程序的入口地址
0017 ;若允许中断且有中断请求,则微程序跳转到硬中断处理处执行
0018 8C AF FF FF FF ask_for_int
0019 90 CF FF FF FF reset upc
0020
0021 94 FF FF FF FF dup 3, null
0022
0023 ; add a, [rx]
0024 A0 EF F7 FA FF path rx, mar
0025 A4 EF FB F9 7F path [mar], w
0026 A8 EF FF E4 99 path alu_add, a
0027 AC FF FF FF FF inc pc
0028 B0 AF FF FF FF ask_for_int
0029 B4 CF FF FF FF reset upc
0030
0031 B8 FF FF FF FF dup 2, null
0032
0033 ; add a, symbol
0034 C0 FF FF FF FF inc pc
0035 C4 EF 77 F9 FF path [pc], mar
0036 C8 EF FB F9 7F path [mar], w
0037 CC EF FF E4 99 path alu_add, a
0038 D0 FF FF FF FF inc pc
0039 D4 AF FF FF FF ask_for_int
0040 D8 CF FF FF FF reset upc
0041
0042 DC FF FF FF FF dup 1, null
0043
0044 ; add a, immediate
0045 E0 FF FF FF FF inc pc
0046 E4 EF 7F F9 7F path [pc], w
0047 E8 EF FF E4 99 path alu_add, a
0048 EC FF FF FF FF inc pc
0049 F0 AF FF FF FF ask_for_int ;查询硬中断请求,若有请求,则转去执行硬中断预处理微程序
0050 F4 CF FF FF FF reset upc
0051
0052 F8 FF FF FF FF dup 2, null
0053
0054 ; adc a, rx
0055 100 EF FF FA 7F path rx, w
0056 104 EF FF E4 89 path alu_adc, a
0057 108 FF FF FF FF inc pc
0058 10C AF FF FF FF ask_for_int
0059 110 CF FF FF FF reset upc
0060
0061 114 FF FF FF FF dup 3, null
0062
0063 ; adc a, [rx]
0064 120 EF F7 FA FF path rx, mar
0065 124 EF FB F9 7F path [mar], w
0066 128 EF FF E4 89 path alu_adc, a
0067 12C FF FF FF FF inc pc
0068 130 AF FF FF FF ask_for_int
0069 134 CF FF FF FF reset upc
0070
0071 138 FF FF FF FF dup 2, null
0072
0073 ; adc a, symbol
0074 140 FF FF FF FF inc pc
0075 144 EF 77 F9 FF path [pc], mar
0076 148 EF FB F9 7F path [mar], w
0077 14C EF FF E4 89 path alu_adc, a
0078 150 FF FF FF FF inc pc
0079 154 AF FF FF FF ask_for_int
0080 158 CF FF FF FF reset upc
0081
0082 15C FF FF FF FF dup 1, null
0083
0084 ; adc a, immediate
0085 160 FF FF FF FF inc pc
0086 164 EF 7F F9 7F path [pc], w
0087 168 EF FF E4 89 path alu_adc, a
0088 16C FF FF FF FF inc pc
0089 170 AF FF FF FF ask_for_int
0090 174 CF FF FF FF reset upc
0091
0092 178 FF FF FF FF dup 2, null
0093
0094 ; sub a, rx
0095 180 EF FF FA 7F path rx, w
0096 184 EF FF E4 86 path alu_sub, a
0097 188 FF FF FF FF inc pc
0098 18C AF FF FF FF ask_for_int
0099 190 CF FF FF FF reset upc
0100
0101 194 FF FF FF FF dup 3, null
0102
0103 ; sub a, [rx]
0104 1A0 EF F7 FA FF path rx, mar
0105 1A4 EF FB F9 7F path [mar], w
0106 1A8 EF FF E4 86 path alu_sub, a
0107 1AC FF FF FF FF inc pc
0108 1B0 AF FF FF FF ask_for_int
0109 1B4 CF FF FF FF reset upc
0110
0111 1B8 FF FF FF FF dup 2, null
0112
0113 ; sub a, symbol
0114 1C0 FF FF FF FF inc pc
0115 1C4 EF 77 F9 FF path [pc], mar
0116 1C8 EF FB F9 7F path [mar], w
0117 1CC EF FF E4 86 path alu_sub, a
0118 1D0 FF FF FF FF inc pc
0119 1D4 AF FF FF FF ask_for_int
0120 1D8 CF FF FF FF reset upc
0121
0122 1DC FF FF FF FF dup 1, null
0123
0124 ; sub a, immediate
0125 1E0 FF FF FF FF inc pc
0126 1E4 EF 7F F9 7F path [pc], w
0127 1E8 EF FF E4 86 path alu_sub, a
0128 1EC FF FF FF FF inc pc
0129 1F0 AF FF FF FF ask_for_int
0130 1F4 CF FF FF FF reset upc
0131
0132 1F8 FF FF FF FF dup 2, null
0133
0134 ; sbb a, rx
0135 200 EF FF FA 7F path rx, w
0136 204 EF FF E4 96 path alu_sbb, a
0137 208 FF FF FF FF inc pc
0138 20C AF FF FF FF ask_for_int
0139 210 CF FF FF FF reset upc
0140
0141 214 FF FF FF FF dup 3, null
0142
0143 ; sbb a, [rx]
0144 220 EF F7 FA FF path rx, mar
0145 224 EF FB F9 7F path [mar], w
0146 228 EF FF E4 96 path alu_sbb, a
0147 22C FF FF FF FF inc pc
0148 230 AF FF FF FF ask_for_int
0149 234 CF FF FF FF reset upc
0150
0151 238 FF FF FF FF dup 2, null
0152
0153 ; sbb a, symbol
0154 240 FF FF FF FF inc pc
0155 244 EF 77 F9 FF path [pc], mar
0156 248 EF FB F9 7F path [mar], w
0157 24C EF FF E4 96 path alu_sbb, a
0158 250 FF FF FF FF inc pc
0159 254 AF FF FF FF ask_for_int
0160 258 CF FF FF FF reset upc
0161
0162 25C FF FF FF FF dup 1, null
0163
0164 ; sbb a, immediate
0165 260 FF FF FF FF inc pc
0166 264 EF 7F F9 7F path [pc], w
0167 268 EF FF E4 96 path alu_sbb, a
0168 26C FF FF FF FF inc pc
0169 270 AF FF FF FF ask_for_int
0170 274 CF FF FF FF reset upc
0171
0172 278 FF FF FF FF dup 2, null
0173
0174 ; and a, rx
0175 280 EF FF FA 7F path rx, w
0176 284 EF FF E4 BB path alu_and a
0177 288 FF FF FF FF inc pc
0178 28C AF FF FF FF ask_for_int
0179 290 CF FF FF FF reset upc
0180
0181 294 FF FF FF FF dup 3, null
0182
0183 ; and a, [rx]
0184 2A0 EF F7 FA FF path rx, mar
0185 2A4 EF FB F9 7F path [mar], w
0186 2A8 EF FF E4 BB path alu_and, a
0187 2AC FF FF FF FF inc pc
0188 2B0 AF FF FF FF ask_for_int
0189 2B4 CF FF FF FF reset upc
0190
0191 2B8 FF FF FF FF dup 2, null
0192
0193 ; and a, symbol
0194 2C0 FF FF FF FF inc pc
0195 2C4 EF 77 F9 FF path [pc], mar
0196 2C8 EF FB F9 7F path [mar], w
0197 2CC EF FF E4 BB path alu_and, a
0198 2D0 FF FF FF FF inc pc
0199 2D4 AF FF FF FF ask_for_int
0200 2D8 CF FF FF FF reset upc
0201
0202 2DC FF FF FF FF dup 1, null
0203
0204 ; and a, immediate
0205 2E0 FF FF FF FF inc pc
0206 2E4 EF 7F F9 7F path [pc], w
0207 2E8 EF FF E4 BB path alu_and, a
0208 2EC FF FF FF FF inc pc
0209 2F0 AF FF FF FF ask_for_int
0210 2F4 CF FF FF FF reset upc
0211
0212 2F8 FF FF FF FF dup 2, null
0213
0214 ; or a, rx
0215 300 EF FF FA 7F path rx, w
0216 304 EF FF E4 BE path alu_or a
0217 308 FF FF FF FF inc pc
0218 30C AF FF FF FF ask_for_int
0219 310 CF FF FF FF reset upc
0220
0221 314 FF FF FF FF dup 3, null
0222
0223 ; or a, [rx]
0224 320 EF F7 FA FF path rx, mar
0225 324 EF FB F9 7F path [mar], w
0226 328 EF FF E4 BE path alu_or, a
0227 32C FF FF FF FF inc pc
0228 330 AF FF FF FF ask_for_int
0229 334 CF FF FF FF reset upc
0230
0231 338 FF FF FF FF dup 2, null
0232
0233 ; or a, symbol
0234 340 FF FF FF FF inc pc
0235 344 EF 77 F9 FF path [pc], mar
0236 348 EF FB F9 7F path [mar], w
0237 34C EF FF E4 BE path alu_or, a
0238 350 FF FF FF FF inc pc
0239 354 AF FF FF FF ask_for_int
0240 358 CF FF FF FF reset upc
0241
0242 35C FF FF FF FF dup 1, null
0243
0244 ; or a, immediate
0245 360 FF FF FF FF inc pc
0246 364 EF 7F F9 7F path [pc], w
0247 368 EF FF E4 BE path alu_or, a
0248 36C FF FF FF FF inc pc
0249 370 AF FF FF FF ask_for_int
0250 374 CF FF FF FF reset upc
0251
0252 378 FF FF FF FF dup 2, null
0253
0254 ; mov a, rx
0255 380 EF FF FA BF path rx, a
0256 384 FF FF FF FF inc pc
0257 388 AF FF FF FF ask_for_int
0258 38C CF FF FF FF reset upc
0259
0260 390 FF FF FF FF dup 4, null
0261
0262 ; mov a, [rx]
0263 3A0 EF F7 FA FF path rx, mar
0264 3A4 EF FB F9 BF path [mar], a
0265 3A8 FF FF FF FF inc pc
0266 3AC AF FF FF FF ask_for_int
0267 3B0 CF FF FF FF reset upc
0268
0269 3B4 FF FF FF FF dup 3, null
0270
0271 ; mov a, symbol
0272 3C0 FF FF FF FF inc pc
0273 3C4 EF 77 F9 FF path [pc], mar
0274 3C8 EF FB F9 BF path [mar], a
0275 3CC FF FF FF FF inc pc
0276 3D0 AF FF FF FF ask_for_int
0277 3D4 CF FF FF FF reset upc
0278
0279 3D8 FF FF FF FF dup 2, null
0280
0281 ; mov a, immediate
0282 3E0 FF FF FF FF inc pc
0283 3E4 EF 7F F9 BF path [pc], a
0284 3E8 FF FF FF FF inc pc
0285 3EC AF FF FF FF ask_for_int
0286 3F0 CF FF FF FF reset upc
0287
0288 3F4 FF FF FF FF dup 3, null
0289
0290 ; mov rx, a
0291 400 EF FF B4 D0 path a, rx
0292 404 FF FF FF FF inc pc
0293 408 AF FF FF FF ask_for_int
0294 40C CF FF FF FF reset upc
0295
0296 410 FF FF FF FF dup 4, null
0297
0298 ; mov [rx], a
0299 420 EF F7 FA FF path rx, mar
0300 424 ED FB F4 D0 path a, [mar]
0301 428 FF FF FF FF inc pc
0302 42C AF FF FF FF ask_for_int
0303 430 CF FF FF FF reset upc
0304
0305 434 FF FF FF FF dup 3, null
0306
0307 ; mov symbol, a
0308 440 FF FF FF FF inc pc
0309 444 EF 77 F9 FF path [pc], mar
0310 448 ED FB F4 D0 path a, [mar]
0311 44C FF FF FF FF inc pc
0312 450 AF FF FF FF ask_for_int
0313 454 CF FF FF FF reset upc
0314
0315 458 FF FF FF FF dup 2, null
0316
0317 ; mov rx, immediate
0318 460 FF FF FF FF inc pc
0319 464 EF 7F B9 FF path [pc], rx
0320 468 FF FF FF FF inc pc
0321 46C AF FF FF FF ask_for_int
0322 470 CF FF FF FF reset upc
0323
0324 474 FF FF FF FF dup 3, null
0325
0326 ; 空白存储块
0327 480 FF FF FF FF dup 16, null
0328
0329 ; lea a, symbol
0330 4C0 FF FF FF FF inc pc
0331 4C4 EF 7F F9 BF path [pc], a
0332 4C8 FF FF FF FF inc pc
0333 4CC AF FF FF FF ask_for_int
0334 4D0 CF FF FF FF reset upc
0335
0336 4D4 FF FF FF FF dup 3, null
0337
0338 ;mov sp, immediate
0339 4E0 FF FF FF FF inc pc
0340 4E4 EF 7E F9 FF path [pc], sp
0341 4E8 FF FF FF FF inc pc
0342 4EC AF FF FF FF ask_for_int
0343 4F0 CF FF FF FF reset upc
0344
0345 4F4 FF FF FF FF dup 3, null
0346
0347 ; jc symbol
0348 500 FF FF FF FF inc pc
0349 504 FF 6F F9 FF path [pc], pc
0350 508 AF FF FF FF ask_for_int
0351 50C CF FF FF FF reset upc
0352
0353 510 FF FF FF FF dup 4, null
0354
0355 ; jz symbol
0356 520 FF FF FF FF inc pc
0357 524 FF 6F F9 FF path [pc], pc
0358 528 AF FF FF FF ask_for_int
0359 52C CF FF FF FF reset upc
0360
0361 530 FF FF FF FF dup 4, null
0362
0363 ; 填充空白指令
0364 540 FF FF FF FF dup 8, null
0365
0366 ; jmp symbol
0367 560 FF FF FF FF inc pc
0368 564 FF 6F F9 FF path [pc], pc
0369 568 AF FF FF FF ask_for_int
0370 56C CF FF FF FF reset upc
0371
0372 570 FF FF FF FF dup 4, null
0373
0374 ; in
0375 580 EF FF F0 BF path rin, a
0376 584 FF FF FF FF inc pc
0377 588 AF FF FF FF ask_for_int
0378 58C CF FF FF FF reset upc
0379
0380 590 FF FF FF FF dup 4, null
0381
0382 ; out
0383 5A0 EE FF F4 D0 path a, rout
0384 5A4 FF FF FF FF inc pc
0385 5A8 AF FF FF FF ask_for_int
0386 5AC CF FF FF FF reset upc
0387
0388 5B0 FF FF FF FF dup 4, null
0389
0390 ; int immediate
0391 5C0 FF FF FF FF inc pc
0392 5C4 EB 7F F9 FF path [pc], ia
0393 5C8 EF FF 72 FF path sp, csp
0394 5CC E7 FF FF FF path sp_inc, csp
0395 5D0 EF FE F8 FF path csp, sp
0396 5D4 EF F7 F2 FF path sp, mar
0397 5D8 FF FF FF FF inc pc
0398 5DC ED FB F3 FF path pc, [mar]
0399 5E0 EF F7 F1 FF path ia, mar
0400 5E4 EF EB F9 FF path [mar], pc
0401 5E8 CF FF FF FF reset upc
0402
0403 5EC FF FF FF FF dup 5, null
0404
0405 ;
0406 600 FF FF FF FF dup 16, null
0407
0408 ;=====================================================================
0409 ;子程序调用返回指令
0410 ; ret
0411 640 EF F7 F2 FF path sp, mar ;将堆栈指针(栈顶地址)传送到 MAR
0412 644 EF FF 72 FF path sp, csp ;
0413 648 E7 FF FF FF path sp_inc, csp ;
0414 64C EF FE F8 FF path csp, sp ;SP = SP + 1,出栈,更新栈顶
0415 650 EF EB F9 FF path [mar], pc ;将调用返回地址加载到PC,转移到调用处的下一条指令继续执行
0416 654 CF FF FF FF reset upc
0417
0418 658 FF FF FF FF dup 2, null
0419 ;=====================================================================
0420
0421 ; 填充空白指令
0422 660 FF FF FF FF dup 8, null
0423
0424 ; shr a
0425 680 EF FF D5 90 path alu_shr, a
0426 684 FF FF FF FF inc pc
0427 688 AF FF FF FF ask_for_int
0428 68C CF FF FF FF reset upc
0429
0430 690 FF FF FF FF dup 4, null
0431
0432 ; shl a
0433 6A0 EF FF D6 90 path alu_shl, a
0434 6A4 FF FF FF FF inc pc
0435 6A8 AF FF FF FF ask_for_int
0436 6AC CF FF FF FF reset upc
0437
0438 6B0 FF FF FF FF dup 4, null
0439
0440 ; rcr a
0441 6C0 EF FF E5 90 path alu_rcr, a
0442 6C4 FF FF FF FF inc pc
0443 6C8 AF FF FF FF ask_for_int
0444 6CC CF FF FF FF reset upc
0445
0446 6D0 FF FF FF FF dup 4, null
0447
0448 ; rcl a
0449 6E0 EF FF E6 90 path alu_rcl, a
0450 6E4 FF FF FF FF inc pc
0451 6E8 AF FF FF FF ask_for_int
0452 6EC CF FF FF FF reset upc
0453
0454 6F0 FF FF FF FF dup 4, null
0455
0456 ; nop
0457 700 FF FF FF FF inc pc
0458 704 CF FF FF FF reset upc
0459
0460 708 FF FF FF FF dup 6, null
0461
0462 ; not a
0463 720 EF FF F4 B0 path alu_not, a
0464 724 FF FF FF FF inc pc
0465 728 AF FF FF FF ask_for_int
0466 72C CF FF FF FF reset upc
0467
0468 730 FF FF FF FF dup 4, null
0469
0470 ; call symbol
0471 740 FF FF FF FF inc pc
0472 744 EF 7D F9 FF path [pc], asr
0473 748 EF FF 72 FF path sp, csp
0474 74C EF FF FF FF path sp_dec, csp
0475 750 EF FE F8 FF path csp, sp
0476 754 EF F7 F2 FF path sp, mar
0477 758 FF FF FF FF inc pc
0478 75C ED FB F3 FF path pc, [mar]
0479 760 EF EF F7 FF path asr, pc
0480 764 AF FF FF FF ask_for_int
0481 768 CF FF FF FF reset upc
0482
0483 76C FF FF FF FF dup 5, null
0484
0485 ;======================================================================
0486 ; 硬中断处理微程序。
0487 ; 硬中断处理完成返回地址入栈,然后加载中断服务程序入口地址到PC的工作。
0488
0489 ; 中断返回地址是下一条指令的地址,这是因为当前指令已经执行完毕,是在该指令执行完成后才查询到中断请求的,
0490 ; 因此,中断返回后应该从当前指令的下一条指令开始执行
0491
0492 ; sp减1,指向新的栈顶,为入栈对象分配一个存储单元。入栈时,栈顶向地址方向生长
0493 780 EF FF 72 FF path sp, csp ;将栈指针寄存器sp的值传送到csp计数器
0494 784 EF FF FF FF path sp_dec, csp ;计数器csp减1
0495 788 EF FE F8 FF path csp, sp ;将减计数结果写回sp,完成栈指针sp-1操作,为返回地址入栈做准备
0496
0497 ; 中断返回地址入栈
0498 78C EF F7 F2 FF path sp, mar ;sp栈指针寄存器内容传送到地址寄存器mar
0499 790 ED FB F3 FF path pc, [mar] ;将返回地址PC入栈
0500
0501 ; 根据中断号获取中断服务程序入口地址
0502 794 EF FF FB FF inta1 ;发出第一个中断应答信号,中断控制器保存最高优先级中断请求对应的编号(0~7)
0503 798 EB FF FC FF inta2 ;发出第二个中断应答信号,将响应中断的终端号读入IA寄存器中,并清除响应的中断请求,避免重复响应
0504
0505 ; 由中断号(中断向量偏移地址)与中断向量基地址0xf8相加得到当前响应的中断向量
0506 79C EF F7 F1 FF path int_ia, mar ;将中断向量(ia寄存器的内容)传入mar
0507 7A0 EF EB F9 FF path [mar], pc ;读出中断向量中的内容(中断服务程序入口地址),将其加载到PC,转去执行中断服务程序
0508 7A4 CF FF FF FF reset upc
0509
0510 7A8 FF FF FF FF dup 6, null
0511
0512 ;======================================================================
0513 ;中断返回指令
0514 ; iret
0515 ;中断返回就是出栈过程,将栈顶指针sp指向的存储单元内的返回地址加载到PC,实现中断返回
0516 ;与此同时,sp加1,指向新的栈顶
0517 ; 后进先出
0518
0519 ; 中断返回地址出栈,将sp指向存储单元保存的返回地址加载到PC中
0520 7C0 EF F7 F2 FF path sp, mar
0521 7C4 EF EB F9 FF path [mar], pc
0522
0523 ; 出栈时,sp加1,栈顶向高地址方向生长
0524 7C8 EF FF 72 FF path sp, csp ;sp传入csp计数器
0525 7CC E7 FF FF FF path sp_inc, csp ;csp计数器加1
0526 7D0 EF FE F8 FF path csp, sp ;将csp加1后的结果写入sp,sp指向新的栈顶
0527
0528 ;发出中断返回命令,清除已经服务完的硬中断标志
0529 7D4 EF FF FD FF eoi
0530
0531 ; 查询中断请求,若存在,则继续响应中断
0532 7D8 AF FF FF FF ask_for_int
0533 7DC CF FF FF FF reset upc
; 所有指令的第一条微指令地址必须是8的倍数
; 取指微指令,所有指令的第一步均为取指操作,都要执行该条微指令
path [pc], ir
; 填充空白指令 01-1f
dup 31, null
; add a, rx
path rx, w
path alu_add, a
inc pc
;查询硬中断请求,将低3位中断号与高5位中断向量基地址组合,得到8位中断向量(8位地址)
;该中断向量指向一个存储单元,该存储单元保存的就是中断服务程序的入口地址
;若允许中断且有中断请求,则微程序跳转到硬中断处理处执行
ask_for_int
reset upc
dup 3, null
; add a, [rx]
path rx, mar
path [mar], w
path alu_add, a
inc pc
ask_for_int
reset upc
dup 2, null
; add a, symbol
inc pc
path [pc], mar
path [mar], w
path alu_add, a
inc pc
ask_for_int
reset upc
dup 1, null
; add a, immediate
inc pc
path [pc], w
path alu_add, a
inc pc
ask_for_int ;查询硬中断请求,若有请求,则转去执行硬中断预处理微程序
reset upc
dup 2, null
; adc a, rx
path rx, w
path alu_adc, a
inc pc
ask_for_int
reset upc
dup 3, null
; adc a, [rx]
path rx, mar
path [mar], w
path alu_adc, a
inc pc
ask_for_int
reset upc
dup 2, null
; adc a, symbol
inc pc
path [pc], mar
path [mar], w
path alu_adc, a
inc pc
ask_for_int
reset upc
dup 1, null
; adc a, immediate
inc pc
path [pc], w
path alu_adc, a
inc pc
ask_for_int
reset upc
dup 2, null
; sub a, rx
path rx, w
path alu_sub, a
inc pc
ask_for_int
reset upc
dup 3, null
; sub a, [rx]
path rx, mar
path [mar], w
path alu_sub, a
inc pc
ask_for_int
reset upc
dup 2, null
; sub a, symbol
inc pc
path [pc], mar
path [mar], w
path alu_sub, a
inc pc
ask_for_int
reset upc
dup 1, null
; sub a, immediate
inc pc
path [pc], w
path alu_sub, a
inc pc
ask_for_int
reset upc
dup 2, null
; sbb a, rx
path rx, w
path alu_sbb, a
inc pc
ask_for_int
reset upc
dup 3, null
; sbb a, [rx]
path rx, mar
path [mar], w
path alu_sbb, a
inc pc
ask_for_int
reset upc
dup 2, null
; sbb a, symbol
inc pc
path [pc], mar
path [mar], w
path alu_sbb, a
inc pc
ask_for_int
reset upc
dup 1, null
; sbb a, immediate
inc pc
path [pc], w
path alu_sbb, a
inc pc
ask_for_int
reset upc
dup 2, null
; and a, rx
path rx, w
path alu_and a
inc pc
ask_for_int
reset upc
dup 3, null
; and a, [rx]
path rx, mar
path [mar], w
path alu_and, a
inc pc
ask_for_int
reset upc
dup 2, null
; and a, symbol
inc pc
path [pc], mar
path [mar], w
path alu_and, a
inc pc
ask_for_int
reset upc
dup 1, null
; and a, immediate
inc pc
path [pc], w
path alu_and, a
inc pc
ask_for_int
reset upc
dup 2, null
; or a, rx
path rx, w
path alu_or a
inc pc
ask_for_int
reset upc
dup 3, null
; or a, [rx]
path rx, mar
path [mar], w
path alu_or, a
inc pc
ask_for_int
reset upc
dup 2, null
; or a, symbol
inc pc
path [pc], mar
path [mar], w
path alu_or, a
inc pc
ask_for_int
reset upc
dup 1, null
; or a, immediate
inc pc
path [pc], w
path alu_or, a
inc pc
ask_for_int
reset upc
dup 2, null
; mov a, rx
path rx, a
inc pc
ask_for_int
reset upc
dup 4, null
; mov a, [rx]
path rx, mar
path [mar], a
inc pc
ask_for_int
reset upc
dup 3, null
; mov a, symbol
inc pc
path [pc], mar
path [mar], a
inc pc
ask_for_int
reset upc
dup 2, null
; mov a, immediate
inc pc
path [pc], a
inc pc
ask_for_int
reset upc
dup 3, null
; mov rx, a
path a, rx
inc pc
ask_for_int
reset upc
dup 4, null
; mov [rx], a
path rx, mar
path a, [mar]
inc pc
ask_for_int
reset upc
dup 3, null
; mov symbol, a
inc pc
path [pc], mar
path a, [mar]
inc pc
ask_for_int
reset upc
dup 2, null
; mov rx, immediate
inc pc
path [pc], rx
inc pc
ask_for_int
reset upc
dup 3, null
; 空白存储块
dup 16, null
; lea a, symbol
inc pc
path [pc], a
inc pc
ask_for_int
reset upc
dup 3, null
;mov sp, immediate
inc pc
path [pc], sp
inc pc
ask_for_int
reset upc
dup 3, null
; jc symbol
inc pc
path [pc], pc
ask_for_int
reset upc
dup 4, null
; jz symbol
inc pc
path [pc], pc
ask_for_int
reset upc
dup 4, null
; 填充空白指令
dup 8, null
; jmp symbol
inc pc
path [pc], pc
ask_for_int
reset upc
dup 4, null
; in
path rin, a
inc pc
ask_for_int
reset upc
dup 4, null
; out
path a, rout
inc pc
ask_for_int
reset upc
dup 4, null
; int immediate
inc pc
path [pc], ia
path sp, csp
path sp_inc, csp
path csp, sp
path sp, mar
inc pc
path pc, [mar]
path ia, mar
path [mar], pc
reset upc
dup 5, null
;
dup 16, null
;=====================================================================
;子程序调用返回指令
; ret
path sp, mar ;将堆栈指针(栈顶地址)传送到 MAR
path sp, csp ;
path sp_inc, csp ;
path csp, sp ;SP = SP + 1,出栈,更新栈顶
path [mar], pc ;将调用返回地址加载到PC,转移到调用处的下一条指令继续执行
reset upc
dup 2, null
;=====================================================================
; 填充空白指令
dup 8, null
; shr a
path alu_shr, a
inc pc
ask_for_int
reset upc
dup 4, null
; shl a
path alu_shl, a
inc pc
ask_for_int
reset upc
dup 4, null
; rcr a
path alu_rcr, a
inc pc
ask_for_int
reset upc
dup 4, null
; rcl a
path alu_rcl, a
inc pc
ask_for_int
reset upc
dup 4, null
; nop
inc pc
reset upc
dup 6, null
; not a
path alu_not, a
inc pc
ask_for_int
reset upc
dup 4, null
; call symbol
inc pc
path [pc], asr
path sp, csp
path sp_dec, csp
path csp, sp
path sp, mar
inc pc
path pc, [mar]
path asr, pc
ask_for_int
reset upc
dup 5, null
;======================================================================
; 硬中断处理微程序。
; 硬中断处理完成返回地址入栈,然后加载中断服务程序入口地址到PC的工作。
; 中断返回地址是下一条指令的地址,这是因为当前指令已经执行完毕,是在该指令执行完成后才查询到中断请求的,
; 因此,中断返回后应该从当前指令的下一条指令开始执行
; sp减1,指向新的栈顶,为入栈对象分配一个存储单元。入栈时,栈顶向地址方向生长
path sp, csp ;将栈指针寄存器sp的值传送到csp计数器
path sp_dec, csp ;计数器csp减1
path csp, sp ;将减计数结果写回sp,完成栈指针sp-1操作,为返回地址入栈做准备
; 中断返回地址入栈
path sp, mar ;sp栈指针寄存器内容传送到地址寄存器mar
path pc, [mar] ;将返回地址PC入栈
; 根据中断号获取中断服务程序入口地址
inta1 ;发出第一个中断应答信号,中断控制器保存最高优先级中断请求对应的编号(0~7)
inta2 ;发出第二个中断应答信号,将响应中断的终端号读入IA寄存器中,并清除响应的中断请求,避免重复响应
; 由中断号(中断向量偏移地址)与中断向量基地址0xf8相加得到当前响应的中断向量
path int_ia, mar ;将中断向量(ia寄存器的内容)传入mar
path [mar], pc ;读出中断向量中的内容(中断服务程序入口地址),将其加载到PC,转去执行中断服务程序
reset upc
dup 6, null
;======================================================================
;中断返回指令
; iret
;中断返回就是出栈过程,将栈顶指针sp指向的存储单元内的返回地址加载到PC,实现中断返回
;与此同时,sp加1,指向新的栈顶
; 后进先出
; 中断返回地址出栈,将sp指向存储单元保存的返回地址加载到PC中
path sp, mar
path [mar], pc
; 出栈时,sp加1,栈顶向高地址方向生长
path sp, csp ;sp传入csp计数器
path sp_inc, csp ;csp计数器加1
path csp, sp ;将csp加1后的结果写入sp,sp指向新的栈顶
;发出中断返回命令,清除已经服务完的硬中断标志
eoi
; 查询中断请求,若存在,则继续响应中断
ask_for_int
reset upc
添加文件
添加文件
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<svg height="3794" version="1.1" width="3258" xmlns="http://www.w3.org/2000/svg">
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1527" x2="1487" y1="656" y2="656"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1590" y="656">^A0</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1506" y="656">2</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1527" x2="1487" y1="686" y2="686"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1590" y="686">^A1</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1519" y="686">23</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1527" x2="1487" y1="716" y2="716"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1590" y="716">^A2</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1519" y="716">21</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1527" x2="1487" y1="746" y2="746"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1590" y="746">^A3</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1519" y="746">19</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1527" x2="1487" y1="806" y2="806"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1590" y="806">^B0</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1506" y="804">1</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1527" x2="1487" y1="836" y2="836"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1590" y="836">^B1</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1520" y="835">22</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1527" x2="1487" y1="866" y2="866"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1590" y="866">^B2</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1520" y="865">20</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1527" x2="1487" y1="896" y2="896"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1590" y="896">^B3</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1520" y="895">18</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1537" x2="1487" y1="966" y2="966"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1580" y="966">S0</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1507" y="964">6</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1537" x2="1487" y1="996" y2="996"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1580" y="996">S1</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1507" y="995">5</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1537" x2="1487" y1="1026" y2="1026"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1580" y="1026">S2</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1507" y="1025">4</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1537" x2="1487" y1="1056" y2="1056"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1580" y="1056">S3</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1507" y="1055">3</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1537" x2="1487" y1="1116" y2="1116"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1580" y="1116">CN</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1507" y="1117">7</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1537" x2="1487" y1="1146" y2="1146"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1570" y="1146">M</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1507" y="1147">8</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1697" x2="1737" y1="926" y2="926"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="1654" y="926">^G</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1702" y="926">17</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1697" x2="1737" y1="896" y2="896"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="1654" y="896">^P</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1702" y="896">15</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1687" x2="1737" y1="836" y2="836"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="1654" y="836">AEQB</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1702" y="836">14</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1687" x2="1737" y1="806" y2="806"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="1654" y="806">CN4</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1702" y="806">16</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1697" x2="1737" y1="746" y2="746"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="1654" y="746">^F3</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1702" y="746">13</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1697" x2="1737" y1="716" y2="716"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="1654" y="716">^F2</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1702" y="716">11</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1697" x2="1737" y1="686" y2="686"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="1654" y="686">^F1</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1702" y="686">10</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1697" x2="1737" y1="656" y2="656"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="1654" y="656">^F0</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1715" y="655">9</text>
<circle cx="1532" cy="896" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1531" cy="716" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1531" cy="806" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1531" cy="746" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1531" cy="685" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1532" cy="866" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1532" cy="656" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1531" cy="836" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1691" cy="657" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1692" cy="687" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1692" cy="716" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1691" cy="746" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1691" cy="896" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1691" cy="927" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<rect fill="#ffffff" fill-opacity="0.5" height="550" stroke="#000000" stroke-width="5" width="150" x="1537" y="616"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="1604" y="596">U1</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="1547" y="1212">74LS181</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1527" x2="1487" y1="1356" y2="1356"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1590" y="1356">^A0</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1506" y="1356">2</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1527" x2="1487" y1="1386" y2="1386"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1590" y="1386">^A1</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1519" y="1386">23</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1527" x2="1487" y1="1416" y2="1416"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1590" y="1416">^A2</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1519" y="1416">21</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1527" x2="1487" y1="1446" y2="1446"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1590" y="1446">^A3</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1519" y="1446">19</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1527" x2="1487" y1="1506" y2="1506"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1590" y="1506">^B0</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1506" y="1504">1</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1527" x2="1487" y1="1536" y2="1536"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1590" y="1536">^B1</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1520" y="1535">22</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1527" x2="1487" y1="1566" y2="1566"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1590" y="1566">^B2</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1520" y="1565">20</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1527" x2="1487" y1="1596" y2="1596"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1590" y="1596">^B3</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1520" y="1595">18</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1537" x2="1487" y1="1666" y2="1666"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1580" y="1666">S0</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1507" y="1664">6</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1537" x2="1487" y1="1696" y2="1696"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1580" y="1696">S1</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1507" y="1695">5</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1537" x2="1487" y1="1726" y2="1726"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1580" y="1726">S2</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1507" y="1725">4</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1537" x2="1487" y1="1756" y2="1756"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1580" y="1756">S3</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1507" y="1755">3</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1537" x2="1487" y1="1816" y2="1816"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1580" y="1816">CN</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1507" y="1817">7</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1537" x2="1487" y1="1846" y2="1846"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1570" y="1846">M</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1507" y="1847">8</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1697" x2="1737" y1="1626" y2="1626"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="1654" y="1626">^G</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1702" y="1626">17</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1697" x2="1737" y1="1596" y2="1596"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="1654" y="1596">^P</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1702" y="1596">15</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1687" x2="1737" y1="1536" y2="1536"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="1654" y="1536">AEQB</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1702" y="1536">14</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1687" x2="1737" y1="1506" y2="1506"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="1654" y="1506">CN4</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1702" y="1506">16</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1697" x2="1737" y1="1446" y2="1446"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="1654" y="1446">^F3</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1702" y="1446">13</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1697" x2="1737" y1="1416" y2="1416"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="1654" y="1416">^F2</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1702" y="1416">11</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1697" x2="1737" y1="1386" y2="1386"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="1654" y="1386">^F1</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1702" y="1386">10</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1697" x2="1737" y1="1356" y2="1356"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="1654" y="1356">^F0</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1715" y="1355">9</text>
<circle cx="1532" cy="1596" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1531" cy="1416" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1531" cy="1506" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1531" cy="1446" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1531" cy="1385" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1532" cy="1566" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1532" cy="1356" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1531" cy="1536" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1691" cy="1357" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1692" cy="1387" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1692" cy="1416" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1691" cy="1446" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1691" cy="1596" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1691" cy="1627" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<rect fill="#ffffff" fill-opacity="0.5" height="550" stroke="#000000" stroke-width="5" width="150" x="1537" y="1316"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="1604" y="1296">U2</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="1547" y="1912">74LS181</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1527" x2="1487" y1="2096" y2="2096"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1590" y="2096">^A0</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1506" y="2096">2</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1527" x2="1487" y1="2126" y2="2126"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1590" y="2126">^A1</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1519" y="2126">23</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1527" x2="1487" y1="2156" y2="2156"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1590" y="2156">^A2</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1519" y="2156">21</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1527" x2="1487" y1="2186" y2="2186"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1590" y="2186">^A3</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1519" y="2186">19</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1527" x2="1487" y1="2246" y2="2246"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1590" y="2246">^B0</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1506" y="2244">1</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1527" x2="1487" y1="2276" y2="2276"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1590" y="2276">^B1</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1520" y="2275">22</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1527" x2="1487" y1="2306" y2="2306"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1590" y="2306">^B2</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1520" y="2305">20</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1527" x2="1487" y1="2336" y2="2336"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1590" y="2336">^B3</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1520" y="2335">18</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1537" x2="1487" y1="2406" y2="2406"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1580" y="2406">S0</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1507" y="2404">6</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1537" x2="1487" y1="2436" y2="2436"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1580" y="2436">S1</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1507" y="2435">5</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1537" x2="1487" y1="2466" y2="2466"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1580" y="2466">S2</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1507" y="2465">4</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1537" x2="1487" y1="2496" y2="2496"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1580" y="2496">S3</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1507" y="2495">3</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1537" x2="1487" y1="2556" y2="2556"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1580" y="2556">CN</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1507" y="2557">7</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1537" x2="1487" y1="2586" y2="2586"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1570" y="2586">M</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1507" y="2587">8</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1697" x2="1737" y1="2366" y2="2366"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="1654" y="2366">^G</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1702" y="2366">17</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1697" x2="1737" y1="2336" y2="2336"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="1654" y="2336">^P</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1702" y="2336">15</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1687" x2="1737" y1="2276" y2="2276"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="1654" y="2276">AEQB</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1702" y="2276">14</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1687" x2="1737" y1="2246" y2="2246"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="1654" y="2246">CN4</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1702" y="2246">16</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1697" x2="1737" y1="2186" y2="2186"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="1654" y="2186">^F3</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1702" y="2186">13</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1697" x2="1737" y1="2156" y2="2156"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="1654" y="2156">^F2</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1702" y="2156">11</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1697" x2="1737" y1="2126" y2="2126"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="1654" y="2126">^F1</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1702" y="2126">10</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1697" x2="1737" y1="2096" y2="2096"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="1654" y="2096">^F0</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1715" y="2095">9</text>
<circle cx="1532" cy="2336" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1531" cy="2156" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1531" cy="2246" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1531" cy="2186" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1531" cy="2125" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1532" cy="2306" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1532" cy="2096" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1531" cy="2276" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1691" cy="2097" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1692" cy="2127" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1692" cy="2156" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1691" cy="2186" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1691" cy="2336" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1691" cy="2367" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<rect fill="#ffffff" fill-opacity="0.5" height="550" stroke="#000000" stroke-width="5" width="150" x="1537" y="2056"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="1604" y="2036">U3</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="1547" y="2652">74LS181</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1527" x2="1487" y1="2886" y2="2886"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1590" y="2886">^A0</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1506" y="2886">2</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1527" x2="1487" y1="2916" y2="2916"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1590" y="2916">^A1</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1519" y="2916">23</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1527" x2="1487" y1="2946" y2="2946"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1590" y="2946">^A2</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1519" y="2946">21</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1527" x2="1487" y1="2976" y2="2976"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1590" y="2976">^A3</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1519" y="2976">19</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1527" x2="1487" y1="3036" y2="3036"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1590" y="3036">^B0</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1506" y="3034">1</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1527" x2="1487" y1="3066" y2="3066"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1590" y="3066">^B1</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1520" y="3065">22</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1527" x2="1487" y1="3096" y2="3096"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1590" y="3096">^B2</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1520" y="3095">20</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1527" x2="1487" y1="3126" y2="3126"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1590" y="3126">^B3</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1520" y="3125">18</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1537" x2="1487" y1="3196" y2="3196"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1580" y="3196">S0</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1507" y="3194">6</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1537" x2="1487" y1="3226" y2="3226"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1580" y="3226">S1</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1507" y="3225">5</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1537" x2="1487" y1="3256" y2="3256"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1580" y="3256">S2</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1507" y="3255">4</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1537" x2="1487" y1="3286" y2="3286"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1580" y="3286">S3</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1507" y="3285">3</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1537" x2="1487" y1="3346" y2="3346"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1580" y="3346">CN</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1507" y="3347">7</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1537" x2="1487" y1="3376" y2="3376"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1570" y="3376">M</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1507" y="3377">8</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1697" x2="1737" y1="3156" y2="3156"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="1654" y="3156">^G</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1702" y="3156">17</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1697" x2="1737" y1="3126" y2="3126"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="1654" y="3126">^P</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1702" y="3126">15</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1687" x2="1737" y1="3066" y2="3066"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="1654" y="3066">AEQB</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1702" y="3066">14</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1687" x2="1737" y1="3036" y2="3036"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="1654" y="3036">CN4</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1702" y="3036">16</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1697" x2="1737" y1="2976" y2="2976"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="1654" y="2976">^F3</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1702" y="2976">13</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1697" x2="1737" y1="2946" y2="2946"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="1654" y="2946">^F2</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1702" y="2946">11</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1697" x2="1737" y1="2916" y2="2916"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="1654" y="2916">^F1</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1702" y="2916">10</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1697" x2="1737" y1="2886" y2="2886"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="1654" y="2886">^F0</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1715" y="2885">9</text>
<circle cx="1532" cy="3126" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1531" cy="2946" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1531" cy="3036" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1531" cy="2976" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1531" cy="2915" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1532" cy="3096" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1532" cy="2886" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1531" cy="3066" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1691" cy="2887" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1692" cy="2917" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1692" cy="2946" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1691" cy="2976" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1691" cy="3126" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1691" cy="3157" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<rect fill="#ffffff" fill-opacity="0.5" height="550" stroke="#000000" stroke-width="5" width="150" x="1537" y="2846"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="1604" y="2826">U4</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="1547" y="3442">74LS181</text>
<polyline fill="none" points="1487 656, 1387 656, 1387 616, 1387 266, 437 266" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1487 686, 1367 686, 1367 616, 1367 286, 437 286" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1487 716, 1347 716, 1347 616, 1347 306, 437 306" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1487 746, 1327 746, 1327 616, 1327 326, 437 326" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1487 1356, 1307 1356, 1307 616, 1307 346, 437 346" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1487 1386, 1287 1386, 1287 616, 1287 366, 437 366" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1487 1416, 1267 1416, 1267 616, 1267 386, 437 386" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1487 1446, 1247 1446, 1247 616, 1247 406, 437 406" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1487 2096, 1227 2096, 1227 616, 1227 426, 437 426" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1487 2126, 1207 2126, 1207 616, 1207 446, 437 446" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1487 2156, 1187 2156, 1187 616, 1187 466, 437 466" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1487 2186, 1167 2186, 1167 616, 1167 486, 437 486" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1487 2886, 1147 2886, 1147 616, 1147 506, 437 506" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1487 2916, 1127 2916, 1127 616, 1127 526, 437 526" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1487 2946, 1107 2946, 1107 616, 1107 546, 437 546" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1487 2976, 1087 2976, 1087 616, 1087 566, 437 566" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1487 3126, 1147 3126, 1147 3466, 1147 3766, 437 3766" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1487 3096, 1127 3096, 1127 3466, 1127 3746, 437 3746" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1487 3066, 1107 3066, 1107 3466, 1107 3726, 437 3726" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1487 3036, 1087 3036, 1087 3466, 1087 3706, 437 3706" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1487 2336, 1067 2336, 1067 3466, 1067 3686, 437 3686" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1487 2306, 1047 2306, 1047 3466, 1047 3666, 437 3666" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1487 2276, 1027 2276, 1027 3466, 1027 3646, 437 3646" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1487 2246, 1007 2246, 1007 3466, 1007 3626, 437 3626" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1487 1596, 987 1596, 987 3466, 987 3606, 437 3606" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1487 1566, 967 1566, 967 3466, 967 3586, 437 3586" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1487 1536, 947 1536, 947 3466, 947 3566, 437 3566" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1487 1506, 927 1506, 927 3466, 927 3546, 437 3546" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1487 896, 907 896, 907 3466, 907 3526, 437 3526" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1487 836, 867 836, 867 3466, 867 3486, 437 3486" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1487 806, 847 806, 847 3466, 437 3466" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="387" x2="437" y1="616" y2="566"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="387" x2="437" y1="596" y2="546"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="387" x2="437" y1="576" y2="526"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="387" x2="437" y1="556" y2="506"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="387" x2="437" y1="536" y2="486"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="387" x2="437" y1="516" y2="466"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="387" x2="437" y1="496" y2="446"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="387" x2="437" y1="476" y2="426"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="387" x2="437" y1="456" y2="406"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="387" x2="437" y1="436" y2="386"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="387" x2="437" y1="416" y2="366"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="387" x2="437" y1="396" y2="346"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="387" x2="437" y1="376" y2="326"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="387" x2="437" y1="356" y2="306"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="387" x2="437" y1="336" y2="286"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="387" x2="437" y1="316" y2="266"/>
<polygon fill="#ffff80" points="37 266, 37 241, 212 241, 237 266, 212 291, 37 291, 37 266" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="37" y="266">uPC[15..0]</text>
<polyline fill="none" points="1737 806, 1787 806, 1787 1256, 1437 1256, 1437 1816, 1487 1816" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1737 1506, 1787 1506, 1787 1986, 1437 1986, 1437 2556, 1487 2556" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1737 2246, 1787 2246, 1787 2736, 1437 2736, 1437 3346, 1487 3346" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="107" x2="107" y1="906" y2="956"/>
<polygon fill="#ffffff" fill-opacity="0.5" points="107 906, 157 856, 57 856, 107 906" stroke="#000000" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Times New Roman" font-size="30" font-weight="700" text-anchor="start" x="97" y="896">1</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="97" y="826">U5</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="17" y="856">CONSTANT1</text>
<polyline fill="none" points="1487 966, 1397 966, 1397 3286, 1487 3286" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1487 3196, 1397 3196" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1487 2496, 1397 2496" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1487 2406, 1397 2406" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1487 1756, 1397 1756" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1487 1666, 1397 1666" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1487 1056, 1397 1056" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1737 1446, 2037 1446, 2037 1866, 2637 1866" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1737 1416, 2057 1416, 2057 1846, 2637 1846" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1737 1386, 2077 1386, 2077 1826, 2637 1826" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1737 1356, 2097 1356, 2097 1806, 2627 1806, 2637 1806" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1737 746, 2117 746, 2117 1786, 2637 1786" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1737 716, 2137 716, 2137 1766, 2637 1766" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1737 686, 2157 686, 2157 1746, 2637 1746" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1737 656, 2177 656, 2177 1726, 2637 1726" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1737 2096, 2037 2096, 2037 1886, 2637 1886" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1737 2126, 2057 2126, 2057 1906, 2637 1906" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1737 2156, 2077 2156, 2077 1926, 2637 1926" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1737 2186, 2097 2186, 2097 1946, 2637 1946" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1737 2886, 2117 2886, 2117 1966, 2637 1966" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1737 2916, 2137 2916, 2137 1986, 2637 1986" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1737 2946, 2157 2946, 2157 2006, 2637 2006" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1737 2976, 2177 2976, 2177 2026, 2637 2026" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="2637" x2="2687" y1="1726" y2="1676"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="2637" x2="2687" y1="1746" y2="1696"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="2637" x2="2687" y1="1766" y2="1716"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="2637" x2="2687" y1="1786" y2="1736"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="2637" x2="2687" y1="1806" y2="1756"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="2637" x2="2687" y1="1826" y2="1776"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="2637" x2="2687" y1="1846" y2="1796"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="2637" x2="2687" y1="1866" y2="1816"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="2637" x2="2687" y1="1886" y2="1836"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="2637" x2="2687" y1="1906" y2="1856"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="2637" x2="2687" y1="1926" y2="1876"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="2637" x2="2687" y1="1946" y2="1896"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="2637" x2="2687" y1="1966" y2="1916"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="2637" x2="2687" y1="1986" y2="1936"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="2637" x2="2687" y1="2006" y2="1956"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="2637" x2="2687" y1="2026" y2="1976"/>
<polyline fill="none" points="237 266, 387 266, 387 616" stroke="#000080" stroke-linecap="round" stroke-linejoin="round" stroke-width="20"/>
<polyline fill="none" points="2787 1616, 2687 1616, 2687 1976" stroke="#000080" stroke-linecap="round" stroke-linejoin="round" stroke-width="20"/>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="707" y="266">uPC0</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="707" y="286">uPC1</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="707" y="306">uPC2</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="707" y="326">uPC3</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="707" y="346">uPC4</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="707" y="366">uPC5</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="707" y="386">uPC6</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="707" y="406">uPC7</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="707" y="426">uPC8</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="707" y="446">uPC9</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="707" y="466">uPC10</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="707" y="486">uPC11</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="707" y="506">uPC12</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="707" y="526">uPC13</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="707" y="546">uPC14</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="707" y="566">uPC15</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="607" y="3466">B0</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="607" y="3486">B1</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="607" y="3506">B2</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="607" y="3526">B3</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="607" y="3546">B4</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="607" y="3566">B5</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="607" y="3586">B6</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="607" y="3606">B7</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="607" y="3626">B8</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="607" y="3646">B9</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="607" y="3666">B10</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="607" y="3686">B11</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="607" y="3706">B12</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="607" y="3726">B13</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="607" y="3746">B14</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="607" y="3766">B15</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="2307" y="1726">uPC_Next0</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="2307" y="1746">uPC_Next1</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="2307" y="1766">uPC_Next2</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="2307" y="1786">uPC_Next3</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="2307" y="1806">uPC_Next4</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="2307" y="1826">uPC_Next5</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="2307" y="1846">uPC_Next6</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="2307" y="1866">uPC_Next7</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="2307" y="1886">uPC_Next8</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="2307" y="1906">uPC_Next9</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="2307" y="1926">uPC_Next10</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="2307" y="1946">uPC_Next11</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="2307" y="1966">uPC_Next12</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="2307" y="1986">uPC_Next13</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="2307" y="2006">uPC_Next14</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="2307" y="2026">uPC_Next15</text>
<polygon fill="#ffff80" points="2787 1616, 2787 1591, 3012 1591, 3037 1616, 3012 1641, 2787 1641, 2787 1616" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="2787" y="1616">uPC_Next[15..0]</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="宋体" font-size="90" font-weight="400" text-anchor="start" x="67" y="3666">加数4</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="微软雅黑" font-size="180" font-weight="700" text-anchor="start" x="1727" y="236">微程序加计数模块</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="宋体" font-size="90" font-weight="400" text-anchor="start" x="1767" y="456">uPC+4指向下一条微指令</text>
<polyline fill="none" points="1487 1116, 1397 1116" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1397 966, 607 966, 107 966, 107 956" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1487 866, 887 866, 887 3506, 437 3506, 157 3506, 157 3446" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="157" x2="157" y1="3396" y2="3446"/>
<polygon fill="#ffffff" fill-opacity="0.5" points="157 3396, 207 3346, 107 3346, 157 3396" stroke="#000000" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Times New Roman" font-size="30" font-weight="700" text-anchor="start" x="147" y="3386">1</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="147" y="3316">U6</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="67" y="3346">CONSTANT1</text>
<text alignment-baseline="after-edge" fill="#000080" font-family="宋体" font-size="35" font-weight="400" text-anchor="start" x="147" y="936">运算方式控制信号:无进位加法</text>
<circle cx="1397" cy="966" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1397" cy="1116" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1397" cy="1056" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1397" cy="1666" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1397" cy="1756" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1397" cy="2406" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1397" cy="2496" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1397" cy="3196" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
</svg>
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论