【正文】
模型機(jī)的指令碼為8位,根據(jù)指令類型的不同,可以有0到2個(gè)操作數(shù)。而在組合邏輯控制方式中,按時(shí)序用指令碼產(chǎn)生相應(yīng)的控制位。模型機(jī)有24位控制位以控制寄存器的輸入、輸出,選擇運(yùn)算器的運(yùn)算功能,存儲(chǔ)器的讀寫(xiě)。② 模型機(jī)的尋址方式表1 模型機(jī)的尋址方式模型機(jī)的尋址方式尋址方式說(shuō)明指令舉例指令說(shuō)明累加器尋址操作數(shù)為累加器ACPL A將累加器A的值取反隱含尋址累加器AOUT將累加器A的值輸出到輸出端口寄存器OUT寄存器尋址參與運(yùn)算的數(shù)據(jù)在R0~R3的寄存器中ADD A,R0將寄存器R0的值加上累加器A的值,再存入累加器A中寄存器間接尋址參與運(yùn)算的數(shù)據(jù)在存儲(chǔ)器EM中,數(shù)據(jù)的地址在寄存器R0R3中MOV A,R1將寄存器R1的值作為地址,把存儲(chǔ)器EM中該地址的內(nèi)容送入累加器A中存儲(chǔ)器直接尋址參與運(yùn)算的數(shù)據(jù)在存儲(chǔ)器EM中,數(shù)據(jù)的地址為指令的操作數(shù)。SUB A,10H從累加器A中減去立即數(shù)10H,結(jié)果存入累加器ACOP2000模型機(jī)指令的最低兩位(IR0和IR1)用來(lái)尋址R0~R3四個(gè)寄存器;IR2和IR3與ELP微控制信號(hào),Cy和Z兩個(gè)程序狀態(tài)信號(hào)配合,控制PC的置數(shù)即程序的轉(zhuǎn)移。系統(tǒng)提供的默認(rèn)指令系統(tǒng)包括以下7類指令:算術(shù)運(yùn)算指令:邏輯運(yùn)算指令:數(shù)據(jù)傳輸指令:跳轉(zhuǎn)指令:ADD A, R? ADD A, R? ADD A, MM ADD A, II ADDC A, R? ADDC A, R? ADDC A, MM ADDC A, II SUB A, R?SUB A, R? SUB A, MM SUB A, II SUBC A, R? SUBC A, R? SUBC A, MM SUBC A, IIAND A, R? AND A, R? AND A, MM AND A, II OR A, R?OR A, R? OR A, MM OR A, IICPL AMOV A, R? MOV A, R? MOV A, MM MOV A, II MOV R?, A MOV R?, AMOV MM, A MOV R?, IIJC MM JZ MM JMP MMCALL MM RET移位指令:中斷返回指令:輸入/輸出指令:RR A RL A RRC A RLC ARETIREAD MMWRITE MM INOUT該模型機(jī)微指令系統(tǒng)的特點(diǎn)(包括其微指令格式的說(shuō)明等):① 總體概述該模型機(jī)的微命令是以直接表示法進(jìn)行編碼的,其特點(diǎn)是操作控制字段中的每一位代表一個(gè)微命令。缺點(diǎn)是微指令字較長(zhǎng),因而使控制存儲(chǔ)器容量較大。微程序控制器由微程序給出24位控制信號(hào),而微程序的地址又是由指令碼提供的,也就是說(shuō)24位控制信號(hào)是由指令碼確定的。其中微命令字段采用直接按位的表示法,哪位為0,表示選中該微操作,而微程序的地址則由指令碼指定。EMWR程序存儲(chǔ)器EM寫(xiě)信號(hào)。PCOE將程序計(jì)數(shù)器PC的值送到地址總線ABUS上。IREN將程序存儲(chǔ)器EM讀出的數(shù)據(jù)打入指令寄存器IR和微指令計(jì)數(shù)器μPC。ELPPC打入允許,與指令寄存器的IRIR2位結(jié)合,控制程序跳轉(zhuǎn)。MAROE將地址寄存器MAR的值送到地址總線ABUS上。STEN將數(shù)據(jù)總線DBUS上數(shù)據(jù)存入堆棧寄存器ST中。RWR寫(xiě)寄存器組R0~R3,寄存器R?的選擇由指令的最低兩位決定。FEN將標(biāo)志位存入ALU內(nèi)部的標(biāo)志寄存器。X1X0WEN將數(shù)據(jù)總線DBUS的值打入工作寄存器W中。S2SSS0三位組合決定ALU做何種運(yùn)算。X2 X1 X0輸出寄存器0 0 0IN_OE 外部輸入門0 0 1IA_OE 中斷向量0 1 0ST_OE 堆棧寄存器0 1 1PC_OE PC寄存器1 0 0D_OE 直通門1 0 1R_OE 右移門1 1 0L_OE 左移門1 1 1沒(méi)有輸出COP2000中的運(yùn)算器由一片EPLD實(shí)現(xiàn). 有8種運(yùn)算, 通過(guò)S2,S1,S0來(lái)選擇。S2 S1 S0功能0 0 0A+W 加0 0 1AW 減0 1 0A|W 或0 1 1Aamp。計(jì)算機(jī)中實(shí)現(xiàn)乘法和除法的原理(1)無(wú)符號(hào)乘法①實(shí)例演示(即,列4位乘法具體例子演算的算式):1 0 0 1 ;被乘數(shù) 0 1 0 1 ;乘數(shù) 0 0 0 0 ;初始值(零)+ 0 1 0 1 (0) ;乘數(shù)最低位為1,部分積加乘數(shù),被乘數(shù)左移;一位,乘數(shù)右移一位。 0 0 1 0 1 ;部分積+ 0 1 0 1 (1) ;乘數(shù)最低位為1,部分積加被乘數(shù),被乘數(shù)左;移一位,乘數(shù)右移一位。 (0) 0 0 1 1 0 0 1 ;計(jì)算完畢,結(jié)果為0011001 即:10010110=0011001②硬件原理框圖:ALUAWR2R1被乘數(shù)乘數(shù)DLRR0(部分積和結(jié)果)判斷乘數(shù)末位乘數(shù)右移被乘數(shù)左移 在模型機(jī)上實(shí)現(xiàn)無(wú)符號(hào)數(shù)乘法運(yùn)算時(shí),采用“加法—移位”的重復(fù)運(yùn)算方法。③算法流程圖:在模型機(jī)上實(shí)現(xiàn)無(wú)符號(hào)數(shù)乘法運(yùn)算時(shí),采用“加法—移位”的重復(fù)運(yùn)算方法。③算法流程圖初始化被乘數(shù)及乘數(shù)初始化部分積開(kāi)始計(jì)算部分積乘數(shù)末位為1?結(jié)束被乘數(shù)左移一位(不帶進(jìn)位)乘數(shù)右移一位(不帶進(jìn)位)輸出結(jié)果(R0)乘數(shù)為0?YNYN(2)無(wú)符號(hào)除法①實(shí)例演示(即,列4位除法具體例子演算的算式):被除數(shù)為01100100(二進(jìn)制),即為十進(jìn)制的100;除數(shù)為1001(二進(jìn)制),即為十進(jìn)制的9。1001=1011…0001即十進(jìn)制運(yùn)算結(jié)果為: 100247。那么,無(wú)符號(hào)除法的硬件原理框圖如圖5所示。寄存器R2① 初始化時(shí),用來(lái)存放乘數(shù);② 在程序執(zhí)行的過(guò)程中,用來(lái)存放向右移位后的乘數(shù)。寄存器W執(zhí)行ADD A,R?(加法)、TEST R?,II(測(cè)試R2的末位)等雙操作數(shù)命令時(shí)所必須使用的寄存器。直通門D用來(lái)控制ALU的執(zhí)行結(jié)果是否輸出到數(shù)據(jù)總線。程序計(jì)數(shù)器PC① 控制程序按順序正常執(zhí)行;② 當(dāng)執(zhí)行轉(zhuǎn)移指令時(shí),從數(shù)據(jù)線接收要跳轉(zhuǎn)的地址,使程序能夠按需要自動(dòng)執(zhí)行。存儲(chǔ)器EM存儲(chǔ)指令和數(shù)據(jù)。微程序存儲(chǔ)器μM存儲(chǔ)相應(yīng)指令的微指令。堆棧ST當(dāng)存儲(chǔ)于累加器A的值將要受到破壞時(shí),將其數(shù)據(jù)保存在堆棧ST中,使程序能夠正常地執(zhí)行。寄存器R1① 初始化時(shí),用來(lái)存放除數(shù);② 在程序執(zhí)行的過(guò)程中,用來(lái)存放向右移位后的除數(shù)。寄存器R3當(dāng)作計(jì)數(shù)器使用,用來(lái)控制程序是否結(jié)束(初始值5)。寄存器W執(zhí)行SUB A,R?(減法)等雙操作數(shù)命令時(shí)所必須使用的寄存器。直通門D用來(lái)控制ALU的執(zhí)行結(jié)果是否輸出到數(shù)據(jù)總線。程序計(jì)數(shù)器PC① 控制程序按順序正常執(zhí)行;② 當(dāng)執(zhí)行轉(zhuǎn)移指令時(shí),從數(shù)據(jù)線接收要跳轉(zhuǎn)的地址,使程序能夠按需要自動(dòng)執(zhí)行。存儲(chǔ)器EM存儲(chǔ)指令和數(shù)據(jù)。微程序存儲(chǔ)器μM存儲(chǔ)相應(yīng)指令的微指令。堆棧ST當(dāng)存儲(chǔ)于累加器A的值將要受到破壞時(shí),將其數(shù)據(jù)保存在堆棧ST中,使程序能夠正常地執(zhí)行。復(fù)位后,所有寄存器清0,首先執(zhí)行 _FATCH_ 指令取指。TEST R?,II000101xx1417II寄存器R? “與” 立即數(shù)II,只改變標(biāo)志位,并不改變R?中的數(shù)值。SHL R?001010xx282B寄存器R?中的數(shù)不帶進(jìn)位向左移一位,并不影響標(biāo)志位。JZ MM001101xx3437MM若零標(biāo)志位置1,跳轉(zhuǎn)到MM地址。OVER001111xx3C3F程序結(jié)束。復(fù)位后,所有寄存器清0,首先執(zhí)行 _FATCH_ 指令取指。ADDR?,II000010xx080BII將立即數(shù)II加入到寄存器R?中,并影響標(biāo)志位。SUBR?,II000100xx1013II從寄存器R?中減去立即數(shù)II,并影響標(biāo)志位。PUSH A000110xx181B將累加器A中的數(shù)據(jù)壓入堆棧寄存器ST。MOV A,R?001000xx2023將寄存器R?中的數(shù)放入累加器A中。SHL R?001010xx282B寄存器R?中的數(shù)不帶進(jìn)位向左移一位,并不影響標(biāo)志位。JC MM001100xx3033MM若進(jìn)位標(biāo)志位置1,跳轉(zhuǎn)到MM地址。JMP MM001110xx383B跳轉(zhuǎn)到MM地址。(2) 新的微指令集無(wú)符號(hào)乘法的新微指令集助記符狀態(tài)微地址微程序數(shù)據(jù)輸出數(shù)據(jù)打入地址輸出運(yùn)算器移位控制mPCPC_FATCH_T000CBFFFF指令寄存器IRPC輸出A輸出寫(xiě)入+101FFFFFFA輸出+102FFFFFFA輸出+103FFFFFFA輸出+1ADD R?,AT204FFF7EF寄存器值R?寄存器WA輸出+1T105FFFA98ALU直通寄存器R? 標(biāo)志位C,Z加運(yùn)算+1T006CBFFFF指令寄存器IRPC輸出A輸出寫(xiě)入+107FFFFFFA輸出+1TEST R?,IIT314C7FFEF存貯器值EM寄存器WPC輸出A輸出+1+1T215FFF7F7寄存器值R?寄存器AA輸出+1T116FFFE93ALU直通寄存器R?標(biāo)志位C,Z與運(yùn)算+1T017CBFFFF指令寄存器IRPC輸出A輸出寫(xiě)入+1MOV R?,IIT124C7FBFF存貯器值EM寄存器R?PC輸出A輸出+1+1T025CBFFFF指令寄存器IRPC輸出A輸出寫(xiě)入+126FFFFFFA輸出+127FFFFFFA輸出+1SHL R?T228FFF7F7寄存器值R?寄存器AA輸出+1T129FFF9D