青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

大龍的博客

常用鏈接

統(tǒng)計

最新評論

微機原理與匯編語言基礎 --- 轉(zhuǎn)

C語言能實現(xiàn)匯編語言的大部分功能,能進行位運算,可以直接對硬件進行操作,例如可以允許直接訪問內(nèi)存或端口的物理地址。因此,學習C語言的人掌握一定的匯編語言基礎是必要的。

一、80x86系列CPU的編程結(jié)構(gòu)

寄存器在匯編語言中的地位類似于變量。寄存器變量的訪問時間遠小于內(nèi)存變量的訪問時間。在匯編語言中大量的使用寄存器而不是直接訪問內(nèi)存。

1 寄存器堆

8086CPU是Intel系列的16位微處理器,有16根數(shù)據(jù)線和20根地址線,直接尋址空間為2^20即1MB。8088CPU的對外數(shù)據(jù)總線為8位,稱為準16位微處理器。

8086/8088的內(nèi)部寄存器(register)共有14個,如下:

(1)通用寄存器:8個,包括數(shù)據(jù)寄存器、地址指針寄存器、變址寄存器。

數(shù)據(jù)寄存器4個:AX BX CX DX,它們又可作為8個8位的寄存器使用,即AH BH CH DH AL BL CL DL

AX稱為累加器,I/O指令均使用該寄存器,訪問外部硬件和接口。

BX稱為基址寄存器,在訪問內(nèi)存時用于存放基地址。

CX稱為計數(shù)寄存器,用于循環(huán)、字符串的循環(huán)控制。

DX稱為數(shù)據(jù)寄存器,在寄存器間接尋址的i/o指令中存放i/o地址,在作雙字運算時[DX][AX]構(gòu)成一個雙字。

地址指針寄存器2個:SP BP

SP稱為堆棧指針寄存器,BP稱為基址指針寄存器,在作數(shù)組和字符串運算時,用于存放內(nèi)存的偏移地址。

變址寄存器2個:SI DI

SI稱為源變址寄存器,DI稱為目的變址寄存器,用于數(shù)據(jù)塊操作的內(nèi)存尋址。

(2)段寄存器4個:CS DS ES SS

CS代碼段寄存器,DS數(shù)據(jù)段寄存器,ES附加段寄存器,SS堆棧段寄存器

用于存放段地址(段基址)

(3)指令指針I(yè)P:始終指向?qū)⒁獔?zhí)行的指令。用戶不能直接訪問和編程。

(4)標志寄存器FLAGS:16位寄存器,8086/8088僅使用了九個標志位。

2 標志寄存器

CF:進位標志位

PF:奇偶標志位

AF:輔助進位位

ZF:零標志位

SF:符號標志位

OF:溢出標志位

TF:跟蹤標志位:單步標志

IF:中斷標志位

DF:方向標志位

其中前六個為狀態(tài)標志位,也叫條件碼,用作條件轉(zhuǎn)移指令中的判斷條件。

后三個為控制標志位,對相關的操作起控制作用。

14個寄存器的內(nèi)容,將要執(zhí)行的指令,將要處理的數(shù)據(jù),被稱作CPU的“現(xiàn)場”,用debug的r命令可以清楚地看到“現(xiàn)場”

二、內(nèi)存的分段組織

計算機的基本存儲單位是字節(jié),由8個二進制位組成,8個位捆綁使用。可用一個兩位16進制數(shù)表示其內(nèi)容。16位CPU一次可以處理兩個字節(jié)。

為了正確訪問內(nèi)存,每一個存儲器單位即字節(jié)必須給出一個地址。地址編號從0開始,依次加1,被稱為線性編址

8086的地址線有20根,(詳述)能夠直接訪問的地址空間為2^20即1MB。即內(nèi)存的地址編號可以從0編到1M。用16進制數(shù)表示內(nèi)存的物理地址,其地址范圍為00000H~FFFFFH,為5位16進制數(shù)。每一個內(nèi)存單元都有一個確定的20位物理地址。

但是,16位CPU的字長為16位,一次只能訪問2^16=64k內(nèi)存,如何訪問1M的內(nèi)存空間呢,在8086CPU中采用了地址分段的辦法。即每一個存儲單元的物理地址都有段地址和偏移地址兩部分構(gòu)成。

規(guī)定:(詳述)只有地址為16的整數(shù)倍的物理地址可以作為段地址。這樣,1MB的內(nèi)存空間被分為了1M/16=64K個段。段地址的特征為xxxx0H。

我們知道了段地址和相對于段地址的段內(nèi)偏移量(偏移地址)后就可以確定一個內(nèi)存單元的物理地址了。所謂的偏移地址等于內(nèi)存單元的物理地址減去段地址,不得超過一段(即64k)。

段地址可以不用20位表示,而用16位表示,即xxxx0H=xxxxH*10H表示為xxxxH,用4位16進制數(shù)表示。

物理地址的計算公式為:

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

或者,物理地址=段地址*10H+偏移地址

乘以16相當于左移4位。即段地址左移4位和偏移地址相加。按十六進制數(shù)描述為,段地址左移一位和偏移地址相加。通常表示為

物理地址=段地址:偏移地址

例如:02002=0200:0002

可以看出,實際上偏移地址也是16位的,每一段的最大空間為2^16=64K,這樣,不同的段之間有重疊。也即意味著物理地址可以有不同的表示方法。或者說不同的表示方法可以表示同一個物理地址

例如:02020=0200:0020=0100:1020=0000:2020=0202:0000=......

舉例說明:摩天大樓。

注意:實際上每個段并不一定占用64k的最大空間。

總結(jié):如此麻煩的做法帶來的好處是擴大了內(nèi)存的表示空間,更重要的是,原本很麻煩的程序的再定位工作變得異常簡單,實際上一般的程序員以及高級語言并不關心段地址,段地址的分配工作交給操作系統(tǒng)了。

在高級語言中,變量有兩個含義:首先表示的是內(nèi)存的偏移地址,對于占用兩個以上存儲單元的變量,其地址是低地址,一般為偶數(shù)。其次,表示存儲的內(nèi)容,對于字數(shù)據(jù)(兩個字節(jié)),其高位存入高地址,低位存入低地址,如

xxxx:0200 2b  ...var

xxxx:0201 01

xxxx:0202 00

xxxx:0203 01

對于整型變量 var,地址為0200,內(nèi)容為01H*256+2BH=01H*100H+2BH=256+32+11

若為雙字長整型變量var,則地址一般為4的整數(shù)倍。var的地址為0200,其內(nèi)容為01H*1000000H+01H*100H+2BH=4096+256+32+11。

640K~1M 的內(nèi)存稱為 UMB (upper memory block)

它分為a000H,b000H,c000H,d000H,e000H,f000H六個段,f000H段為ROM。存放的是ROM-BIOS(加電自檢程序、固化子程序庫、硬件參數(shù)等)。

加電時,盡管主機板廠家可以不同,計算機總是從 ffff:0000開始運行,其中存放的總是jmp指令,指向加電自檢程序(post)真正的起始處。

ffff段除了前16個內(nèi)存單元(物理地址<1M)外,還可以訪問地址超過1M的部分內(nèi)存,這部分內(nèi)存稱為HMA。

三、尋址方式(略)

取得操作數(shù)地址的方式稱為尋址方式。

(1)數(shù)據(jù)尋址

立即尋址:mov al,5

寄存器尋址:mov ax,bx

直接尋址:mov ax,[2000H]

寄存器間接尋址:mov ax,[bx]

寄存器相對尋址:mov ax,offset[si]

基址變址尋址:mov ax,[bx][di]

相對基址變址尋址:mov offset[bx][si]

(2)指令尋址

段內(nèi)直接尋址:jmp near ptr label1  //near ptr|short

段內(nèi)間接尋址:jmp word ptr [offset][bp]

段間直接尋址:jmp far ptr label2

段間間接尋址:jmp dword ptr [offset][bx]

(3)端口尋址:

四、指令系統(tǒng)(略)

(一) 指令的執(zhí)行時間

若時鐘周期為T,則指令的基本執(zhí)行時間如下(最佳尋址方式):

傳送mov,     2T

加法add,     3T

整數(shù)乘法imul,      128T~154T

整數(shù)除法idiv,      165T~184T

移位(即乘以2或除以2),      2T

無條件轉(zhuǎn)移,      15T

條件轉(zhuǎn)移,      不轉(zhuǎn)移 4T   轉(zhuǎn)移 16T

采用不同方式尋址的加法指令執(zhí)行時間如下:

寄存器到寄存器3T

存儲器到寄存器9T+EA

寄存器到存儲器16T+EA(訪問兩次存儲器)

立即數(shù)到寄存器4T

立即數(shù)到存儲器17T+EA(訪問兩次存儲器)

不同尋址方式計算有效地址EA所需時間:

直接尋址 6T

寄存器間接尋址 5T

寄存器相對尋址 9T

基址尋址 7T~8T

相對基址變址尋址 11T~12T

總結(jié):從指令執(zhí)行時間上看,應盡量采用加法,避免乘法,盡量用移位不用乘法

盡量使用寄存器,少用存儲器。盡量用簡單的尋址方式,少用復雜的尋址方式。

(二) 指令系統(tǒng)

1.1 mov push pop xchg

1.2 in out xlat

1.3 lea lds les

1.4 lahf sahf pushf popf

注意:mov 等傳送指令相當于賦值語句。in/out為基本的端口輸入和輸出

2.1 add adc inc

2.2 sub sbb dec neg cmp

2.3 mul imul

2.4 div idiv cbw cwd

2.5a daa das

2.5b aaa aas aam aad

3.1 and or not xor test

3.2 shl sal shr sal rol ror rcl rcr

4 movs cmps scas lods stos... ...rep repe|repz repne|repnz

5.1 jmp

5.2 jz|je jnz|jne js jns jo jno jp|jpe jnp|jpo jb|jnae|jc jnb|jae|jnc

... ...jb|jnae|jc jnb|jae|jnc jbe|jna jnbe|ja jl|jnge jnl|jge jle|jng jnle|jg

... ...jcxz

5.3 loop loopz|loope loopnz|loopne

5.4 call ret

5.5 int into iret

6.1 clc cmc stc cld std cli sti

6.2 nop hlt wait esc lock

五、匯編程序的格式

(1)匯編語言的語句種類與格式

1 指令語句

標號:指令助記符 操作數(shù)1,操作數(shù)2;注釋

2 偽指令語句

名字 偽指令 參數(shù)1,參數(shù)2,...;注釋

符號定義語句:equ =

數(shù)據(jù)塊定義語句:db dw dd dq dt dup(?)

標號及其屬性:

        分析符type length size offset seg

        標號類型label byte word dword near far

        合成符ptr this

3 宏指令

4 段定義

segment ends

定位類型:para bye word page

組合類型:public common stack memory at 

類別:code data stack 

5 過程定義

proc endp

6 其他偽定義

assume org end

name title

even

radix 

short high low

+ - * / mod

and or xor not

eq ne lt gt le ge

(2) com 文件格式(略)

code segment public 'code'

     org   100H

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

main proc near

     jmp start

message db 'How are u?$'

start:mov ah,9

      mov dx,offse message

      int 21H

      int 20H

main  endp

code  ends

      end main

(3) exe 文件格式(略)

stack segment stack 'stack'

      db 256dup(?)

stack ends

data segment public 'data'

     ......

data ends

code segment public 'code'

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

main proc far

     push ds         ;保護psp前綴

     xor  ax,ax

     push ax         ;保護偏移0地址

     mov ax,data

     mov ds,ax

     mov es,ax

     ......

     ret

main endp

code ends

     end main

六、BIOS中斷和DOS功能調(diào)用(略)

相當于高級語言中的庫函數(shù)或者系統(tǒng)子程序。

七、debug和匯編語言上機(略)

posted on 2009-05-30 10:24 大龍 閱讀(533) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            榴莲视频成人在线观看| 国产一级一区二区| 99成人精品| 女人色偷偷aa久久天堂| 亚洲一区二区四区| 一本色道久久综合一区| 1204国产成人精品视频| 国产欧美日韩精品a在线观看| 欧美一区午夜精品| 午夜激情综合网| 午夜一区二区三区在线观看| 日韩一级精品| 一区二区三区导航| 国产精品99久久久久久人| 99视频一区| 亚洲午夜激情| 亚洲免费在线观看视频| 亚洲在线观看视频| 欧美一区中文字幕| 久久久久一区二区三区四区| 日韩香蕉视频| 欧美激情视频网站| 美女主播一区| 欧美韩日精品| 欧美日韩一区视频| 久久久久国产一区二区三区| 久久精品国产一区二区三区免费看| 欧美在线一区二区| 午夜老司机精品| 久久久www| 亚洲午夜精品视频| 欧美在线播放视频| 欧美xart系列高清| 夜夜狂射影院欧美极品| 午夜在线精品偷拍| 免费不卡在线视频| 国产精品久久999| 狠狠综合久久av一区二区小说| 亚洲成人在线观看视频| 亚洲视频在线二区| 久久免费午夜影院| 亚洲精品国产精品国自产观看浪潮| 99国产精品久久| 久久精品人人做人人爽| 午夜在线电影亚洲一区| 久久综合久久综合这里只有精品| 久久蜜桃香蕉精品一区二区三区| 久久亚洲二区| 蜜月aⅴ免费一区二区三区 | 欧美日韩在线直播| 国产欧美精品va在线观看| 在线成人激情黄色| 亚洲免费视频观看| 欧美 日韩 国产一区二区在线视频| 亚洲精品国产精品国自产在线| 亚洲欧美在线免费观看| 欧美国产日产韩国视频| 国产一区二区三区在线观看视频| 日韩午夜在线| 噜噜噜91成人网| 亚洲影视在线播放| 欧美日韩成人一区二区三区| 国产精品扒开腿做爽爽爽视频 | 久久久久久亚洲精品杨幂换脸| 亚洲精品三级| 久久一区二区三区四区五区| 国产精品日韩欧美大师| 99精品热6080yy久久| 蜜臀久久99精品久久久画质超高清| 亚洲手机成人高清视频| 欧美一区二区成人| 欧美香蕉视频| 一本色道久久综合| 亚洲欧美成人网| 99国产精品久久久久久久成人热 | 久久国产精品网站| 亚洲午夜在线视频| 久久久久久免费| 国产亚洲一区在线播放| 亚洲欧美不卡| 农村妇女精品| 久久亚洲综合网| 国产综合香蕉五月婷在线| 午夜一区在线| 亚洲欧洲99久久| 欧美成黄导航| 亚洲大胆视频| 日韩一级精品视频在线观看| 久久爱www.| 欧美一区二区三区免费视频| 欧美区在线播放| 亚洲福利视频一区| 久久久www免费人成黑人精品| 亚洲一本视频| 国产农村妇女精品| 亚洲欧美日本视频在线观看| 亚洲成人在线网| 久久久久久成人| 国产亚洲一区在线播放| 亚洲综合久久久久| 亚洲国产精品一区二区尤物区 | 9人人澡人人爽人人精品| 欧美三级在线| 久久gogo国模裸体人体| 久久av二区| 亚洲片区在线| 这里只有精品视频| 国产欧美一区二区三区在线看蜜臀| 午夜久久久久久| 久久精品卡一| 亚洲人成亚洲人成在线观看图片| 久久久www成人免费无遮挡大片| 日韩视频一区二区| 欧美激情一区三区| 亚洲永久免费观看| 日韩视频在线你懂得| 欧美一区二区三区婷婷月色 | 国产精品伦一区| 久久中文字幕导航| 久久精品网址| 亚洲国产你懂的| 亚洲欧美在线磁力| 亚洲欧洲精品一区| 亚洲欧美日韩一区二区三区在线观看 | 亚洲精品日韩在线观看| 日韩视频精品在线观看| 国产欧美日韩免费| 亚洲精品国产精品久久清纯直播| 国产精品自拍网站| 欧美国产日韩二区| 国产精品一区二区三区久久久| 欧美成人免费网站| 国产精品毛片a∨一区二区三区|国| 久久成人精品无人区| 欧美一级视频| 亚洲专区一区二区三区| 亚洲一区一卡| 在线欧美电影| 久久精品日韩一区二区三区| 欧美激情四色| 亚洲欧洲免费视频| 欧美一区视频在线| 亚洲自拍三区| 欧美日韩精品一区视频| 亚洲欧美日韩一区在线观看| 欧美成人国产| 欧美jizz19性欧美| 欧美午夜一区二区三区免费大片| 久久精品国产精品| 欧美激情女人20p| 午夜伦欧美伦电影理论片| 一本色道久久综合狠狠躁篇怎么玩 | av成人手机在线| 亚洲高清在线观看| 欧美在线亚洲一区| 久久国产综合精品| 国产区日韩欧美| 午夜精品在线| 久久久久久欧美| 国产一区导航| 久久精品国产99国产精品| 这里只有精品丝袜| 欧美一区视频| 久久久久综合网| 国产一区二区三区免费观看 | 亚洲日本一区二区三区| 欧美超级免费视 在线| 久久久久成人精品| 在线播放中文一区| 久久夜色精品国产欧美乱| 亚洲欧美日本国产有色| 欧美国产第二页| 久久婷婷久久| 国产欧美一区二区三区另类精品| 国产精品www994| 欧美一乱一性一交一视频| 欧美日韩国产在线播放| 亚洲理论电影网| 亚洲一区精品视频| 国产精品美女久久久久久免费| 一本色道久久综合亚洲精品按摩| 亚洲无线视频| 国产欧美日韩综合精品二区| 久久国产精品亚洲va麻豆| 欧美大片免费久久精品三p| 亚洲美女在线视频| 国产精品国内视频| 久久九九精品| 久久亚洲一区| 一卡二卡3卡四卡高清精品视频| 国产精品嫩草影院av蜜臀| 一区二区三区精密机械公司 | 中国女人久久久| 久久久久久久高潮| 亚洲精品国产精品乱码不99| 国产精品黄视频| 久久中文久久字幕| 亚洲午夜精品| 欧美激情欧美狂野欧美精品| 亚洲免费在线视频一区 二区|