微機(jī)原理 (西安電子科技大學(xué))

一個端口至少一個地址,可分配多個
內(nèi)部外部各種地址作為一個整體來編地址
分配以后不能再重復(fù)
缺點:浪費了存儲器地址空間,沒有專用的IO操作指令
優(yōu)點:CPU對存儲器操作的所有指令同樣適合對IO端口操作,在IO驅(qū)動程序設(shè)計中,程序編寫設(shè)計較為簡單靈活
如:MCS-51
存儲器地址空間和IO地址空間各編各的,相互獨立,互不干擾
如:8086
優(yōu)點:節(jié)約了存儲器地址
缺點:指令記憶相對復(fù)雜;IO程序設(shè)計不靈活。
存儲器尋址
IO尋址
鎖存器
2.2
1.了解微處理器的工作原理
2.掌握匯編語言程序設(shè)計的編程模型
14頁圖2.2
內(nèi)部結(jié)構(gòu):
- ALU
- 工作寄存器——數(shù)據(jù)寄存器,地址寄存器
- 控制器——中央指揮機(jī)關(guān)
取指令-->指令寄存器--->譯碼
- IO控制邏輯
取指令,執(zhí)行指令效率不高,所以研制了8086
堆棧 由先進(jìn)后出原則組織的一段存儲器區(qū)域
堆棧必須按字操作
堆棧操作的地址至于SP有關(guān)
SP(堆棧指針)
堆棧大小要留出30%富余量
PUSH,POP配對
BIU總線接口單元
EU執(zhí)行單元
BIU:圖2.3
寄存器:
CS:code segment代碼段寄存器
DS:數(shù)據(jù)段寄存器
ES:附加數(shù)據(jù)段寄存器
SS:stack segment 堆棧段寄存器
IP:指令指針寄存器==PC
地址產(chǎn)生與總線控制邏輯:
指令隊列寄存器(6個字節(jié))8086
8088 四個字節(jié)
BIU:從外部存儲器中取指令,并將取來的指令放到指令隊列中
EU:主要負(fù)責(zé)從指令隊列中獲取指令,并對該指令加以執(zhí)行
BIU,EU并行執(zhí)行,提高效率
流水線
BIU休息:隊列取滿或EU需要使用總線
EU休息:隊列為空
大大提高了總線的利用率
通用寄存器組成了編程模型
2.4
共有十四個16位的REG(寄存器)
按功能分:
通用寄存器(8個):
1.數(shù)據(jù)寄存器:
AX(累加器)
BX(基址寄存器)
CX(計數(shù)器)
DX(IO地址寄存器)
2.地址指針與變址寄存器(2+2)
SP 堆棧指針寄存器
BP 地址指針寄存器
二者都可以提供16位邏輯偏移地址,但是不在一個段,BX默認(rèn)在數(shù)據(jù)段,BP默認(rèn)在堆棧段
如需更改,需加一個DS(段超越前綴)
SI 源變址寄存器
DI 目的變址寄存器
- (DX,DI,SI,找到的都在數(shù)據(jù)段)
源端必須在數(shù)據(jù)段 由SI提供
目的端必須在ES(附加數(shù)據(jù)段)偏移地址由DI指明(字符串操作)
movSB (字符串傳送)
CS 代碼段寄存器(用戶不能初始化)
DS 數(shù)據(jù)段寄存器
ES 附加數(shù)據(jù)段寄存器
SS 堆棧段寄存器
mov CS ,AX(錯) CS不能被初始化
- IP(指令指針寄存器16位)(不能為目的)
PSW: 處理器狀態(tài)字寄存器(16位,有用的9位)
狀態(tài)標(biāo)志6:ZF,CF,PF,OF,SF,AF
反映的是ALU運算后結(jié)果的狀態(tài)
控制標(biāo)志3:用來控制CPU的運行狀態(tài)
DF 方向控制(增,減)
CLD;DF=0;
STD;DF=1;
IF 中斷允許標(biāo)志
NMI:非屏蔽外部中斷
INTR:外部可屏蔽
IF=0,屏蔽 P62
P18
A19--A0 給外部存儲器編址
A15--A0給IO編址
前512給主板,后512給插件板
字節(jié)型,字型,雙字型
一個字節(jié)數(shù)據(jù)占用一個地址單元
順序存放
在DS段有定義:DB (字節(jié)型數(shù)據(jù)定義偽指令)
DB 12H,12,-12
DW 字型定義數(shù)據(jù)偽指令
一個字節(jié)低地址單元放低地址
高字節(jié)放在高地址
對準(zhǔn)低地址為偶地址
對準(zhǔn)的數(shù)據(jù)操作只需一個總線周期
未對準(zhǔn)需要兩個
奇數(shù)地址走CPU高八位地址線
偶地址走CPU低八位地址線
P28 .3.1.3變量定義偽指令
存儲器為什么要分段?
為了能給它尋址完(具體看講解)
怎么分段?
每個邏輯段最大64kB,每個邏輯段的起始地址必須能被16整除。最多能有64K個段,分別命名為0-65535
一個單元物理地址是該單元實際存在的地址
對一個邏輯段而言,段起始地址稱為段基址
相對段基址偏移的量叫做偏移地址
這種方式稱為邏輯地址
一個存儲單元的物理地址是唯一的
知道邏輯地址求物理地址
物理地址=段地址*16+段內(nèi)偏移地址
乘16相當(dāng)于左移一位
P15
CS段地址,IP段內(nèi)偏移地址 ==>PA 指令地址
8086取指令單元地址由CS:IP提供
圖2.3
P21 表2.1
字符串操作默認(rèn)段
表2.1
第三部分8086的指令系統(tǒng)
指令:
指令系統(tǒng):CPU能識別的所有指令的集合
機(jī)器語言:指令代碼語言
機(jī)器語言程序:用戶用機(jī)器語言編寫的程序
匯編語言:符號化的語言 如B0 12-->MOV AL,12H
匯編語言(源)程序:
匯編:把匯編語言源程序翻譯成機(jī)器語言程序的過程
常用的翻譯工具masm.exe(直接粘貼可用)
反匯編:把機(jī)器語言程序翻譯成匯編語言程序
文件名.ASM ——>文件名.OBJ-->(連接)文件名.exe
1.指令語句:CPU能執(zhí)行的語句或能匯編成指令代碼的語句
2.偽指令語句:CPU不能執(zhí)行的語句或不能匯編成指令代碼的語句
3.宏指令語句:本身是8086指令系統(tǒng)沒有的語句,是用戶用宏定義偽指令定義的一條新的語句
最多由四部分組成
DAT1(符號化的地址) DB 12H,-12,12;
變量名 助記符 操作數(shù) ;注釋
(名稱必須以字母開頭,數(shù)字必須以數(shù)字開頭)
代數(shù)表達(dá)式的值在匯編時計算然后再帶入
邏輯代數(shù)表達(dá)式也是,但是不常用
關(guān)系表達(dá)式 關(guān)系為假取全0,關(guān)系為真取全1
標(biāo)號一旦定義就具有三個屬性:
1.段地址屬性:SEG
2.段內(nèi)偏移地址屬性:OFFSET
3.類型:TYPE
NEAR(段內(nèi))-1
FAR(段間)-2
MOV BX,OFFSET NEXT (獲取段內(nèi)地址偏移屬性)
變量P28
變量定義偽指令:
DB :定義字節(jié)型數(shù)據(jù)
DW:定義字型數(shù)據(jù)變量
DD:定義雙字型數(shù)據(jù)變量
DAT1 DB 12,12H,-12,'1'
變量一旦定義就具有了五個屬性
1.段地址屬性 SEG
2.段內(nèi)偏移地址屬性 OFFSET
3.類型 TYPE
4.長度 LENGTH
5.大小 SIZE
在匯編語言程序中有一個美元符號,叫做位置計數(shù)器(16位)跟蹤匯編偏移地址
是一個常數(shù),指向匯編地址,也可以被引用
DB 無限字符
DW 兩個字符
DUP 重復(fù)操作符
長度:在變量名定義語句中,所定義的變量的個數(shù)
大?。?
數(shù)據(jù)傳送類
算術(shù)運算類
算數(shù)邏輯運算類
移位類
標(biāo)志位操作
轉(zhuǎn)義類(1.條件轉(zhuǎn)義,2.無條件轉(zhuǎn)義
程序控制類
子程序調(diào)用偽指令
中斷調(diào)用返回指令
字符串操作指令
輸入輸出指令
其他
宏指令
尋址方式:求操作數(shù)所在地或所在存儲器單元地址的尋址方式
求得的OPR可當(dāng)1.數(shù)據(jù)
2.地址
1.立即數(shù)尋址 mov AX,1234H P39 圖3.3
立即數(shù)只能作源操作數(shù)
2.寄存器尋址 mov AX,BX
` 寄存器類型要一致,類型要明確
mov AX,CL(錯)
mov DS,1500H(錯)
DS,ES,SS作DST時,SRC不能立即尋址
mov CS,AX(錯)
(CS,IP 不能作目的
要尋找的OPR在存儲器的某單元中,存放ORP的單元EA可由以下五種尋址方式求得
1。直接尋址
2.寄存器間接尋址[BX,SI,DI]
3.寄存器相對尋址[BX,BP,SI,DI]+8/16位DISP
4.基址變址尋址
5.基址,變址相對尋址
加括號是地址,不加括號是立即數(shù)
倆存儲器單元之間不能直接操作
EA=[BX,BP,SI,DI]+8/16disp(相對位移量)
[BP]