版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
微機(jī)原理與接口技術(shù)
講課教師:王愛(ài)學(xué)
本課程研究的內(nèi)容
1、計(jì)算機(jī)硬件:構(gòu)成計(jì)算機(jī)的各種元件、器件和設(shè)備實(shí)物。
2、計(jì)算機(jī)軟件:為應(yīng)用計(jì)算機(jī)所編制的程序。
微機(jī)原理課程與其它課程的關(guān)系:
數(shù)字邏輯一一計(jì)算機(jī)原理一一計(jì)算機(jī)匯編語(yǔ)言一一微機(jī)原理
——計(jì)算機(jī)網(wǎng)絡(luò)
一一單片機(jī)原理
本學(xué)期所學(xué)課程實(shí)際上包括了匯編語(yǔ)言部分。
匯編語(yǔ)言:是與計(jì)算機(jī)硬件密切相關(guān)的程序設(shè)計(jì)語(yǔ)言,其基本
語(yǔ)句對(duì)應(yīng)硬件的一個(gè)基本命令。
課程要求
1、3次以上(包括3次)不交作業(yè)的同學(xué)不許參加期
末考試,期末考試成績(jī)計(jì)為0分。
2、無(wú)故不上理論課累計(jì)3次以上(包括3次)的同學(xué)
不許參加期末考試,期末考試成績(jī)計(jì)為0分。
3、無(wú)故不上實(shí)驗(yàn)課累計(jì)3次以上(包括3次)的同學(xué)
不許參加期末考試,期末考試成績(jī)計(jì)為0分。
參考書
1、羅克露、徐潔:微型機(jī)原理與應(yīng)用(電子工業(yè)出版社)
2、沈美明、溫冬嬋:匯編語(yǔ)言程序設(shè)計(jì)(清華大學(xué)出版社)
3、熊桂喜:IBM—PC匯編語(yǔ)言程序設(shè)計(jì)(科學(xué)出版社)
4、周明德:微型計(jì)算機(jī)原理及應(yīng)用(清華大學(xué)出版社)
第一章基礎(chǔ)知識(shí)
1.1二進(jìn)制數(shù)、十進(jìn)制數(shù)及十六進(jìn)制數(shù)(及其轉(zhuǎn)換)(略)
1.2二進(jìn)制數(shù)與十六進(jìn)制數(shù)的運(yùn)算
1.2.1算術(shù)運(yùn)算(略)
1.2.2邏輯運(yùn)算
例:
X=OOFFH=OOOO00001111HUB
Y=5555H=0101010101010101B
按位“與”運(yùn)算
000000001111HUB
A0101010101010101B
0000000001010101B
按位“或”運(yùn)算
oooooooomiHUB
V0101010101010101B
0101010111111U1B
按位“異或”運(yùn)算
0000000011111111B
十0101010101010101B
0101010110101010B
1.3ASCII碼和BCD碼(略)
1.4數(shù)值與編碼的轉(zhuǎn)換
把ASCII碼和BCD等轉(zhuǎn)換成對(duì)應(yīng)的數(shù)值。
例:
2的ASCII碼為32H,轉(zhuǎn)換成數(shù)值為:00000010(計(jì)
算機(jī)中)
在程序中,使用一定的算法進(jìn)行轉(zhuǎn)換。
第二章IBM-PC計(jì)算機(jī)組織
2.1IBM-PC微型計(jì)算機(jī)的基本結(jié)構(gòu)
計(jì)算機(jī)由三大部分組成:
中央處理器CPU(包括運(yùn)算器、控制器)。
存儲(chǔ)器。
輸入/輸出設(shè)備。
各組成部分的功能:
運(yùn)算器:負(fù)責(zé)執(zhí)行所有的算術(shù)和邏輯運(yùn)算。
控制器:負(fù)責(zé)指令執(zhí)行時(shí)的控制工作(把指令逐條從
存儲(chǔ)器中取出,經(jīng)譯碼分析后發(fā)出取操作數(shù)、執(zhí)行、
存儲(chǔ)運(yùn)算結(jié)果等控制指令)。
存儲(chǔ)器(內(nèi)存):是計(jì)算機(jī)的記憶部件,它通過(guò)總線與
CPU相連。用來(lái)存放程序執(zhí)行時(shí)所需的指令和數(shù)據(jù)。
I/O設(shè)備:軟盤驅(qū)動(dòng)器、硬盤、顯示器、鍵盤、打印
機(jī)等設(shè)備。
總線:包括數(shù)據(jù)線、地址線、控制線。
圖2.1PC機(jī)的一般結(jié)構(gòu)
IBM-PC系列機(jī)CPU型號(hào):
Intel8086/8088
8088是一個(gè)準(zhǔn)16位的微處理器,即它的內(nèi)部結(jié)構(gòu)是16
位的,而外部的數(shù)據(jù)總線是8位的,因而它在一個(gè)
總線周期內(nèi)只能訪問(wèn)一個(gè)8位字節(jié)而不是一個(gè)16位
的字。
8086的內(nèi)部結(jié)構(gòu)和外部總線都是16位的,工作性能比
8088好。
80386,80486:是32位微處理器。
Pentium(80586):地址線36位,外部數(shù)據(jù)線64位。
目前,CPU主頻在2GHz左右是常見(jiàn)的計(jì)算機(jī)配置。
2.2IBM-PC上的軟件與匯編語(yǔ)言
軟件可分為兩大類:系統(tǒng)軟件和應(yīng)用軟件。
2.2.1系統(tǒng)軟件和應(yīng)用軟件
系統(tǒng)軟件:由PC機(jī)的生產(chǎn)廠家及其配套設(shè)備的供應(yīng)商
為用戶提供的一組程序,這些程序是用戶使用機(jī)器
時(shí)為產(chǎn)生、準(zhǔn)備和執(zhí)行用戶程序所必需的。(典型
的系統(tǒng)軟件:操作系統(tǒng))
應(yīng)用軟件:用戶自己和一些生產(chǎn)商為某種應(yīng)用而編寫
的專門軟件。
2.2.2高級(jí)語(yǔ)言、匯編語(yǔ)言、機(jī)器語(yǔ)言
機(jī)器指令是由二進(jìn)制代碼組成的,直接以指令來(lái)編程的
語(yǔ)言便是機(jī)器語(yǔ)言。(編程者使用不方便)
匯編語(yǔ)言:用符號(hào)以一定的簡(jiǎn)單語(yǔ)法來(lái)表示機(jī)器指令,
其語(yǔ)句與機(jī)器語(yǔ)言一一對(duì)應(yīng)。
高級(jí)涪言:以人們易于理解的語(yǔ)句和構(gòu)造來(lái)編程的語(yǔ)言
稱為高級(jí)涪言,如C,BASIC,PASCALFORTRAN,C+
+等。
高級(jí)溶言一一用編譯程序編譯一一機(jī)器語(yǔ)言
匯編語(yǔ)言源程序一一用匯編器匯編一一機(jī)器語(yǔ)言
高級(jí)語(yǔ)言易學(xué)易用,基本符合數(shù)學(xué)語(yǔ)言和自然語(yǔ)言的習(xí)
慣,而用匯編語(yǔ)言編程則要困難得多。
為什么要學(xué)習(xí)匯編語(yǔ)言?
1、通過(guò)匯編語(yǔ)言去理解計(jì)算機(jī)運(yùn)行軟件的過(guò)程。(匯
編語(yǔ)言與機(jī)器指令基本上是一一對(duì)應(yīng)的)
2、某些底層系統(tǒng)軟件必須用匯編涪言來(lái)編寫,例如主
板上的BIOS及一些設(shè)備的驅(qū)動(dòng)程序。這是由于要直接
與下層硬件打交道,高級(jí)語(yǔ)言很難勝任。
3、匯編語(yǔ)言程序的執(zhí)行效率高,運(yùn)行代碼占用內(nèi)存少。
有些軟件的程序段需要頻繁執(zhí)行且要求速度快,必須
使用匯編語(yǔ)言。
例:Windows環(huán)境下的寫屏軟件,圖形、圖像處理中的
壓縮還原過(guò)程。
2.2.3匯編語(yǔ)言的開發(fā)環(huán)境(略)
(以后在上機(jī)實(shí)驗(yàn)前進(jìn)行詳細(xì)的學(xué)習(xí)。)
2.3Intel8086/8088CPU的寄存器結(jié)構(gòu)
8086CPU:16位CPU,時(shí)鐘頻率:5MHz——10MHz
數(shù)據(jù)線:16根,可處理8位或16位數(shù)據(jù)
地址線:20根,地址空間:22。=1MB
8088CPU:16位CPU,時(shí)鐘頻率:5MHz——10MHz
內(nèi)部數(shù)據(jù)線:16根,可處理8位或16位數(shù)據(jù)
外部數(shù)據(jù)線:8根,可處理8位數(shù)據(jù)
地址線:20根,地址空間:22。=1MB
2.3.1通用寄存器
通用寄存器共8個(gè)(右圖)AHALAX
分兩組,數(shù)據(jù)寄存器(前4個(gè):AX,BX,
CX,DX)用作存放數(shù)據(jù)。BHBX
指針和變址寄存器(后4個(gè)),用CHCLCX
于存放指針。
1.數(shù)據(jù)寄存器DHDX
AX,BX,CX,DX可分別拆分成2個(gè)8位寄
存器。SP
AX:累加器(accumulator),在算術(shù)運(yùn)
算時(shí),用AX來(lái)存放操作數(shù)和運(yùn)算結(jié)果。BP
BX:基址寄存器(baseaddress),計(jì)算
存儲(chǔ)器地址時(shí)使用。SI
CX:計(jì)數(shù)寄存器(count),循環(huán)、串
操作時(shí)用于計(jì)數(shù)。DI
AX
BX
CX
DX
IP:指令指針寄存器(instructionpointer)是專用的16位寄
存器,它表示的是當(dāng)前要執(zhí)行的指令在代碼段中的偏移地址。
程序員不能直接訪問(wèn)IP,只有轉(zhuǎn)移指令、子程序調(diào)用及返回
指令、中斷調(diào)用及返回指令才能修改IP(有時(shí)還會(huì)修改CS)。
2.3.4標(biāo)志寄存器
OFDFIFTFSFZFAFPFCF
標(biāo)志寄存器:用于表示程序運(yùn)行時(shí)(數(shù)據(jù)處理時(shí))的狀態(tài)。
各標(biāo)志位的作用:
進(jìn)位標(biāo)志CF(carryflag):有進(jìn)位或借位時(shí)為1;
奇偶標(biāo)志PF(parityflag):結(jié)果低8位“1〃的個(gè)數(shù)為偶數(shù)時(shí)
為1。
輔助進(jìn)位標(biāo)志AF(auxiliarycarryflag):進(jìn)行算術(shù)運(yùn)算時(shí),
如果低4位產(chǎn)生了進(jìn)位時(shí)為1。此標(biāo)志用于十進(jìn)制運(yùn)算時(shí)的
調(diào)整。
零標(biāo)志ZF(zeroflag):運(yùn)算結(jié)果為0時(shí)為1。
符號(hào)標(biāo)志SF(signflag):等于運(yùn)算結(jié)果的最高位(符號(hào)位)。
以下幾個(gè)標(biāo)志可暫不講述。
跟蹤標(biāo)志TF(trapflag),當(dāng)TF=1時(shí),在執(zhí)行完一條指
令后就會(huì)產(chǎn)生單步中斷,然后由單步中斷處理程序把
TF置為0。TF標(biāo)志用于調(diào)試。
中斷標(biāo)志IF(interruptflag),當(dāng)IF=1時(shí),允許響應(yīng)可
屏蔽中斷,否則關(guān)閉中斷。
方向標(biāo)志DF(directionflag),DF用于控制串操作指令地
址的增減。如果DF=1,則每次串操作后使變址寄存
器SI和DI減1(字節(jié)指令)或減2(字指令);如果DF=0,
則每次串操作后使變址寄存器SI和DI加1(字節(jié)指令)或
加2(字指令)。
2.4PC機(jī)的內(nèi)存組織
Intel8086/8088:有20根地址線,總的內(nèi)存大小為2?。=1MB。
2.4.1內(nèi)存地址與字節(jié)、字的存放
8位二進(jìn)數(shù):一個(gè)字節(jié)(byte)。
位7654321cl
111111111111
內(nèi)存單元的基本單位為字節(jié),每個(gè)內(nèi)存單元都分配了一個(gè)唯一的
地址。
地址范圍:00000000000000000000B——
mimimimiHUB
十六進(jìn)制數(shù)表示:00000H—FFFFFH
16位的信息稱為1個(gè)字,任何相鄰兩個(gè)單元都可以組成1個(gè)字。
字的地址是第1個(gè)字節(jié)的地址。
在內(nèi)存中,低字節(jié)在前,高字節(jié)在后。
地址存儲(chǔ)單元(字節(jié))
00000H_________0
00001H
FFFFFH1MB
例:
(a)將字節(jié)12H及34H分別放入AH,AL寄存器;
AHAL
12H34H
例:
(b)將字1234H放入AX寄存器;
AHAL
12H34H
例:例:
(c)將至節(jié)12H及34H分別放入內(nèi)(d)將字1234H放入內(nèi)存單元
存單元1FFFFH及20000H處;1FFFFH處。
地址地址
1FFFFH1FFFFH
20000H20000H
例:將雙字12345678H(32位二進(jìn)制)存入內(nèi)存單元
1FFFFH處。
地址內(nèi)容
……1
1FFFFH78H
20000H56H
20001H34H
20002H-12H1
2.4.2內(nèi)存地址的分段
Intel8086/8088有20根地址線,其內(nèi)存尋址空間為1MB。
為了表示某個(gè)地址,需要20位。
機(jī)器字長(zhǎng)為16位,它能表示的最大內(nèi)存空間為216=64KBo
Intel8086/8088采用分段訪問(wèn)內(nèi)存的辦法,使得16位寄存器
可以訪問(wèn)20位地址(64K個(gè)段,每段最多64KB)。
位190
物理地址
位150
段地址0000
位150
段內(nèi)地址
2.4.3物理地址和邏輯地址
20位物理地址采用Intel的分段方法將其分為16位的段地
址和16位的段內(nèi)地址(偏移值)o
用段地址和偏移地址來(lái)表示內(nèi)存單元地址的形式稱為邏
輯地址,寫成“段地址:偏移地址”的格式。
例:物理地址00000H:
0000H:0000H
段地址乘以16(左移4位)再加上偏移地址,即可得到
物理地址。
段地址X16D(或10H)+偏移地址=物理地址
例:設(shè)邏輯地址為1234H:5678H,則物理地址為:
1234HX10H+5678H=12340H+5678H=179B8H
如果給定一個(gè)物理地址,要算出它的邏輯地址,則有很
多個(gè)結(jié)果。
例:179B8H的邏輯地址如下:
1000H:79B8H
1001H:79A8H
1234H:5678H
179BH:0008H
1234H:5678H只是各種分段結(jié)果中的一種。
段地址中增加1,內(nèi)存空間就增加16D(10H)。16字節(jié)稱為
1節(jié)(paragraph),英文簡(jiǎn)寫的para就代表1節(jié)。
2.4.4實(shí)際內(nèi)存分配方法
例:假定一個(gè)程序的代碼段大小為
4096D,數(shù)據(jù)段大小為8180D,堆棧段
大小為252D。
按節(jié)方式上舍入為4096D,8192D,256D,內(nèi)存
即1000H,2000H,lOOHo
設(shè)給此程序分配的內(nèi)存區(qū)從21000H開始21000H
(節(jié)邊界對(duì)齊),這三個(gè)段在內(nèi)存中的代碼段
位置為:21FFFH
22000H
段寄存器
數(shù)據(jù)段
CS2100H23FFFH
DS2200H24000H
SS2400H堆棧段
ES240FFH
內(nèi)存起始地址21000H,起始段地址為2100H。
代碼段、數(shù)據(jù)段、堆棧段大小依次為:
1000H,2000H,lOOHo
SS=DS+200H=2400Ho
代碼段、數(shù)據(jù)段及堆棧段的偏移地址范圍分別為:
O-OFFFH,0-1FFFH,0?FFH。
2.5堆棧
堆棧(stack):是內(nèi)存中的一塊特定區(qū)域,用于暫時(shí)緩存數(shù)據(jù)。
2.5.1堆棧在哪里
堆棧由軟件設(shè)置,是在內(nèi)存中劃出一塊區(qū)域作為堆棧。堆棧的
一端位置固定(棧底),另一端是浮動(dòng)的(棧頂)。信息的
存取在棧頂進(jìn)行。
堆棧的位置和大小由SS及SP寄存器確定。
例:
設(shè)開始時(shí)(棧底)位置為:SS=2400H,SP=100H,運(yùn)行一段
時(shí)間后,堆棧中壓入了一些數(shù)據(jù),SP=80Ho堆棧位置如下
圖所示。
CS
24000H
DS
SS
ES24080H(棧頂)
SP
24100H(棧底)
堆棧的棧底由初始SP值決定,它等于堆棧段中最大數(shù)據(jù)單元處
的地址加1(棧底不存數(shù)據(jù))。
堆棧的棧頂也由SP值決定,隨著不斷的壓棧操作,SP的值會(huì)減
小,棧頂也就相應(yīng)地變化。如果未壓入內(nèi)容,或壓入了內(nèi)容
后,又全部彈出,則棧頂與棧底相同。
無(wú)論是壓入還是彈出,都是以字為單位進(jìn)行(不能進(jìn)行字節(jié)或
雙字操作)。
例:設(shè)SS=2000H,SP=100H,試分析如下一小段程序中PUSH
語(yǔ)句的執(zhí)行過(guò)程。
MOVAX,1234H;將1234H送入AX
PUSHAX;將AX中的內(nèi)容壓入堆棧
執(zhí)行PUSHAX指令的過(guò)程:
(1)SP-SP-2;將堆棧指針減2
(2)(SP)—AX;將AX中的一個(gè)字送入堆棧段內(nèi)由SP指向的
偏移地址處
內(nèi)存
段寄存器
cs堆棧段2000H:0000H
DS
SS
ES
SP
2000H:0100H
段寄存器內(nèi)存
cs
DS堆棧段2000H:0000H
ss
ES
SPOOFEH34H2000H:00FEH
12H2000H:00FFH
2000H:0100H
AX1234H
??????
出棧指令為:POPAX,工作過(guò)程和入棧操作相反(略)。
第三章尋址方式與指令系統(tǒng)
3.1指令格式
指令結(jié)構(gòu):
操作碼操作數(shù)地址
操作碼:指明計(jì)算機(jī)所要執(zhí)行的操作。
操作數(shù)地址:指出指令在執(zhí)行過(guò)程中要處理的數(shù)據(jù)地址。
3.2尋址方式
尋址方式:是指指令中尋找操作數(shù)的方式。
1.立即尋址(用于寄存器賦值)
例:MOVAX,2056H內(nèi)存
AX
AHAL
/MOV30000H
56H30001H
20H30002H
2.寄存器尋址
寄存器尋址:指令中所需的操作數(shù)在CPU的某個(gè)寄存器中。存
取這類操作數(shù)完全在CPU內(nèi)部進(jìn)行,不需要?jiǎng)佑每偩€訪問(wèn)內(nèi)
存,所以執(zhí)行速度比較快。
例:
MOVAX,BX;源和目的操作數(shù)都是寄存器尋址方式
MOVAX,1234H
ADDBX,AX
PUSHDS;源操作數(shù)是寄存器尋址方式
3.直接尋址
直接尋址:操作數(shù)的偏移地址(有效地址)直接在指令中指出。
例:
為有效地處
MOVAX,[1000H];1000H一內(nèi)存
(設(shè):DS=2000H)
……
OP代碼段
00
10
AX
AHAL?…
A20000H數(shù)據(jù)段
A?…
21000H40
30
4.寄存器間接尋址
操作數(shù)的有效地址EA不是位于指令中,而是位于基址寄存器
BX、BP或變址寄存器SI、DI中。地址是通過(guò)一個(gè)寄存器
來(lái)指明,因而稱為寄存器間接尋址。
例:MOVAX,[DI]
設(shè)DS=3000H,DI=2000H
物理地址:30000H+2000H=32000H
內(nèi)存
AX
AHAL....
個(gè)30000H數(shù)據(jù)段
A
32000HBO
40
段跨越前綴舉例:
MOVCX,ES:[BX]
MOVBX,ES:[2000H]
;鍵入字符串并顯示
datasegment
stringdb30,0,30dup(?)
;最大串長(zhǎng),實(shí)際串長(zhǎng),串
strldb13J0J$'
dataends
*
codesegment
assumecs:code,ds:data
keyinprocfar
begin:movax9data
movds,ax
movdx,offsetstring;指定數(shù)據(jù)緩沖區(qū)首地址
movah,Oah;21h號(hào)中斷的Oah號(hào)功能
int21h;接收從鍵盤鍵入的數(shù)據(jù)到緩沖區(qū)
movcl,string+l;取實(shí)際串長(zhǎng)度
xorch,ch;cx中是實(shí)際串長(zhǎng)度
adddx,cx;dx指向(串尾部一2)的內(nèi)存單元
adddx,2;dx指向串尾部
movbx,dx;必須使用bx間接尋址
movbyteptr[bx]/$5
leadx,strl
movah,9;21h號(hào)中斷的09h號(hào)功能
int21h;顯示回車換行
leadx,string+2;鍵入串的起始地址
movah,9
int21h;顯示鍵入的串
movah,4ch;21h號(hào)中斷的4ch號(hào)功能
int21h;返回DOS操作系統(tǒng)
keyinendp;過(guò)程結(jié)束
codeends;代碼段結(jié)束
endbegin;指出可執(zhí)行的第一行代碼地址
;鍵盤鍵入的小寫字符按大寫顯示
datasegment
stringdb2,0,2dup(?)
dataends
codesegment
assumecs:code,ds:data
keyinprocfar
begin:movax,data
movds,ax
loopl:movdx,offsetstring
movah90ah
intllh
moval,string+2
cmpalj!'
jzdone
cmpal961h
jbloopl
cmpal,7ah
jaloopl
subal920h
movstring+2,al
movstring+3/$!
leadx,string+2
movah,9
int21h
jmploopl
done:movah,4ch
int21h
keyinendp
codeends
endbegin
5.寄存器相對(duì)尋址
寄存器相對(duì)尋址(變址尋址):操作數(shù)的有效地址EA是一
個(gè)基址寄存器或變址寄存器的內(nèi)容和指令中指定的8位
和16位位移量之和:
EA=[BX]+8位或16位位移量
[BP]+8位或16位位移量
[SI]+8位或16位位移量
[DI]+8位或16位位移量
例:
MOVAX,[2040H+BP]
若:SS=5000HBP=3000H
則:EA=3000H+2040H=5040H
物理地址=50000H+5040H=55040H
5000H
ss■內(nèi)y存
BP3000H
OP代碼段
OP
40H
20H
IIX
AHAL
50000H
AA??????堆棧段
55040H48
55
6.基址加變址尋址
特點(diǎn):有兩個(gè)寄存器出現(xiàn)在指令中。其中基址寄存器為
BX或BP,變址寄存器為SI或DL
例:
MOVAX,[BX][SI]
MOVAX.[BX+SI];等同上一條指令
設(shè):DS=3200H,BX=0456H,SI=1094H
則:EA=0456H+1094H=14EAH
物理地址=32000H+14EAH=334EAH
7.相對(duì)的基址加變址尋址:
例:
MOVAL,[BX+DI+12]
設(shè):DS=8000H,BX=0100H,DI=0010H
則物理地址=80000H+0100H+0010H+12(或者是OCH)
=80UCH
3.1.2小節(jié)(補(bǔ)充)
8086/8088的機(jī)器語(yǔ)言格式(1—7個(gè)字節(jié)構(gòu)成指令)
機(jī)器指令的第一字節(jié):76543210
操作碼DW
D指出下一字節(jié)REG段是源還是目的。
1一目的操作數(shù)是在寄存器,否則,源操作數(shù)在寄存器。
(雙操作數(shù)指令中,至少有一個(gè)操作數(shù)在寄存器,源為立即數(shù)除
外。)
W字操作位,1——字操作,否則是字節(jié)操作。
機(jī)器指令的第二字節(jié):76543210
MOD=11
MODREGR/M
表示寄存器尋址
R/M表示寄存器
MOD=其它
表示存儲(chǔ)器尋址,R/M表示內(nèi)存地址
MOD=H時(shí):
若W=0則:R/M000001010011100101110111
表示ALCLDLBLAHCHDHBH
若W=1則:R/M000001010011100101110111
表示AXCXDXBXSPBPSIDI
例:ADDCL,BH
MOD=00時(shí),存儲(chǔ)器尋址,不帶位移量。
由R/M段指出內(nèi)存地址。
000001010011100101110111
[BX+SI][BX+DI][BP+SI][BP+DI][SI][DI]直接尋址[BX]
其中直接尋址方式:下兩個(gè)字節(jié)(第3—4字節(jié))是16位直接地址。
MOD=01時(shí),存儲(chǔ)器尋址,帶一個(gè)位移量字節(jié)(8位位移量)。
由R/M段指出內(nèi)存地址。
MOD=10時(shí),存儲(chǔ)器尋址,帶2個(gè)位移量字節(jié)(16位位移量)。
由R/M段指出內(nèi)存地址。
例:ADD例45H[BX][DI],DX
機(jī)器語(yǔ)言指令:01914521H
00000001100100010100010100100001
00000001100100010100010100100001
立即尋址的機(jī)器指令第一字節(jié):
76543210
操作碼SW
S符號(hào)擴(kuò)展,8位補(bǔ)碼擴(kuò)至16位。
SW=008位操作數(shù)
SW=0116位操作數(shù)
SW=118位操作數(shù)擴(kuò)展至16位
(SW=10無(wú)效)
例:ADD2345H[BX][DI],-105
機(jī)器語(yǔ)言:8381452397H
1000001110000001010001010010001110010111
10000011100000010100010100100011
設(shè):指令執(zhí)行前:
BX=0892HDI=59A3H
DS=2000H(2857AH)=0029H
目的操作數(shù)地址:
20000H+2345H+0892H+59A3H=2857AH
指令執(zhí)行后:
(2857AH)=0029H+0FF97H=OFFCOH
OFF97H是97H的帶符號(hào)擴(kuò)展:
1111111110010111
注意事項(xiàng):
使用BP的間接尋址:SS為默認(rèn)段寄存器。
其它:DS為默認(rèn)段寄存器。
有段跨越前綴時(shí),在指令前加一個(gè)字節(jié):
76543210
001SEG110
SEG:00ES01CS10SS11DS
三種情況不允許段跨越:
程序:必為CS堆棧:必為SS串操作的目的串:必為ES
3.3指令系統(tǒng)
Inlel8086/8088的指令系統(tǒng)可分成以下六組:
數(shù)據(jù)傳送指令。
算術(shù)指令。
邏輯指令。
串處理指令。
控制轉(zhuǎn)移指令。
處理機(jī)控制指令。
3.3.1數(shù)據(jù)傳送指令
數(shù)據(jù)傳送指令負(fù)責(zé)把運(yùn)算過(guò)程中所需的數(shù)據(jù)、地址或立
即數(shù)傳送到寄存器或存儲(chǔ)單元中。
1.數(shù)據(jù)通路與類型匹配
數(shù)據(jù)傳送指令的作用,就是在內(nèi)存、通用寄存器、段寄存器、立
即數(shù)之間“傳來(lái)傳去”。在傳送指令的源操作數(shù)和目的操作
數(shù)之間,傳什么,如何傳,既要根據(jù)程序的需要來(lái)設(shè)置,還
要根據(jù)語(yǔ)法規(guī)則及數(shù)據(jù)通路來(lái)決定。
2.MOV和XCHG指令
MOV指令的語(yǔ)法為:
MOVDST,SRC
根據(jù)數(shù)據(jù)通路圖可知如下指令是合法的(其中ac為立即數(shù),
reg為通用寄存器,segreg為段寄存器,mem為內(nèi)存):
MOVreg,acMOVmem,ac
MOVreg,regMOVmem,reg
MOVreg,segregMOVmem,segreg
MOVreg,memMOVsegreg,reg
MOVsegreg,mem
當(dāng)使用段寄存器作目的操作數(shù)時(shí),不允許使用CS作目的
操作數(shù)。
MOV或其他大多數(shù)指令必須遵守以下規(guī)則:
1)源和目的必須類型匹配(8位對(duì)8位,16位對(duì)16位)。
2)目的操作數(shù)不能為立即數(shù)。
3)源和目的操作數(shù)不能同時(shí)為內(nèi)存操作數(shù)(串指令除外)。
4)源和目的操作數(shù)不能同時(shí)為段寄存器。
下面的指令不正確:
(1)MOVAX,BL
(2)MOVES,DS
(3)MOV[DI],[SI]
可以將它們改為:
(1)MOVAL,BL
MOVAH,0
(2)MOVAX,DS
MOVES,AX
(3)MOVAL,[SI]MOV[DI],AL
例:
MOVDL,CL
MOVAX,BX
MOVAX,[2010H]
MOVCL,[BX+5]
MOV[SI],CX
MOVAL,32H
MOVCX,2801H
MOVDS,AX
MOVSS,DX
XCHGOPRI,OPR2;將兩個(gè)操作數(shù)的內(nèi)容互換(不允許任何一個(gè)
操作數(shù)是立即數(shù))
例:XCHGBX,[BP+SI];將BX中的內(nèi)容與堆棧段內(nèi)容互換
XCHG及MOV指令執(zhí)行后都不影響標(biāo)志寄存器。
例:將有效地址為1000H開始的內(nèi)存中100個(gè)連續(xù)存儲(chǔ)單
元清零。
MOVDI,1000H
MOVCX,64H;64H=100
MOVAL,0
BBB:MOV[DI],AL
INCDI
DECCX
JNZBBB
其中,BBB為符號(hào)地址
3.PUSH,POP,PUSHF,POPF指令
PUSH,POP入棧出棧指令
PUSHF,POPF標(biāo)志寄存器入棧出棧指令
例:
在程序中的某一部分里要臨時(shí)借用一下某個(gè)寄存器,但借用
前的內(nèi)容以后還有用,就可以先用PUSH指令將其保存起來(lái),
然后在必要時(shí)再用POP指令恢復(fù)成原來(lái)的內(nèi)容。
PUSHCX
PUSHAX
..;其間的程序要借用CX,AX
POPAX;恢復(fù)AX內(nèi)容
POPCX;恢復(fù)ex內(nèi)容
利用堆棧還可以傳遞內(nèi)容。例:
PUSHDS
POPES;ES的內(nèi)容二DS的內(nèi)容
4.地址傳送指令LEA,LDS,LES
LEAreg,src;將源操作數(shù)src的偏移地址送入reg
例:LEABX,[BX+0400H]
執(zhí)行前:BX=2000H
執(zhí)行后:BX=2000H+0400H=2400H
LDSreg,src;將合。中的雙字內(nèi)容依次送入reg及DS
例:LDSSI,[2030H]
執(zhí)行前:DS=5000H(52030H)=0240H
(52032H)=3000H
執(zhí)行后:SI=0240H
DS=3000H
LESreg,src;將src中的雙字內(nèi)容依次送入reg及ES
3.3.2算術(shù)運(yùn)算指令
1.加法和減法指令
主要的六條加法和減法指令如下:
ADDdst,src
ADCdst,src;src+dst+CF,帶進(jìn)位加
INCopr;操作數(shù)自加1
SUBdst,src
SBBdst,src;帶借位減
DECopr
其中,dst,src及opr既可以是字節(jié)操作數(shù),也可以是字操
作數(shù),但類型必須匹配。
除了INC及DEC指令不影響CF(進(jìn)位標(biāo)志)外,所有指令都會(huì)
影響標(biāo)志寄存器,其中最重要的是CF,ZF,SF,OF,分
別表示進(jìn)位、結(jié)果為零、符號(hào)和溢出。
例:ADDAL,70H
ADDBX,3000H
ADDSI,CX
ADDDX,[BX+DI]
ADD[BX+SI],AX
例:32位加法運(yùn)算:
設(shè):DX=0007HAX=A379H0007A379H
BX=0005HCX=7E4FH00057E4FH
指令為:
ADDAX,CX
ADCDX,BX
A379
+7E4F
121C8
0007
0005
+1
000D結(jié)果:DX=000DHAX=21C8H
例:
INCBL
INCCX
INCBYTEPTR[BX]
下面的指令有錯(cuò)誤:
(1)ADD[SI],13H
(2)SUBAX,BL
指令應(yīng)改為:
(1)ADDWORDPTR[SI],13H
(2)MOVBH,0
SUBAX,BX
例:求2=乂一Y。X,Y,Z都是一個(gè)32位數(shù)。
XDD?;在數(shù)據(jù)段中定義一個(gè)雙字
YDD?
ZDD?
MOVDX,WORDPTRX+2;用DX:AX作為被減數(shù).
;雙字的高位字在后,地址加
2
;雙字中的字,必須用PTR運(yùn)算
符
MOVAX,WORDPTRX;雙字的低位字在前
SUBAX,WORDPTRY;先進(jìn)行低16位減法
SBBDX,WORDPTRY+2;高16位減法用SBB,考慮借
位
MOVWORDPTRZ,AX;差的低16位
+口
2、比較指令(兩數(shù)相減,僅影響標(biāo)志位):
例:
CMPAL,64H
CMPBX,21F0H
CMPCL,DH
CMPAX,[BX+SI+04]
相等時(shí),ZF=1(否則為0)
例:找出100個(gè)無(wú)符號(hào)8位數(shù)的最大值(有效地址3000H開
始的100個(gè)無(wú)符號(hào)數(shù))。
MOVBX,3000H;起始地址
MOVCX,63H;99次比較
MOVAL,[BX]
LP1:INCBX
CMPAL,[BX]
JNCLP2;無(wú)借位轉(zhuǎn)移,大于等于轉(zhuǎn)移
MOVAL,[BX]
LP2:DECCX
JNZLP1
MOVMAX,AL;最大值送MAX單元
例:找出50個(gè)有符號(hào)16位數(shù)的最小值(有效地址3000H開
始的50個(gè)有符號(hào)數(shù))。
MOVBX,3000H;起始地址
MOVCX,31H;49次比較
MOVAX,[BX]
BBB:INCBX
INCBX
CMPAX,[BX]
JNGCCC;有符號(hào)數(shù)小于等于轉(zhuǎn)移
MOVAX,[BX]
CCC:DECCX
JNZBBB
MOVMIN,AX;最小值送MIN單元
3、乘法指令
8位乘法,積在AX中。
16位乘法,積在DX(高),AX(低)中。
1、無(wú)符號(hào)數(shù)乘法
MULCL;AL乘CL送AX
MULBX
MULBYTEPTR[SI];8位乘
MULWORDPTR[DI];16位乘
2、有符號(hào)數(shù)乘法
IMULBL
IMULCX
究竟是使用MUL還是IMUL取決于你怎樣看待操作數(shù)(包括
乘數(shù)和被乘數(shù))。
例:設(shè)AL=11111111B,BL=llllllllBo
如果使用MULBL指令,則nnnnBxnniniB=
255DX255D=65205Do
如果使用IMULBL指令,則是(-1)X(-1)=1。
乘法指令會(huì)影響標(biāo)志位。但除了CF和OF以外的標(biāo)志
位無(wú)定義。
注意:乘數(shù)不能為立即數(shù)。
X(字節(jié))乘以10的指令如下:
MOVAL,10
MULX;結(jié)果在AX中
絕不能寫成以下形式:
MOVAL,X
MUL10
注意,不能以16位操作數(shù)乘8位操作數(shù),必須將8位操作數(shù)擴(kuò)展
成16位操作數(shù)。對(duì)無(wú)符號(hào)8位操作數(shù),擴(kuò)展成16位時(shí),只需
將高8位清零。對(duì)有符號(hào)的8位操作數(shù),擴(kuò)展成16位時(shí),要使
用CBW指令o
CBW指令無(wú)參數(shù),它的作用是將AL的符號(hào)擴(kuò)展至AH。如果
AL的最高位為0,貝ijAH=00;如果AL的最高位為1,貝”AH=
OFFHo
3.3.3邏輯指令
邏輯指令包括邏輯運(yùn)算指令及移位指令兩大類。
1.邏輯運(yùn)算指令(指令都是按位進(jìn)行邏輯運(yùn)算的。)
ANDdst,src;邏輯“與“
ORdst,src;邏輯“或"
XORdst,src;邏輯“異或”
NOTdst;邏輯“非”
例:
ANDAL,OFH將高4位清零
AL=1O1OO1O1——>AL=00000101=05H
ANDAL,OFOH將低4位清零;
AL=10100101——>AL=10100000二OAOH
ANDAL,OFEH將最低位清零
ORAL,80H將最高位置1
XORAL,ALAL清零,比M0VAL,0效率高
ORAL,30HOR之前AL=O?9,則將AL中的值變ASCH碼
AL=00000101——>AL=00110101=35H
ANDAL,OFHAND之前AL=30H?39H,則將AL中的值變
為0?9
AL=00U0101——>AL=00000101=05H
2.測(cè)試指令TEST
完成操作類似于AND,但它不將運(yùn)算結(jié)果送目的操作數(shù),只是
影響標(biāo)志位。
例:統(tǒng)計(jì)負(fù)數(shù)的個(gè)數(shù)(有效地址4000H開始的20H個(gè)有符號(hào)數(shù))。
XORDI,DI
MOVBX,4000H
MOVCX,20H
AGAIN:MOVAL,[BX]
INCBX
TESTAL,80H;若AL最高位為1(負(fù)數(shù))時(shí),ZF=O
JZ,GOON;正數(shù)時(shí)跳轉(zhuǎn)
INCDI
GOON:DECCX
JNZAGAIN
MOVMINUS,DI……
3.移位指令
移位指令共有八條,它們的指令格式分別是:
邏輯左移SHLdst,count
算術(shù)左移SALdst,count
邏輯右移SHRdst,count
算術(shù)右移SARdst,count
循環(huán)左移ROLdst,count
循環(huán)右移RORdst,count
帶進(jìn)位循環(huán)左移RCLdst,count
帶進(jìn)位循環(huán)右移RCRdst,count
dst是除立即數(shù)之外的任何尋址方式。字或字節(jié)都可以。
SHR移位方法:
例:SALAH,1
MOVCL,2
SHLSI,CL;位移數(shù)多于1時(shí),必須用CL
ROL
ROR
RCLCFw
RCR斗CF—
例:
x=x*10,使用移位及加法來(lái)實(shí)現(xiàn)(速度快):
SHLBX,1;X*2
MOVAX,BX;保存X*2
SHLBX,1
SHLBX,1;X*8
ADDBX,AX;X=X*8+X*2
需11個(gè)時(shí)鐘周期。
使用乘法指令,則需要70個(gè)時(shí)鐘周期。
例:32位數(shù)乘士。用左移2位完成乘4。用兩個(gè)寄存器
DX及AX來(lái)表示32位數(shù)。
XDD?;X為一個(gè)32位數(shù)
MOVAX,WORDPTRX;取低16位
MOVDX,WORDPTRX+2;取高16位
SHLAX,1;低16位左移1位.
;移出的位在CF中
RCLDX,1:高16位帶進(jìn)位循環(huán)左移,
;低16位的進(jìn)位位移入高16位的最低位
SHLAX,1
RCLDX,1
P60頁(yè)第2題答案:
1)MOV[CX],AL
不能用CX間接尋址。
2)MOVBH,320
出o
3)MOVDS.2000H
沒(méi)有數(shù)據(jù)通路。
4)ADDSI.FDDH
補(bǔ)0為OFDDHo
5)SHLAX,2
移位數(shù)大于1時(shí)用CL寄存器。
6)CMPBYTEPTR[SI],X
不能都是內(nèi)存單元。
7)LEABXJSI]
正確。
8)LDSBXJDX]
不能用DX間接尋址。
9)JMPBYTEPTRAX
PTR不能在寄存器前。
10)JMPAX
正確。
11)JMP[AX]
不能用AX間接尋址。
12)RET5
RET后必須是偶數(shù)。
13)MOV[BX+SI+1OJ4OO
必須指明字或字節(jié)。
14)DIVAL
AX為被除數(shù),AL為除數(shù),
當(dāng)(AH)>(AL)時(shí),結(jié)果可能溢出。
P60頁(yè)第3題答案:
1)5634H
2)7856H
3)78H
4)7856H
;P60頁(yè)5(1)求Z=X+Y。X,Z是32位數(shù),Y是8位數(shù)。
datasegment
XDD1111FFFFH
YDB2
ZDD?
dataends
*
codesegment
assumecs:code,ds:data
XYAddprocfar
begin:movax9data
movds,ax
MOVDX.WORDPTRX+2
;用DX:AX作為被加數(shù).
;雙字的高位字在后,地址加2
MOVAX,WORDPTRX;雙字的低位字在前
MOVBL,Y;字的低8位
XORBH.BH;BX中為16位數(shù),等于Y
ADDAX.BX;先進(jìn)行低16位加法
ADCDX,0;高16位加法,考慮進(jìn)位
MOVWORDPTRZ,AX;和的低16位
MOVWORDPTRZ+2.DX;和的高16位
movah,4ch
int21h
XYAddendp
codeends
endbegin
ASC碼內(nèi)存
例:將BCD碼轉(zhuǎn)換為ASCII碼。
MOVSI,1OOOH3000H31H
MOVDI,3000H32H
MOVCX,000433H
34H
GGG:MOVAL,[SI]
35H
MOVBL,AL36H
ANDAL,OFHBCD碼內(nèi)存37H
ORAL,3OH……138H
MOV[DI],AL1000H21H
43H
INCDI
65H
87H
ASC碼
MOVAL,BL內(nèi)存
PUSHCX
3000H31H
MOVCL,432H
SHRAL,CL;邏輯右移33H
;前面補(bǔ)034H
35H
ORAL,3OH
36H
MOV[DI],ALBCD碼內(nèi)存37H
INCDI……138H
INCSI1000H21H
POPCX43H
65H
DECCX87H
JNZGGG
編寫完整程序的提不:
datasegment
BCD1DB21H,43H,65H,87H
ASCIDB8dup(?)
dataends
LEASI.BCD1
LEADI,ASCI
補(bǔ)充內(nèi)容:
3.2.2與轉(zhuǎn)移地址有關(guān)的尋址方式
1.段內(nèi)轉(zhuǎn)移、段間轉(zhuǎn)移
段內(nèi)轉(zhuǎn)移:
■移到同一個(gè)代碼段內(nèi)的某個(gè)偏移地址處
段間轉(zhuǎn)移:
■移到另一個(gè)代碼段中的某個(gè)偏移地址處
2.段內(nèi)直接尋址
段內(nèi)直接尋址:指令的有效地址是當(dāng)前IP寄存器的內(nèi)容
和指令中指定的8位或16位位移量之和。指令的機(jī)器
碼中帶有相對(duì)于當(dāng)前IP的位移量,是相對(duì)尋址。
8位位移量:加SHORT操作符(叫做:短跳轉(zhuǎn))
16位位移量:加NEARPTR操作符(可以省略)。
例:
JMPSHORTLI;L1與當(dāng)前IP的位移量是一個(gè)8位值
JMPL1(或者JMPNEARPTRLI)
;L1與當(dāng)前IP的位移量是一個(gè)16位值
條件轉(zhuǎn)移指令只能是8位位移量,省略了SHORT操作符。
3.段內(nèi)間接尋址
有效地址是一個(gè)通用寄存器或數(shù)據(jù)段中一個(gè)存儲(chǔ)
單元的內(nèi)容(尋址內(nèi)存可使用任何一種尋址方
式)。
例:
MOVAX,OFFSETpl
;獲取pl過(guò)程在代碼段內(nèi)的偏移值
CALLAX
例:
MOVAX,[BX];數(shù)據(jù)段中,寄存器間接尋址
JMPBX;代碼段中,段內(nèi)間接尋址
MOVAX,OFFSETpl;獲取過(guò)程pl的偏移地址送入AX
MOVADD1,AX;將AX內(nèi)容送入數(shù)據(jù)段內(nèi)的ADD1處
CALLADD1;轉(zhuǎn)移至ADD1中存放的偏移地址處
MOVBX,OFFSETADD1;獲取ADD1的偏移地址送入BX
CALL[BX];轉(zhuǎn)移地址的偏移地址位于數(shù)據(jù)段中,
;要通過(guò)BX間接尋址獲取
4.段間直接尋址
段間直接尋址在指令中給出了要轉(zhuǎn)移的地址的
代碼段和段內(nèi)偏移量。
例:
CALLFARPTRp2
要轉(zhuǎn)移至的標(biāo)號(hào)或過(guò)程名必須具備FAR屬性。
5.段間間接尋址
轉(zhuǎn)移地址必須放入內(nèi)存單元中,且是一個(gè)雙字。
例:JMPDWORDPTR[BX+INTERS]
間接的偏移量
內(nèi)存單元中的轉(zhuǎn)移地址是一個(gè)雙字,高位字在
后,低位字在前。轉(zhuǎn)移后,低位字變成了IP,
高位字變成了CS。
3.3.4控制轉(zhuǎn)移指令
控制轉(zhuǎn)移指令用來(lái)改變程序的執(zhí)行順序,
共有如下幾類:
?無(wú)條件轉(zhuǎn)移指令(JMP);
?條件轉(zhuǎn)移指令
?循環(huán)指令
?子程序調(diào)用與返回指令。
?中斷與中斷返回指令。
1、無(wú)條件轉(zhuǎn)移指令
例:
JMPSHORTPTRL1;轉(zhuǎn)移至段內(nèi)L1標(biāo)號(hào)處,
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 年會(huì)員工發(fā)言稿28篇
- 感恩節(jié)創(chuàng)意方案(19篇)
- 易錯(cuò)點(diǎn)16 閱讀理解:詞義猜測(cè)題(4大陷阱)-備戰(zhàn)2025年高考英語(yǔ)考試易錯(cuò)題含解析
- 幼兒家長(zhǎng)會(huì)講話稿15篇
- 土壤(第1課時(shí))導(dǎo)學(xué)案 高中地理人教版(2019)必修一
- 快遞使用規(guī)則培訓(xùn)
- 初級(jí)會(huì)計(jì)實(shí)務(wù)-初級(jí)會(huì)計(jì)《初級(jí)會(huì)計(jì)實(shí)務(wù)》模擬試卷294
- 初級(jí)會(huì)計(jì)經(jīng)濟(jì)法基礎(chǔ)-2021年5.15上午初級(jí)會(huì)計(jì)職稱考試《經(jīng)濟(jì)法基礎(chǔ)》真題
- 智研咨詢-2024年中國(guó)地?zé)崮荛_發(fā)利用行業(yè)市場(chǎng)規(guī)模、行業(yè)集中度及發(fā)展前景研究報(bào)告
- 220k變電所安全運(yùn)行
- 【超星學(xué)習(xí)通】馬克思主義基本原理(南開大學(xué))爾雅章節(jié)測(cè)試網(wǎng)課答案
- 工傷賠償授權(quán)委托書范例
- 食堂餐具炊具供貨服務(wù)方案
- 自然科學(xué)基礎(chǔ)(小學(xué)教育專業(yè))全套教學(xué)課件
- 小學(xué)語(yǔ)文閱讀教學(xué)落實(shí)學(xué)生核心素養(yǎng)方法的研究-中期報(bào)告
- 電梯使用轉(zhuǎn)讓協(xié)議書范文
- 工程變更履歷表
- 煤礦崗位標(biāo)準(zhǔn)化作業(yè)流程
- 唯物史觀課件
- 信息資源管理(馬費(fèi)成-第三版)復(fù)習(xí)重點(diǎn)
- 郵輪外部市場(chǎng)營(yíng)銷類型
評(píng)論
0/150
提交評(píng)論