彭民德:《電子計算60年》(8)DJS 21機的資料、指令和程式
在高階語言出現之前,用機者必須根據機器的資料規範組織資料。DJS 21機機器內部採用2進製表示數。每個42位的單元表示一個數,既可以用定點形式表示數,也可以用浮點形式表示數。採用定點表示時,其範圍是 2-34≤|x|<1 在機器中用低35位表示一個定點數,36至42位的高7位不用,置全0。低34位(0至33位)為數值部分,數值部分用該數的原碼錶示。35位是符號位,正數為0,負數為1。
定點數規定以16進位制形式書寫。例如:一個9位的16進位制數a, 可以是a=0.74 562 73。它對應機器表示時每4位表示一個16進位制數,最低只有兩位,可以認為還有兩個虛位,當末位x9<4時該兩個虛位為00,當末位在4與8之間時該兩個虛位寫01,大於等於8時則寫10。
初始十進位制數同樣按上述格式以原碼2-10進位制形式書寫,即逐個10進位制數位都用其對應的4個2進位制數表示。有現成的標準子程式可以引用進行數的2-10進位制的相互轉換。
我們看到在書寫121機的資料時,用了 、 這樣的數字,即在數字1至5的每個字的頭上頂著一條橫線,這是中國人的創造。在1上面那一橫代表10, 就是11, 就是13。用這樣的方法把10,11,12,13,14,15這6個數字分別濃縮為一個數字符號。 而不是像後來見到的西方機器上對應地用A、B、C、D、E、F來表示。因此,改革開放後引進西方新機器時,121機上寫的程式也無法直接用到新機器上。
121機的浮點數被表示成x=2p•q的形式,其中p為階碼,q為尾數,範圍是-64≤p≤63, 0≤|q|≤(1-2-34)。對x的表示範圍是 2-64≤|x|≤(1-2-34) ×263, 相當於十進位制的(0.542101086×10-19, 0.922337203×1019)。 浮點數在機器中以下列方式表示:
例如,a=1/2, 機器浮點表示為 a: 0000000010000000000000000000000000000000000 -a: 0000000110000000000000000000000000000000000 此時正a與負a的階碼部分為全0;數值部分是一樣的,都是高位為1,其它各個位都是0,二者唯一的區別只在數符位(從0開始編號為34位)不同,前者為0,後者為1。
在書寫與列印浮點數時,跟定點數格式一樣,只是階碼不為0。列印時,如果階為負,階符為1;階為正時,階符為0。對負數,數符為1;對正數,數符不打(為空)。
關於資料表示的一些規定,是讓計算機工作的基礎,程式設計之前必須搞清楚。指令系統也很繁瑣枯燥,但是隻能硬著頭皮去閱讀和掌握,循規蹈矩地跟著走,別無選擇。這是高階程式語言出現之前繞不過的坎。
121機採用一地址指令系統,每條指令都是在操作碼Q後只帶一個地址運算元D,有如下形式:
其中,6個二進位制位操作碼Q,可以區別26=64種不同操作,恰好能夠區分121機的59條指令。14位運算元可以表示214=16384個記憶體單元地址,跟121機記憶體容量相符。ε是變址特徵位,當它為0時,該條指令直接對記憶體地址D進行操作;為1時,所施加的操作要對“D+變址值”的一個新地址進行。每條指令的長度21位,本機每個單元42位,可以依序存放2條指令,分別稱作它的左指令和右指令。
採用單地址格式指令,可以簡化指令的儲存,加快指令的執行速度。設定變址指令,有利於程式控制,實現迴圈、轉移等功能。此外,121機還設立了3個暫存器,分別叫做暫存器Ⅰ、Ⅱ、Ⅲ,這也可以加速指令的執行。這些技術在後來的機器上也繼續沿用下來了。
DJS 21機的容量比第一代機有了較大擴充,所表示的數的範圍擴大了,約定用十六進位制數書寫指令(和資料)。6個二進位制位操作碼域對應十六進位制數的00到3 (請注意數字5上面還有一橫)。而且正好高兩位為0到3,低4位對應0到 (請注意數字5上面還有一橫)。下面根據操作碼粗略地看看121機的部分指令。
(1)01~05是傳送指令,用於在記憶體和暫存器間傳送資料和指令。
(2)07~0 ,18~1 (共17條,請注意數字5上面還有一橫)是算術運算指令,包括整乘、定點數的加減乘除、求餘數、浮點數的加減乘除、浮點數反減、浮點數積乘等。
(3)10、11、12、17邏輯運算指令,分別是邏輯乘、邏輯加、按位加和迴圈加。
(4)13~16比較指令,分別用於做全等比較,大於小於比較,以及比較暫存器Ⅰ與記憶體地址D的內容。
(5)20~26,34,35(共9條)為轉移指令,包括無條件轉移和幾種帶條件轉、開關轉、計算轉等。
(6)一組跟外設打交道的指令:2 電傳打字,2 光電輸入、2 列印(請注意數字3,4,5上面都頂著一橫)、33訪問磁鼓磁帶。
其它還包括送地址指令,移位指令,用於階碼操作的指令,將數規格化的指令,用於支援變址定址的指令等。因為121機是單使用者機,也有停機指令3 (請注意數字5上面還有一橫)。總體而言,121機的指令非常豐富。
下面是121機的一個迴圈程式例項。欲計算 S=∑ai, i=0,…,100 假定將a0,a1,…,a100依次存放在0300,0301,…,0364單元,單元s放結果。程式如下
上面的程式中,採用“k+n”形式書寫指令地址,而不是直接用某個記憶體單元地址,上機前適當時候再將k代真,具有靈活性。“K+4”等兩條全0指令是空指令,什麼操作都不做,這是留出新增指令用的空地方。K+7處是一條變址指令,指出控制迴圈用的終值為16進位制的64,即10進位制的100。
121機還提供了一組標準子程式,以支援程式設計。這些子程式包括sin(x),cos(x),tg(x),ctg(x),ln(x),ex,sin-1x,tg-1x。這些常用的數學函式,計算程式編寫精度高,執行速度快。每個子程式放在記憶體一塊固定區域,系統提供給程式設計人員一張《標準子程式單元分配表》。表中還給出了執行每個子程式所用到的工作單元。呼叫標準子程式時,只要把自變數x送到暫存器Ⅰ,接著用一條帶返指令034,轉到子程式入口。例如,sin(x)程式塊位於004 (請注意後一個數字4上面還有一橫),就可以用下列方式呼叫: 002(x) 將x的值傳至暫存器Ⅰ 034 004 轉向執行sin(x)的標準子程式 子程式執行完後會自動返回,指令034是帶返轉移,因此它返回時把求sin(x)的值放在暫存器Ⅰ中。
後來中科院數學所為國產DJS 21機設計開發了組合語言系統XHY。組合語言是一種助記符語言,同樣面向機器硬體,與機器指令一一對應。比如,加法操作用add,減法用sub表示,資料傳送指令為mov。有了文字形式的彙編指令,每條語句便有了明確的功能,給程式設計帶來了方便,組合語言程式的可讀性也大為提高了。
我國第二代電子計算機的主要用途是服務於兩彈一星的研製。接下去我將實際介紹在空空導彈研究設計中的計算機應用。
(與本文相關的更多內容,可參看彭民德《電子計算60年》第3章 三代計算併發共享 電子工業出版社)
相關文章
- 彭民德:《電子計算60年》(7)DJS 21機的結構和用機環境JS
- 電子計算60年 (彭民德著)
- 彭民德:《電子計算60年》 (37)跨入雲端計算時代
- 彭民德:《電子計算60年》(21) 全國第一屆C語言交流會C語言
- 彭民德:《電子計算60年》(6)我國首臺電子數字計算機104機計算機
- 彭民德:《電子計算60年》(4) 從學習蘇聯電子管計算機開始計算機
- 彭民德:《電子計算60年》(34) 863城市供水排程計算
- 彭民德:《電子計算60年》(12)ALGOL 60與程式自動化Go
- 彭民德:《電子計算60年》 (31)計算機網路與第四代計算機計算機網路
- 彭民德:《電子計算60年》(15) 作業系統造就計算機活的靈魂作業系統計算機
- 彭民德:《電子計算60年》 (25)可愛又可恨的BASICA
- 彭民德:《電子計算60年》 (13) 程式語言曾被人無端稱作計算機語言計算機
- 彭民德:《電子計算60年》 (16) UNIX強勢走來
- 彭民德(42) 電子計算大眾化,人人都有計算祕書如影隨形
- 彭民德:《電子計算60年》(9)空空導彈彈道和脫靶量計算
- 彭民德:《電子計算60年》 (33)網路計算極大地提升了計算能力
- 彭民德:《電子計算60年》 (27) 多種媒體形式擴充套件電子計算內涵套件
- 彭民德:《電子計算60年》(32) 網路數字資訊的特點
- 彭民德:《電子計算60年》 (26) Windows 主導圖形化PCWindows
- 彭民德:《電子計算60年》 (19) UNIX核心反彙編程式碼有啃頭
- 彭民德:《電子計算60年》 (3)學習計算數學跟未來結緣
- 彭民德:《電子計算60年》(5)用手搖計算機做三峽大壩下不穩定流計算計算機
- 彭民德:《電子計算60年》 (14) 以IBM 360為代表的多使用者計算機系統IBM計算機
- 彭民德:《電子計算60年》(18)UNIX原始碼的一些運用原始碼
- 彭民德:《電子計算60年》 (2)數學的嚴密推理和美的薰陶
- 彭民德:《電子計算60年》(29)電腦漢化、文件編輯與鐳射照排
- 彭民德(43)智慧計算成果斐然
- 彭民德:《電子計算60年》(28 )輸入裝置的發展與運用
- 彭民德:《電子計算60年》(35)網際網路時代的製造型企業
- 彭民德:《電子計算60年》 (22) IBM PC如潮水般湧來IBM
- 彭民德:《電子計算60年》 (20) UNIX一本經典著作的生命力
- 彭民德:《電子計算60年》 (36) 從面向硬體的控制檯操作到瀏覽器人機介面瀏覽器
- 彭民德:《電子計算60年》(10)對付U-2偵察機的15號及317任務
- 彭民德:《電子計算60年》(17)分析UNIX原始碼揭去作業系統神祕感原始碼作業系統
- 彭民德:《電子計算60年》 (23)駕馭PC,應用開發百花齊放
- 彭民德:《電子計算60年》(30) 在列印技術發展長河中,16針印表機未能曇花一現
- 彭民德:(40)基於移動計算的物聯網共享單車
- 彭民德:《電子計算60年》(24)PC與微控制器聯合控制的水文流速儀實時檢定系統