微機原理期末應急複習總結

2021-10-15 19:14:09 字數 3752 閱讀 2416

o(∩_∩)o

高手讓路

「梅毒」症狀嚴重者專用

8086定址方式

標誌暫存器說明:(1) 常用的有cf zf sf of pf 要牢記

2)負零進製偶溢位=szcpo(個人記憶小訣竅,當szcpo f=1的時候)

3)相關指令:clc stc cmc cli sti cld std

cf:清零置1 取反 if:清零置1 df:清零置1

有沒有發現,cl*的就是清零,st*的就是置1)

4)df=1的時候,用loop lop神馬的,cx自減1 反之自增1 其它不管

常用的指令系統

一、 計算類的指令:

只管記住以下這些就好了,要用就用,神馬帶不帶進製,不理它

(1)add a,b a=a+b

adc a,b a=a+b+fc

deg a a=a-1

inc a a=a+1

sub a,b a=a-b

sbb a,b a=a-b-cf

neg a a=-a

cmp a,b a-b 但是不改變a或b的值,只改變標誌暫存器(參考第一頁)的值

例 mov al,10

cmp al,10 (這時候標誌暫存器值改變,al>10減法無借位,則cf=0)

jz next1 (jz指令:當cf=1的時候跳轉到next1處繼續執行,但cf=0,所以不跳轉,直接執行下一條指令)

jnz next2 (jnz指令:當cf=0時跳轉到next2處繼續執行,此時cf=0則跳轉到next去了)

next1:xor ax,ax

next2: mov ah,4ch

int 21h

這條指令之所以花如此大篇幅介紹,是因為它實在太常用啦!

(2)imul a ax=al*a(關鍵在於a的型別,如果a是位元組型別的也就是8位2進製數的時候,結果存放在ax中,如果a是字型別的16位,高8位存在dx中,低8位放在ax中,以下相同)

mul a 同imul,只是imul做乘法的時候,符號位只要注意的,0表示負數,1表示正數,在計算的時候要注意是否是有符號運算,但是目前來看,我們還是比較少接觸到有符號數乘法的,所以常用mul,希望不要考有符號數吧

idiv a al=ax/a的商 ah=ax/a的餘數(字運算的時候dx儲存餘數)

div a 同idiv,這個是無符號的

二、 邏輯運算指令

and a,b a=a 與 b (1+1=1 ,1+0=0 ,0+0=0 )

常用舉例:and ax,86h (86h=10000110,則其中第1、6、7位是1,和ax與之後,a的第1、6、7位不變,其他位清零了)

or a,b a=a或b (a或b其中乙個為1的時候,a=1)

常用舉例:or ax,86h (86h=10000110,則其中第1、6、7位是1,和ax或之後,a的第1、6、7位變成1,其他位不變)

xor a,b a=a異或b (ab相同的時候a=1,不同的時候a=0)

常用舉例:xor ax,ax 一對比就知道,ax和ax自然是全部都一樣,所以每位都變成0,於是ax就被清零了

text a,b a 與 b 置標誌位,不改變a和b的值,有點類似cmp(見計算相關指令)的功能

not a a按位取反,相比neg,neg是求相反數,not是1和0互換

三、 串操作指令

movs 把ds:si所指內容傳給es:di,同時修改di和si的值(di+1 si+1)

cmps di:si-es:di 置標誌位,功能類似cmp,只是應用範圍不一樣

scas 把ax/al內容和es:di進行比較,ax/al-es:di置標誌位,修改di的值

lods ds:si所指內容傳送到ax/al中

stos ax/al中的內容傳送到es:si所指的記憶體中

對於以上所有指令,均沒有運算元,但是每個指令後面都必須加乙個字母表示型別,b表示位元組型別(參考imul指令說明了解位元組型別,w表示字型別,例movsb表示傳送乙個位元組,movsw表示傳送乙個字)

四、 移位指令:

shl/sal

cf0橫(向傳輸)

sarcf

起(最後一位補充回去)即符號位不變

shr 跟shl相反,r和l的區別

rol cf

跳(到最後一位補充回去)前面一位不但賦給cf,還補充到最後

ror 同rol,方向改變,不解釋

rcl cf

旋**一圈)不解釋

(記憶小秘訣:發現沒,「超」越)(s)旋橫(rr)起跳(s)

對齊一下,我就這麼記的,求小鄙視 c h a o

五、 其他一些常用指令

lea bx,table 把標號table指示的位址存在bx中

push/pop 進出棧,每執行一次push,sp-2,pop則sp+2

條件轉移指令指令詳細見p105只要記住乙個就可以記住兩個,一般是這樣

說明:在執行條件轉移指令之前一般都會先設定標誌暫存器(見第一頁)的值

所謂設定標誌暫存器的值,就是用計算讓標誌暫存器改變

例如:cmp ax,bx這樣不會影響ax和bx的值,但是會改變標誌暫存器的值,相關的,加減乘除法指令(見計算指令)都會改變標誌暫存器的值,但是同時也會改變ax的值,靈活使用起來就是可以在計算後直接使用條件轉移指令,就不需要cmp了

例:見計算相關指令cmp指令說明

匯程式設計序格式及相關

一、資料段:

data segment (at [****h])括弧內選填,看題目要求

定義變數

data end(反正有幾個變數定義幾個變數就可以結束了)

關於定義變數:假如你完全不會,那麼題目中有幾個英文的,有幾個數字,就這麼寫:英文本母 db 數字 ,?

,數字dup(?)然後稍微看一下對應一下哪個英文本母對應哪個數字,實在不行隨便

二、**段:

code segment

assume ds:data,es:data,cs:code

mian:mov ax,data

mov ds,ax

mov es,ax

設計步驟

mov ah,4ch

int 21h

code end

end main

好了,以上這個是**段的八股文部分,一定要寫的,假如你完全不懂怎麼設計怎麼寫**,你在設計步驟那個地方,寫上一些瞎編亂造的東西也好,或者你連瞎編亂造也不會,那你就隨便亂寫指令,神馬mov ax,英文本母啊之類的都好,多少得到點分數吧

三、巨集定義

巨集名(可以用任意英文本母組合,參考p128-130)

例:巨集名 macro

巨集內容endm

巨集內容只能聽天由命了

四、子程式設計

子程式名(同巨集名)

例: 子程式名 proc

子程式內容

ret內容還是只能聽天由命了

dos系統功能呼叫(int 21h)

mov ah,數字x

int 21h (表示執行第x號功能)

1號功能:輸入乙個字元放在al中

2號功能:輸出乙個字元,字元先放進dl中

9號功能:輸出一串字元,一串字元一定是存在記憶體中的,記憶體位址放在dx中,例:table db 1,2,3,4,5,6,7,8,9(假設資料段有這個內容) mov dx,offset table

mov ah,09

微機原理總結複習

微機原理 2.2.1 8088cpu概述 與8080 85相比,8088效能的提高主要依賴於 1 建立4位元組的指令預取佇列 2 設立位址段暫存器 3 在結構上和指令設定方面支援多為處理器系統。2.2.2 8088cpu引線及其功能 最小模式下的引線 a8 a15 它們是三態輸出引線,負責送出位址。...

微機原理複習總結

重要概念 1 微處理器 微處理器 微處理器是乙個 處理器cpu,由算術邏輯部件alu 累加器和暫存器組 指令指標暫存器ip 程式計數器 段暫存器 時序和控制邏輯部件 內部匯流排等構成。2 微型計算機 微型計算機由微處理器 儲存器 輸入 輸出介面電路和系統匯流排組成。微處理器是計算機系統的核心,也稱c...

微機原理複習總結

第一章計算機基礎知識 本章的主要內容為不同進製計數制計數方法 不同進製數之間相互轉換的方法 數和字元在計算機中的表示方法 簡單的算術運算以及計算機系統的組成。下邊將本章的知識點作了歸類,圖1為本章的知識要點圖,圖1.2為計算機系統組成的示意圖。第二章 8086微處理器 本章要從應用角度上理解8086...