日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

微型计算机及接口技术笔记,微机原理与接口技术笔记(一)

發布時間:2023/12/15 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 微型计算机及接口技术笔记,微机原理与接口技术笔记(一) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

8088/8086 CPU特點

采用并行流水線工作方式

通過設置指令預取隊列實現

對內存進行分段管理

分為4個段并設置地址段寄存器,實現對1MB空間的尋址

支持協處理器

最小模式過程

8088送ALE給地址鎖存器,地址不會改變

地址線和數據線

(AD_0-AD_7):低八位地址和低八位數據信號分時復用.傳送地址時信號為單向,傳送數據時為雙向.

(A_{16}-A_{19}):高4位地址信號,與狀態信號分時復用

(A_8-A_{15}):8位地址信號

WR 寫信號

RD 讀信號

IO/M 訪問內存/訪問接口

DEN 低電平有效,允許讀寫操作

DT/R 傳送方向控制

READY 時鐘周期,相當于CLK

第三個周期Ready是高電平,就表示工作結束,進行第四個周期,如果是低電平,就要插入一個等待周期

中斷請求響應

INTR 可屏蔽中斷請求輸入端

NMI 非屏蔽中斷請求輸入端

INTA 中斷響應輸出端

總線保持信號

HOLD 總線保持請求信號輸入端,CPU以外的其他設備要求占用總線時,向CPU發出請求

HLDA,CPU對HOLD的響應信號

執行單元EU

總線接口單元BIU

從內存中取指令到指令預取隊列

負責與內存或者IO接口的數據傳送

在執行轉移程序時,BIU使指令預取隊列復位,從指定的新地址取指令,并立即傳給執行單元執行.

MN/MX 1-最大模式,0-最小模式

8088 內部寄存器

8個通用寄存器

數據寄存器

AX 累加器

BX 基址寄存器

CX 計數寄存器(循環 串操作)

DX 數據寄存器

地址指針寄存器

SP 堆棧指針寄存器,棧頂

BP 訪問存放在內存單元的偏移地址

BX指向的數據段,BP指向的堆棧段

變址寄存器

SI 源

DI 目標

IP PC

FLAGS

C 進位

F 溢出 兩個符號數,看兩個進位是否相同就可以判斷

Z 為0時為1

S 運算結果最高位為1時

P 1的個數為偶數時為1

A bit3向bit4有進位時為1

T 單步工作

IF 中斷允許標志位,為1時可以相應可屏蔽中斷請求

D 串操作時確定方向

段寄存器(存放段基地址)

CS 代碼段 存放指令代碼

DS 數據段 存放數據

ES 附加段 存放數據

SS 堆棧段 暫時不用但是要保存的數據

實地址尋址

物理地址=段基地址*16+偏移地址

一個內存單元在同一時刻可以屬于兩個不同類型的段.

堆棧段

該看p23

8位寄存器中存放的均為運算的數據

AX CX一定是數據,BX,DX可能是地址

匯編

MOV

MOV指令不影響標志位

兩操作數長度相同

源操作數 寄存器 存儲器 立即數 目的操作數 寄存器 存儲器

不允許同時為存儲器

兩操作數不能同時為段寄存器

源操作數是立即數時,目標操作數不能是段寄存器

IP和CS不作為目標操作數,FLAGS不作為操作數

不能用立即尋址給段寄存器賦值

MOV DX,09H(√)DX高八位是0,低八位是9

將 * 的ASCII碼送入內存數據1000H開始的100個單元中

MOV DI,1000H

MOV CX,64H//常數100

MOV AL,2AH

AGAIN:MOV [DI],AL

INC DI

DEC CX

JNZ AGAIN//CX不為0就跳轉

HLT

堆棧

先進先出

push先SP--,再存數,pop先取數到AL,再SP++

以字為單位,一定是16位,沒有8位

操作數可以是寄存器和存儲器,但不能是立即數,但操作指令不能是立即數ddddddddddddd

底下是高地址,上面是低地址,然后先壓低地址,再壓高地址

交換指令

沒有源操作數和目的操作數,一個立即數也不能有

不允許使用段寄存器

查表指令

用BX表示首地址,AL表示位移量

BX+AL所指單元送AL

相當于AL是數組首地址,BX是下標,進行一次iloc訪問

字符擴展指令

符號位擴展到高位,無符號數補0,隱含的操作數AX、DX

CBW 字節到字

AL內容擴展到AX

最高位為1,AH=FFH

最高位為0,AH=00H

CWD 字到雙字

AX內容擴展到DX,AX

最高位1,DX=FFFFH

最高位0,DX=0000H

LEA指令

源操作數必須是存儲器,目的操作數通常是間址寄存器

將變量的16位偏移地址寫入到目標寄存器

MOV讀取的內容,LEA讀取的地址

將數據段中首地址為MEM1的50個字節的數據傳送到同一邏輯段首地址為MEM2的區域存放,編寫相應的程序段。

LEA SI,MEM1

LEA DI,MEM2

MOV CL,50

NEXT:MOV AL,[SI]

MOV [DI],AL//兩個存儲器中間不能直接傳,需要通過寄存器

INC SI

INC DI

JNZ NEXT

HLT

LDS、LES

將一個32位的遠地址指針寫入目標寄存器

LDS:將源操作數的偏移地址送目標寄存器

LES:將源操作數的偏移地址送目標寄存器,將源操作數的段地址送給ES

標志傳送指令

LAHF:將FLAGS低八位裝入AH

SAHF:AH裝入FLAGS的低八位

PUSHF:stack

POPF Flags

PUSHA 所有的Rc16入棧 POPA

Rc16:AX,CX,DX,BX,SP,BP,SI,DI

I/O端口

IO接口中用于存儲數據,可以直接被CPU訪問的寄存器.

IN acc,PORT 從端口地址讀入數據到累加器

OUT PORT,acc 將累加器的值輸出到端口中,acc只能是AL/AX

8位時,直接給出8位地址,16位時,端口地址由DX指定.

算術運算類指令

ADD

ADC 帶進位加法 d

INC,DEC將操作數視為無符號數,會影響標志位,但是不影響進位標志C

無符號進位標志看C,有符號看O

在內存的First和Secontd開始的區域中分別 存放著2F365H和 5E024 H兩個數,要求求 其和,并存入Third中。

注意字長是32位,加完一次后需要再加2

MOV AX,First

ADD AX,Second

MOV Third,AX

MOV AX,First+2//要考慮進位,使用ADC

ADC AX,Second+2

MOV Third+2,AX

求內存數據段中M1為首和M2為首的兩個20字節數之和,并將結果寫入M2為首的區域.

//按字節

LEA SI,M1

LEA DI,M2

MOV CX,20

CLC//make CF = 0

NEXT:

MOV AL,[SI]

ADC [DI],AL// [DI]+Al+CF->[DI]

INC SI

INC DI

DEC CX

JNZ NEXT

HLT//暫停

//按字2

LEA SI,M1

LEA DI,M2

MOV CX,10

CLC//make CF = 0

NEXT:

MOV AX,[SI]

ADC [DI],AX// [DI]+Al+CF->[DI]

ADD SI,2

ADD DI,2

DEC CX

JNZ NEXT

HLT//暫停

SBB (OPRD1-OPRD2-CF->OPRD1)

NEG (0-OPRD->OPRD),執行后除非操作數為0,否則CF都是1.

80H或者8000H執行后結果不變,但是OF置1(溢出),其他情況下均置0.就是各位取反+1

CMP僅影響標志位

在減法中,小的減大的表示有借位,C=1;

無符號數 CF=0 AX>=BX, CF=1,AX

有符號數 OF SF相同時,AX>=BX,否則AX

20個數中找最大數

LEA BX,MAX

LEA SI,BUF

MOV CL,20

MOV AL,[SI]

NEXT:

INC SI

CMP AL,[SI]

JNC GOON //CF=0轉移

XCHG [SI],AL

GOON:DEC CL

JNZ NEXT//如果不為0就跳轉

MOV [BX],AL

HLT

乘除運算指令

乘法指令隱含了存放被乘數的AL或AX,以及存放結果的AX或AX DX.

無符號乘法的操作數不能是立即數

除法

OPRD字節數,執行AX/OPRD

AL=商,AH=余數

OPRD雙字節數

DXAX/OPRD

AX=商,DX=余數

INC,DEC的執行不會影響CF,其他算術類指令會影響狀態標志位

乘法運算中,乘積是乘數的雙倍字長

除法要求被除數是除數的雙倍字長

邏輯運算指令

除了"非",其余指令的執行都會影響除AF外的標志

無論運算結果如何,都會使CFOF清零

AND AL,0FH 實現掩碼

AND AX,AX 使得CFOF清零

從地址為3F8H端口讀入一個字節數,如果該數bit1位為1,則可從38FH端口將DATA為首地址的1個字輸出,否則不能進行數據傳送

MOV DX,3F8H

WATT:IN AL,DX

AND Al,02H

JZ WATT

MOV DX,38FH

MOV AX,DATA

OUT DX,AX

OR 使得某些位為1

非運算對標志位無影響

XOR AX,AX 清零

TEST OPRD1,OPRD2,執行與運算,demo結果不寫回

從地址為3F8H端口讀入一個字節數,如果該數bit1位 bit3位和bit5位同時為1,則可從38FH端口將DATA為首地址的1個字輸出,否則不能進行數據傳送

LEA SI,DATA

MOV DX,3F8H

WATT:IN AL,DX

AND AL,2AH

XOR AL,2AH//0010 1010,如果這些位都是1,那么XOR后一定為0

JNZ WATT

MOV DX,38FH

MOV AX,[SI]

OUT DX,AX

移位操作指令

當目標操作數為存儲器操作數時,需要說明其字長,移動的位數只能是1或者是CL

算術左移邏輯左移:最高位移到CF,最低位為0

邏輯右移:最低位->CF,最高位0

算術右移:最低位->CF,最高位變符號位

循環移位可以戴震進位也可以不帶CF

循環指令左右 對于某些狀態進行測試

高位和低位的交換

與非循環移位組成32位或者更長字數的移位

LEA SI,MI

LEA DI,M2

MOV CH,4

NEXT:MOV AL,[SI]

MOV BL,AL

AND AL,0FH

OR AL,30H

MOV [DI],AL

INC DI

MOV AL,BL//還原

MOV CL,4

SHR AL,CL

OR AL,30H

MOV [DI],AL

INC DI

INC SI

DEC CH

JNZ NEXT

HLT

串操作指令

要求兩個操作數都在存儲器,針對數據塊和存儲器的操作

串所在的區域 串的首地址 串的長度 方向

源串一般在數據段,偏移地址SI指定

目標串必須在附加段,由DI指定

串的長度由CX指定

操作方向DF=0增地址,DF=1減地址

REP CX!=0時,REP后的指令將繼續重復執行

REPE CX!=0且ZF=1,重復執行

REPNE CX!=0且ZF=0,重復指令

MOVS

增地址

串傳送 指針指向串尾+1

串比較:指針指向結束位+1

減地址

串尾-1

結束位-1

串掃描指令 用于在指定存儲區域中尋找某個關鍵字

SCAS OPRD

MOV DI,2000H

MOV BX,DI

MOV CX,0AH

MOV AL,'A'

CLD//將DF清零,為增方向

REPNZ SCASB

JZ FOUND

MOV DI,0

JMP DONE

FOUND:DEC DI//注意停下的時候還在+1的位置

MOV DATA2,DI

INC DI

SUB DI,BX

DONE:

MOV DATA1,DI

HLT

LODS OPRD

AL

AX

將某個區域的數據串依次裝入累加器,以便顯示或輸出到接口,

串存儲指令

STOS OPRD

AL -> [ES:DI]

AX -> [ES:DI]

用于將內存中的某個區域置成相同的值

注意事項

需要定義附加段

需要設置數據的操作方向

源串和目標串的指針分別為SI和DI

傳送類指令前加無條件重復前綴

串比較類指令前加條件重復前綴,但前綴不影響ZF狀態

?

總結

以上是生活随笔為你收集整理的微型计算机及接口技术笔记,微机原理与接口技术笔记(一)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。