4.2 微程序的设计
修改程序:把ADC机器指令的进行了修改,本来是执行:DR0+DR2→BUS→R0,把微程序改了,这条指令就执行:DR0或DR2→BUS→R0,其中把这条微程序$M2B959B41改成M2B159B41就执行上条指令。得到的结果如图所示: 在微程序流程图中找到ADC执行的数序号为53(八进制数),转化为十六进制数为2B。在给定的微程序中找到含2B的程序,为$M2B959B41将9,5转化为2进制数为1001,0101.其中,1001代表执行的运算,0101中的前两位中的0代表M=0,1代表Cn=1,对照74LS181的逻辑功能表,找到ADC所代表的是F=A加B,在F=A加B所在列寻找合适的算法即可。我找到的F=A或 B。其S3到S0为0001。转化为十进制数为1.将$M2B959B41中的9改为1,保存微程序。
修改后测试程序:
地址(H) 内容(H) 助记符 说明 $P00 44 IN 01 R0 INPUT device->R0 $P01 46 IN 01 R2 INPUT device->R2 $P02 98 ADC R2 R0 R2或R0 ->R0 $P03 81 MOV R0 R1 R0->R1 $P04 E2 COM R2 NOT R2 ->R0 $P05 D6 STA 00 0A R2 R2 ->(0A) $P06 0A
$P07 0C BZC 00 00 00->PC
9
$P08 00
图1输入03至R0
10
图2输入03至R0
图3执行后得到正确结果送至R1
11
五 线路连接图
12
六 微程序流程及说明
(1)第一条指令是通过取址把INaddress中的数03存入到R0,如图1所示
图1
(2) 第二条指令是通过取址把INaddress中的数03存入到R2,如图2所示
图2
13