FILO微型计算机,IBM-PC微机组成原理(ppt48)-咨询报告【PPT课件】
IBM-PC微機組成原理(ppt48)-咨詢報告【PPT課件】
2020-09-24 08:52:06
【導讀】微型計算機中的中央處理器也叫微處理器。運算器和控制器。件完成指定功能的各項操作。主存儲器是用于存放程序和數據的部件。對每個存儲單元內容的存和取是按照地址進。儲一個二進制數0或1。每8位組成一個字節。每一個基本單位稱為一個存儲單元。為了區分這些不同的存。個10位二進制數表示的地址,助存儲器,簡稱輔存。由于它的位置是在主機之外,因。統能識別的信息形式向外輸出。有的設備既具有輸入功能又具有輸出功能。系統總線將CPU、存儲器和I/O設備連接起來,用于傳送各大部件之間的信息。指令是構成匯編語言程序的最基本單位。相應的控制信號,控制各部件完成指令規定的操作。到指令隊列中,等待EU取走并執行。部總線周期,與存儲器或I/0進行數據的存取。EU和BIU是既分工又合作的兩個獨立部分。而大大加快了指令執行速度。在多數情況下,使用這些寄存器時必須在。隱念使用了某寄存器,稱為隱含使用。例如,在循環指令LOOP中,CX被隱含指定作循環次數計數用。
【正文】
1
IBM-PC微機組成原理
IBM-PC微機基本結構
一、微機的一般構成
運算器、控制器、存儲器、輸入設備和輸出
設備。
一般計算機應包括五大部件:
由于微機的主要特點是其體積很小,因此在系
統設計上就有一些特殊考慮,它將運算器和控制器
兩大部件集成在一個集成電路芯片上,稱為微處理
器,也叫中央處理器,簡稱CPU
2
微處理器
CPU主存儲器
I/O接口
I/O設備
I/O接口
I/O設備
地址總線
數據總線
控制總線
系
統
總
線
微機硬件系統基本組成框圖
3
1、中央處理器CPU
微型計算機中的中央處理器也叫微處理器。它包括
運算器和控制器。
功能:從主存儲器中逐條取出構成程序的指令序
列,分析各指令的功能,控制計算機各部
件完成指定功能的各項操作。
2、主存儲器
主存儲器是用于存放程序和數據的部件。它由若干
個存儲單元構成。存儲單元的多少表示存儲器的容量。
每個存儲單元使用一個唯一的編號來標識,稱為存儲單
元的地址。對每個存儲單元內容的存和取是按照地址進
行訪問的。
4
計算機存儲信息的基本單位是一個二進制位,一位可存
儲一個二進制數0或1。每8位組成一個字節(BYTE)。
76543210
在大多數計算機中,存儲器的組織都是以字節為基本
單位。每一個基本單位稱為一個存儲單元。
一個存儲器是由許多的存儲
單元構成的,如某存儲器的
容量為32KB,1MB,128MB等
等。為了區分這些不同的存
儲單元,一般使用單元地址
來指示各個存儲單元。如一
個10位二進制數表示的地址,
可以用來區分210=1024=1K
個單元。
存儲器地址
0000000000
0000000001
0000000010
1111111111
……
……
5
習慣上將CPU與主存儲器合稱為主機
在計算機中,除了主存儲器之外,一般還配置有輔
助存儲器,簡稱輔存。由于它的位置是在主機之外,因
此也叫做外存。
3、輸入輸出設備及接口
輸入設備將外部信息(程序、數據和命令)送入
計算機。包括鍵盤、鼠標等。
輸出設備將計算機處理后的結果轉換為人或其它系
統能識別的信息形式向外輸出。如顯示器、打印機等。
有的設備既具有輸入功能又具有輸出功能。如磁
盤、磁帶、觸摸顯示屏等。
6
由于I/O設備的工作速度、工作原理以及所處理的
信息格式等與主機相差很大,因此I/O設備要通過I/O
接口才能與系統總線連接。
I/O接口是主機與I/O設備之間設置的邏輯控制部
件。通過它實現主機與I/O設備間的信息傳送。
4、系統總線
系統總線將CPU、存儲器和I/O設備連接起來,
用于傳送各大部件之間的信息。
系統總線包括地址總線、數據總線和控制總線三
組。它們分別用于傳送不同的信息。
7
二、Intel8086/8088CPU的功能結構
指令是構成匯編語言程序的最基本單位。就象高級語
言中的一個語句。
程序是由一系列的指令——指令序列構成。
CPU執行指令序列就是重復執行以下兩個步驟:
從存儲器中取指令
執行指令所規定的功能
8
這兩個步驟的執行又可以分為兩種情況:
1.串行方式
取指執行存數取指執行取指取數執行
忙閑忙忙閑忙忙閑
CPU
外部總線
特點:
(1)當CPU在執行指令時,不需要占用外部總線,但此時
總線也不能作它用,因此外部總線的空閑時間比較多。
(2)在從存儲器取指令或數據時,總線處于忙狀態,其所
占用的時間也較長。但CPU卻只需要使用很短的時間去處
理。因此大部分時間都是處于閑置狀態。
采用串行工作方式的計算機其運行速度較慢
時間
9
AHAL
BHBL
CHCL
DI
SP
BP
SI
地址加法器
IP
CS
DS
SS
ES
總線
控制
邏輯暫存器
標志寄存器
ALUEU控制器123456
控制信號
16
位
數
據
總
線
段
寄
存
器
通
用
寄
存
器
組
外部總線
16位CPU內總
線
AX
BX
CX
20位地址總線
指令隊列
執行單元(EU)總線接口單元(BIU)
10
(1)執行單元EU
EU的主要任務是分析與執行指令,它包括:
A、從指令隊列中取出指令代碼,由控制器譯碼后產生
相應的控制信號,控制各部件完成指令規定的操作。
B、對操作數執行各種指定的算術或邏輯運算
C、向BIU發送訪問主存或I/0的命令,并提供相應的
地址和傳送的數據
11
(2)總線接口單元BIU
BIU負責CPU與存儲器、I/0的信息傳送。具體功能包括:
A、取指令——根據CS寄存器和指令指針IP形成20位的物
理地址,從該地址指定的存儲器單元中取出指令,并暫存
到指令隊列中,等待EU取走并執行。
B、存取數據——在EU執行指令的過程中,如果需要與存
儲器或I/O端口傳送數據時,根據EU提供的數據和地址,
并結合相應的段寄存器(DS、ES或SS)的內容,進入外
部總線周期,與存儲器或I/0進行數據的存取。
EU和BIU是既分工又合作的兩個獨立部分。它們的操
作在一定程序上是并行工作的,分別完成不同的任務,因
而大大加快了指令執行速度。
12
Intel8086/8088運行時執行過程大致如下圖所示。
執行執行執行執行
忙
存數取數取指取指取指取指
忙忙忙忙忙
EU
BIU
外部總線
時間
…...
…...
…...
等待
13
2.2Intel8086/8088CPU寄存器結構及其用途
一、通用寄存器
AHAL
BHBL
CHCL
DHDL
AX
BX
CX
DX
SP
BP
SI
DI
IP
FLAGS
DS
ES
SS
CS
累加器
基址寄存器
計數寄存器
數據寄存器
堆棧寄存器
基址寄存器
源變址寄存器
目的變址寄存器
指令指針
標志寄存器
堆棧段寄存器
代碼段寄存器
數據段寄存器
附加段寄存器
通用寄存器8個
控制寄存器2個
段寄存器4個
14
Intel8086/8088有8個16位通用寄存器,它們一般不只
用作某個特定的功能,而是具有良好的通用性,可以由程
序設計人員進行編程訪問。
1.數據寄存器
它包括AX、BX、CX和DX四個寄存器。它們中的每一
個既可以是16位寄存器,也可以分成兩個8位寄存器使用。
即可以當作8個獨立的8位寄存器使用。
數據寄存器既可以用來存放參加運算的操作數,也可以
存放運算的結果。在多數情況下,使用這些寄存器時必須在
指令中指明。
例:MOVAX,BX;將BX的內容送到AX中
ADDCH,DH;將DH和CH的內容相加,結果送到CH
15
在有些指令中,不需要明確指出使用的寄存器名,即
隱念使用了某寄存器,稱為隱含使用。
例如,在循環指令LOOP中,CX被隱含指定作循環次數計數用。
另外,個別指令對寄存器有特定的使用,并且又必須在
指令中指明它的名字,這類寄存器的使用稱為特定使用。
例如,在移位指令(SHLAX,CL)中,CL被固定用作移位次數。
2.指針寄存器
指針寄存器有堆棧指針SP和基址指針BP
它們一般被用作16位地址指針,在形成20位的物理地
址時常被作為偏移量使用。
來自
16
SP指針——在進行堆棧操作時,被隱含使用,指向堆棧頂
部單元。
BP指針——被用來指向堆棧段內某一存儲單元。BP除用
作地址指針外也可以象數據寄存器一樣,存放參加運算的
操作數和運算的結果。
3.變址寄存器
有兩個16位的變址寄存器SI和DI,一般被用來作地址指針。
SI——源變址寄存器DI——目的變址寄存器
同BP寄存器一樣,SI和DI也可以用作通用數據寄存
器存放操作數和運算結果。
17
二、段寄存器
8086/8088CPU在使用存儲器時,將它劃分成若干個
段。每個段用來存放不同目的內容,如程序代碼、數據等
等。每個存儲段用一個段寄存器來指明該段的起始位置
(也叫段基址)。
…
…
…
…
…
…
代碼段
數據段
堆棧段
附加段
ES
CS
DS
SS
段
寄
存
器
段基址
段基址
段基址
段基址
18
CPU在訪問存儲器時必須指明兩個內容:
(1)所訪問的存儲單元屬于哪個段,即指明使用的段
寄存器。
(2)該存儲單元與段起始地址(段基址)的偏移大小,
即偏移量。
在程序設計中,一個程序將存儲器劃分成多少個存
儲段是任意的。但在程序運行的任何時刻最多只能有用
CS、DS、ES和SS分別指定的4個當前段。
19
三、指令指針IP
CPU在運行程序時,以IP的內容作為將要執行指令
在內存中的存放地址的偏移量,以段寄存器CS作為代碼
段的基址指針,即以CS和IP的內容共同構成了一條指令
的存放地址。
CPU根據CS和IP寄存器的內容到內存中去取指令,
當取出一條指令后,IP內容自動修改為指向下一條指令。
...
...
...
CS
IP偏移量
代碼段基址
CPU
下一條指令
正在執行的指令
20
子程序調用指令CALL,將IP原有內容自動壓入堆棧,而將
子程序的入口地址偏移量自動送入IP,而返回指令RET,
又自動從堆棧中彈回原有IP的內容。
轉移指令將指令中的目的地址的偏移量送入IP
例如,下面兩種指令就可以自動改變IP寄存器的內容。
注意:IP的內容不能被直接進行訪問,即不能用指令去
讀IP的值,也不能用指令給它賦值。但是可以通過某些指
令的執行而自動修改IP的內容。
21
四、標志寄存器
標志寄存器是用來反映CPU在程序運行時的某些狀態,
如是否有進位、奇偶性、結果的符號、結果是否為零等等。
8086/8088CPU中標志寄存器的長度為16位,但其中只
有9位才有意義。
1514131211109876543210
OFDFIFTFSFZFAFPFCF
進
位
位
奇
偶
位
零
值
位
輔
助
進
位
位
單
步
標
志
位
符
號
位
中
斷
允
許
位
方
向
位
溢
出
位
22
1.進位位CF
在進行算術運算時,若最高位(對字操作是第15位,字節
操作是第7位)產生進位或借位時CF被自動置“1”,否則置
“0”。
在移位類指令中,CF也被用來存放從最高位(左移時)
或最低位(右移時)移出的數值(0或1)。
2.奇偶位PF
當指令操作結果的低8位中含有1的個數為偶數時,則PF
被置1,否則PF被置0。
注意:PF只反映操作結果的低8位的奇偶性,與指令操
作數的長度無關。
23
3.輔助進位位AF
在進行算術運算時,若低字節的低四位向高4位產
生進位或借位,即第3位產生進位或借位時,AF位被置1,
否則置0。AF標志位用于十進制運算的調整。
注意:AF只反映運算結果低八位,與操作數長度無關。
4.零值位ZF
若運算結果各位全為0,則ZF被置1,否則置0。
5.符號位SF
將運算結果視為帶符號數,當運算結果為負數時SF被
置1,為正數時,則置0。
24
由于第7位是字節操作數的符號位,而第15位是字
操作數的符號位,因此,SF位與運算結果的最高位
(第7位或第15位)相一致。
OF
當運算結果超過機器用補碼所能表示數的范圍時,
則OF置1,否則置0.
字節數據,機器用補碼所能表示的數范圍為-128—+127。
字數據的表示范圍為:-32768—+32767
注意:溢出與進位是兩個完全不同的概念,不能相互混淆。
25
例如:計算-85D+(-1D)=-86D
10101011B
+)11111111B
10101010B1-86D
計算100D+100D=200D
01100100B
+)01100100B
11001000B-56D
CF=0,OF=1,結果發生溢出,即結果出錯。
進位被
丟棄
CF=1,OF=0,結果正確。
26
計算-85D+-117D=-202D
10101011B
+)10001011B
00110110B54D1
CF=1,OF=1,結果發生溢出,即結果出錯。
7.單步標志位TF(TraceFlag)
單步標志也叫跟蹤位,該標志為控制標志位,當
TF位被設置為1時,每執行一條指令后,CPU暫停運行,
即產生單步中斷。單步標志位供調試程序使用。
27
8.中斷允許位IF
該標志位為控制標志位。當IF被設置為1時,CPU可以
響應可屏蔽中斷,否則不允許響應可屏蔽中斷。
9.方向位DF
DF也是控制標志位。它被用來規定串操作指令的增減
方向。當DF=0時,串操作指令自動使變址寄存器(SI和DI)
的內容遞增。當DF=1時,串操作指令自動使變址寄存器的
內容遞減。
28
存儲器
一、存儲器的組成
1.存儲器是由若干個存儲單元構成
存儲單元的多少就表示了存儲器的容量。
2.每個存儲單元存放相同長度的二進制數
一個存儲單元的長度一般為8位二進制數,稱為一個字節(BYTE)。
3.每個存儲單元有一個唯一的地址編碼——地址
8086/8088CPU具有20根地址線,即它可以產生20位
的地址碼,它的存儲器尋址能力為220,即1兆字節空間。
29
這一兆字節存儲單元的地址范圍為:00…...0~11…...1。如圖所示。
20位20位
…...
07
存儲單元(字節)二進制數地址
00000000000000000000
00000000000000000001
00000000000000000010…...
11111111111111111110
11111111111111111111
十六進制數地址
00000H
00001H
00002H
FFFFEH
FFFFFH
…...
為了方便書寫,在源程序中常用5位十六進制數或一個符
號來表示一個存儲單元的地址。
30
4.任何兩個相鄰字節單元就構成一個字單元
一個字存儲單元(WORD)的長度為16位二進
制數,即兩個字節。字單元的地址為兩個字節單元中
較小地址字節單元的地址。
16位長數據的存放規則是低8位放在較低地址字
節單元中,高8位放在較高地址字節單元中。
例如,將數據3456H放在地址為09235H
的存儲單元中的存儲分配如圖所示。
...
...
地址存儲單元
09235H
09236H
56
34
31
5、在定義一個地址時必須指出是字節或字類型屬性
由于存儲單元可分為字單元和字節單元,因此
8086/8088CPU訪問內存的指令中,分為字節訪問和字訪
問兩種指令。
二、存儲器的段結構
8086/8088系統的存儲器段結構具有以下幾個特點:
1.8086/8088CPU將1MB的存儲空間劃分成若干個段,每
個段最大長度為64K(65536)個字節單元組成。
在8086/8088的匯編程序中,用戶可以根據自己需要來
設定段的個數、各個段長度和每個段的用途。并且代碼或
數據可以存放在段內任意單元中。
32
2.每個段的基址必須是一個小節的首址。
段基址——一個段的起始地址。
在存儲器中規定從0地址開始,每16個字節單元稱為一個小
節(Paragraph)。因此,1MB內存就可劃分為64K個小節。
第1小節:00000H,00001H,00002H……0000FH
第2小節:00010H,00011H,00012H……0011FH
第65535小節:FFFE0HFFFE1HFFFE2H……FFFEFH
第65536小節:FFFF0HFFFF1HFFFF2H……FFFFFH
…..
…..
…..
…..
…..
可以看出,每個小節的首地址最低位必為0(16進制數表
示)。因此段基址只能是上述64K個小節首址之一。
33
3.邏輯段在物理存儲器中可以是鄰接的、間隔的、
部分重疊的和完全重疊的等4種情況。
邏輯段是指在匯編語言源程序中設置的段。
內存中的一個物理存儲單元可以映象到一個或多個邏輯段中。
物理存儲器
00000H
10000H
DA_BYTE
段
1
段
2段
3段4
段
5
鄰接
部分重疊
完全重疊
間隔
邏輯段
0FFFFFH
DA_BYTE物理單元
可以映象到邏輯段2、
段3和段4中。
34
4、在任一時刻,一個程序只能訪問4個段中的內容。
4個段分別是代碼段、數據段、堆棧段和附加段,
稱為當前段。4個段寄存器CS、DS、SS和ES分別保
存了它們段基址的高16位地址,稱為段基值。段基址
的最低4位為0。(小節首址的低4位為全0)。
三、邏輯地址與物理地址及相互關系
1.物理地址
在1MB的存儲空間中,每個存儲單元的物理地址是唯
一的,它就是該存儲單元的20位地址。
8086/8088的物理地址范圍:00000H~0FFFFFH
35
CPU與存儲器之間的任何信息交換都使用物理地址。
2.邏輯地址
在程序設計中,為了便于程序的開發和對存儲器進行動
態管理,使用了邏輯地址。
一個邏輯地址包括兩個部分:段基值和偏移量(OFFSET)
段基值:存放在某一個段寄存器中,是一個邏輯段的起始
單元地址(段基址)的高16位。
偏移量:表示某個存儲單元與它所在段的段基址之間的字
節距離。
當偏移量為0時,就是這個段的起始單元,而偏移量
為0FFFFFH時,就是這個段的最后一個字節單元。
36
邏輯地址的表示方法是段基值:偏移量
例:3267H:00A0H
它表示該邏輯單元位于段起始地址為32670H,段內
偏移量為00A0H個字節。
當CPU要訪問存儲器時,需要由總線接口單元BIU將邏
輯地址轉換成物理地址。
轉換方法:將邏輯地址的段基值左移4位,形成20位的段基
址(低位為0)然后與16位的偏移量相加,結果即為20位的
物理地址。其轉換示例如圖所示。
37
段1:2B0H
段2:2C0H
002D3H
偏移量
23H偏移量
13H
0915H
003AH
09150H
003AH+)
0918AH
偏移量
段基值
邏
輯
地
址
物理地址
右圖表示同一個物理地址
002D3H被被兩個邏輯段中
的邏輯地址映射。
002B0H+00023H=002D3H
002C0H+00013H=002D3H
38
在程序的執行過程中,CPU根據不同操作類型訪問存
儲器,其邏輯地址中段基值和偏移量的來源是不一樣的。
下表是各種操作類型所對應的邏輯地址的來源。
邏輯地址
隱含來源允許替代來源偏移量(OFFSET)
操作類型序號
1
2
3
4
5
6
取指令
堆棧操作
取源串
存目的串
以BP作基址
存取一般變量
DI
CS
SS
DS
ES
SS
DS
IP
SP
SI
有效地址EA
有效地址EA
無
無
CS,SS,ES
無
CS,DS,ES
CS,SS,ES
段基值
39
說明:
(1)允許替代來源也叫做段超越,它表示了段基值除使
用隱含的段寄存器外是否可以指定其它段寄存器來提供。
(2)有效地址EA,它表示根據指令所采用的尋址方式
(下一章介紹)計算出來的段內偏移量。
40
堆棧及其操作方法
堆棧是一個特定的存儲區,訪問該存儲區必須按照指
定的規則進行操作。
堆棧一般分為:和專用堆棧存儲器軟件堆棧
按堆棧的工作方式專門設計的存儲器專用堆棧存儲器
軟件堆棧由程序設計人員用軟件在內存儲器中劃出的一塊
存儲區作為堆棧來使用。8086/8088就是這種方式。
堆棧的用途:主要用于暫存數據以及在過程調用或處理
中斷時保存斷點信息。
一、堆棧的構造
41
堆棧
已
存
放
數
據
TOP
Bottom
...
...
主存
00000H堆棧的一端是固定的,
稱為棧底。棧底是堆棧存儲
區的最大地址單元。
另一端是浮動的,稱為
棧頂。在任何時刻,棧頂是
最后存入信息的存儲單元。
棧頂是隨著堆棧中存放信息
的多少而改變。
為了指示現在堆棧中存放數據位置,通常設置一個寄存
器來指示棧頂位置。其內容就象一個指針一樣,因此被稱為
堆棧指針SP(StackPointer)。
SP的內容始終指向棧頂單元
堆棧中數據進出都由SP來控制
42
在堆棧中存取數據的規則是:“先進后出FILO”
(First-InLost-Out)。即最先送入堆棧的數據要到最后
才能取出,而最后送入堆棧的數據,最先取出。
二、8086/8088堆棧的組織
在8086/8088微機中堆棧是由堆棧段寄存器SS指定的一段存儲區。
SS
SP
堆棧
Bottom
Top
XX
XX
XX
XX
XX
XX
堆棧初始化時的SP
43
堆棧頂部由椎棧指針SP指示。SP中內容始終表示堆
棧段基址與棧頂之間的距離(字節數)。當SP內容為最
大值時,表示堆棧為空。而當(SP)=0時,表示堆棧全
滿。
當SP被初始化時,指向棧底+2單元,其值就是個堆
棧的長度。由于SP是16位寄存器,因此堆棧最大64K字節
數據在堆棧中的存放格式是:以字為單位存放,數據
的低8位放在較低地址單元,高8位放在較高地址單元。
當用戶程序中要求的堆棧長度超過一個堆棧段的最
大長度64KB時,可以設置幾個堆棧段。通過改變堆棧段
寄存器SS的內容,即可改變到另一個堆棧段,當改變了
堆棧段寄存器SS的內容后,必須緊接著賦與SP新值。
44
三、堆棧操作
設置堆棧主要是對堆棧段寄存器SS和堆棧指針SP賦值。
例如:
STACK1SEGMEMTPARASTACK
DB100DUP(0)
STACK1ENDS
第一行中的PARASTACK就是用來說明本段為堆棧段。
當程序經過匯編、連接并裝入內存時,系統將自動為
其分配一個存儲區作為堆棧段,將這個段的段基址的高16
位送入SS中,而將程序指定的字節單元數100(64H)賦值
給SP,這樣堆棧就被設置好了。
45
PUSH
進棧就是把數據存入堆棧。由指令PUSH或者由機器自動
實現,可以將通用寄存器、段寄存器或字存儲單元的內容壓
入堆棧頂部。
例:PUSHAX;將寄存器AX的內容壓入堆棧
PUSHDS;將段寄存器DS的內容壓入堆棧
PUSHDATA-WORD;將字存儲單元DADA-WORD壓入
;堆棧
PUSHF;將標志寄存器內容壓入堆棧。
進棧的執行過程:
(1)首先將堆棧指針SP減2,即指向一個空的堆棧字單元
SP<=(SP)—2
46
(2)將要儲存的內容(寄存器或存儲單元的內容)送
入SP指向的字單元中。(SP)<=數據
例如,指令PUSHAX的執行過程如下圖所示:
SS
ALAH
(AH)
(AL)現(SP)
原(SP)
...
...
...
SP
(SP)-2
(1)
(2)
00000H
47
POP
出棧操作由POP指令實現,它從堆棧頂部彈出一個
字到通用寄存器、段寄存器或字存儲單元。
例如:POPAX;將棧頂字單元內容彈出到AX
POPDS;將棧頂字單元內容彈出到DS
POPDATA-WORD;將棧頂字單元內容彈出到
;DATA-WORD存儲。
POPF;將棧頂字單元內容送回標志寄存器F。
出棧的操作過程:
(1)將SP指向的字單元(即棧頂字單元)內容送往指定
的寄存器或存儲器。即寄存器/存儲器<=(CSP)
48
(2)堆棧指針SP內容加2,即SP<=(SP)+2
例如,指令POPAX的操作過程如下圖所示。
SP
(SP)+2
SS
ALAH
XX
XX
現(SP)
原(SP)
...
...
...
XX
XX
00000H(2)
(1)
黨政相關相關推薦
文庫吧 www.wenkub.com
鄂ICP備17016276號-1
總結
以上是生活随笔為你收集整理的FILO微型计算机,IBM-PC微机组成原理(ppt48)-咨询报告【PPT课件】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java jaas_基于Java JAA
- 下一篇: 【计算机科学基础】LaTeX符号语法总结