(微機(jī)原理與接口技術(shù))chapter03尋址方式課件_第1頁
(微機(jī)原理與接口技術(shù))chapter03尋址方式課件_第2頁
(微機(jī)原理與接口技術(shù))chapter03尋址方式課件_第3頁
(微機(jī)原理與接口技術(shù))chapter03尋址方式課件_第4頁
(微機(jī)原理與接口技術(shù))chapter03尋址方式課件_第5頁
已閱讀5頁,還剩157頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1第3章尋址方式8086~80286微處理器的數(shù)據(jù)尋址方式包括寄存器尋址,立即尋址,直接尋址,寄存器間接尋址,基址加變址尋址,寄存器相對(duì)尋址和相對(duì)基址加變址尋址。80386和更高檔型號(hào)的微處理器還包含比例變址方式的存儲(chǔ)器數(shù)據(jù)尋址。程序存儲(chǔ)器尋址方式包括程序相對(duì)尋址,直接尋址和間接尋址。堆棧的操作1第3章尋址方式8086~80286微處理器的數(shù)據(jù)尋址方2在8086~80286中,MOV指令在寄存器之間或寄存器與存儲(chǔ)器之間傳送字節(jié)數(shù)據(jù)或者字?jǐn)?shù)據(jù)。在80386和更高檔型號(hào)的微處理器中,MOV指令在寄存器之間或寄存器與存儲(chǔ)器之間傳送字節(jié)、字或雙字。2在8086~80286中,MOV指令在寄存器之間或寄存器3一條指令的體系結(jié)構(gòu)操作碼操作數(shù)3一條指令的體系結(jié)構(gòu)操作碼4寄存器尋址4寄存器尋址5要點(diǎn)需使用相同長(zhǎng)度的寄存器就寄存器類MOV指令而言,段寄存器到段寄存器是不允許的代碼段寄存器不能用MOV指令改變MOV指令都不影響標(biāo)志位5要點(diǎn)6立即尋址6立即尋址7要點(diǎn)字母H表示十六進(jìn)制數(shù)如果十六進(jìn)制數(shù)以字母開頭,則要求在它前面加一個(gè)0。例如,用0F2H表示十六進(jìn)制數(shù)F2二進(jìn)制數(shù)后面跟著字母B時(shí),表示該數(shù)據(jù)是二進(jìn)制數(shù)據(jù)十進(jìn)制數(shù)不要求特殊的代碼和符號(hào)一個(gè)ASCII碼字符或幾個(gè)字符可表示為立即數(shù)。例如,`A`表示41H,`AA`表示4141H7要點(diǎn)889程序中的每條語句由4個(gè)部分組成:標(biāo)號(hào),操作碼,操作數(shù)和注釋當(dāng)程序被匯編后,就會(huì)生成清單擴(kuò)展名.LST文件(ML編譯時(shí),帶/Fl參數(shù)。例如:ML/FlMY1.ASM)和指令的機(jī)器碼或者數(shù)據(jù)一樣,指令或數(shù)據(jù)的偏移地址也由匯編程序生成9程序中的每條語句由4個(gè)部分組成:標(biāo)號(hào),操作碼,操作數(shù)和注釋10直接尋址10直接尋址11MOV指令(3字節(jié)長(zhǎng))所用的直接尋址在數(shù)據(jù)段存儲(chǔ)單元與AL,AX和EAX寄存器之間傳送數(shù)據(jù)除了指令是4字節(jié)或更多外,位移量尋址幾乎等同于直接尋址偏移地址加數(shù)據(jù)段地址形成存儲(chǔ)數(shù)據(jù)單元11MOV指令(3字節(jié)長(zhǎng))所用的直接尋址在數(shù)據(jù)段存儲(chǔ)單元與121213數(shù)據(jù)段以.DATA語句開始模型的尺寸由TINY調(diào)整SMALL,因而包含了一個(gè)數(shù)據(jù)段SMALL模型允許一個(gè)數(shù)據(jù)段和一個(gè)代碼段SMALL模型程序被匯編成執(zhí)行(.EXE)DB和DW偽指令在數(shù)據(jù)段中分配存儲(chǔ)單元STARTUP語句不僅指示代碼段的開始,也將數(shù)據(jù)段的段地址裝入數(shù)據(jù)段寄存器13數(shù)據(jù)段以.DATA語句開始14寄存器間接尋址14寄存器間接尋址15寄存器BP,BX,DI和SI以[]為標(biāo)志保存偏移地址80386和更高檔型號(hào)微處理器的寄存器間接尋址允許使用ESP以外的任何擴(kuò)展寄存器

BX,DI和SI尋址存儲(chǔ)器時(shí),默認(rèn)使用數(shù)據(jù)段;如果用BP尋址存儲(chǔ)器,默認(rèn)使用堆棧段對(duì)于80386和更高檔型號(hào)的微處理器,EBP默認(rèn)尋址堆棧段中的存儲(chǔ)器,而EAX,EBX,ECX,EDI和ESI默認(rèn)尋址數(shù)據(jù)段中的存儲(chǔ)器15寄存器BP,BX,DI和SI以[]為標(biāo)志16匯編偽指令BYTEPTR,WORDPTR,DWORDPTR指明由存儲(chǔ)器指針(PTR)尋址的存儲(chǔ)器數(shù)據(jù)的長(zhǎng)度偽指令只用于帶有立即數(shù)的通過指針或變址寄存器尋址的存儲(chǔ)單元16匯編偽指令17例如任務(wù):要建立一個(gè)從0000:046C存儲(chǔ)單元開始,包含50個(gè)采樣值的信息表?xiàng)l件:單元0000:046C含有一個(gè)由PC實(shí)時(shí)時(shí)鐘維持的計(jì)數(shù)器步驟1:將表的起始地址裝入BX中,用寄存器間接尋址方式順序存儲(chǔ)這50個(gè)采樣值步驟2:初始化計(jì)數(shù)器,再將50裝入CX寄存器,采用DB指令去分配數(shù)據(jù)段中的存儲(chǔ)單元注意MOVBX,DATAS與MOVBX,OFFSETDATAS的區(qū)別17例如任務(wù):要建立一個(gè)從0000:046C存儲(chǔ)單元開始,1818191920要點(diǎn)程序用MOVAX,ES:[046CH]指令從附加段存儲(chǔ)單元46CH讀出數(shù)據(jù)利用寄存器BX中的偏移地址,使用間接尋址方式將數(shù)據(jù)存入存儲(chǔ)單元中BX遞增指向表的下一個(gè)單元LOOP指令使計(jì)數(shù)器CX遞減在地址0000:046C—0000:046F處,存放定時(shí)器的計(jì)數(shù)值。這個(gè)值在午夜0時(shí)為0,然后每秒增加18.2次。20要點(diǎn)21基址加變址尋址21基址加變址尋址22在8086~80386中,基址加變址尋址用一個(gè)基址寄存器(BP或BX)保存存儲(chǔ)器數(shù)組的起始位置地址和一個(gè)變址寄存器(DI或SI)保存數(shù)組元素的相對(duì)位置BP

寄存器和堆棧段寄存器兩者生成有效地址在80386和更高檔型號(hào)的微處理器中,基址加變址尋址方式允許除了ESP以外的任意兩個(gè)32位擴(kuò)展寄存器組合使用如果用EBP寄存器,數(shù)據(jù)在堆棧段中而不在數(shù)據(jù)段中22在8086~80386中,基址加變址尋址用一個(gè)基址寄存232324用途:尋址存儲(chǔ)器數(shù)組中的元素將數(shù)組的起始地址裝入寄存器BX(基址)把要存取的元素在數(shù)組中的序號(hào)數(shù)存入寄存器DI(變址)24用途:尋址存儲(chǔ)器數(shù)組中的元素25例如任務(wù):將數(shù)組中10H號(hào)元素裝入數(shù)組單元20H注意:用裝入DI寄存器中的數(shù)組元素序號(hào)尋址數(shù)組元素25例如任務(wù):將數(shù)組中10H號(hào)元素裝入數(shù)組單元20H262627寄存器相對(duì)尋址27寄存器相對(duì)尋址28用位移量加基址或變址寄存器(BP,BX,DI或SI)的內(nèi)容尋址存儲(chǔ)器段中的數(shù)據(jù)BX,DI或SI尋址數(shù)據(jù)段,BP尋址堆棧段在80386和更高檔型號(hào)的微處理器中,位移量可以是32位的數(shù)字,寄存器可以是除了ESP以外的任何32位寄存器位移量可以是在[]符號(hào)內(nèi)加到寄存器上的一個(gè)數(shù),還可以是加在[]符號(hào)前面的偏移地址,或者兩種情況一起出現(xiàn)。28用位移量加基址或變址寄存器(BP,BX,DI或S29應(yīng)用:寄存器相對(duì)尋址方式尋址數(shù)組數(shù)據(jù)例如:把數(shù)組10H單元的內(nèi)容傳送到數(shù)組20H單元,以完成和基址加變址一樣的任務(wù)不用BX寄存器尋址ARRAY存儲(chǔ)區(qū)域,而是將ARRAY作為位移量變址寄存器DI用于存取元素29應(yīng)用:寄存器相對(duì)尋址方式尋址數(shù)組數(shù)據(jù)3030313132相對(duì)基址加變址尋址32相對(duì)基址加變址尋址33類似于基址加變址尋址方式,但是它用基址寄存器和變址寄存器加位移量形成存儲(chǔ)器地址在80386和更高檔型號(hào)的微處理器中,由兩個(gè)32位寄存器和32的位移量之和產(chǎn)生有效地址應(yīng)用:因?yàn)樗悬c(diǎn)復(fù)雜,這種尋址方式通常用來尋址存儲(chǔ)器的二維數(shù)組中的數(shù)據(jù)用相對(duì)基址加變址尋址方式訪問數(shù)組:假定存儲(chǔ)器中的文件包含多個(gè)記錄,每個(gè)記錄包含多個(gè)元素33類似于基址加變址尋址方式,但是它用基址寄存器和變址寄存器34例如任務(wù):將記錄A中的元素0復(fù)制C中的元素2注意:位移量尋址文件,基址寄存器尋址記錄,而變址寄存器尋址記錄中的元素此例中的FILE包含4個(gè)記錄,每個(gè)記錄包含10個(gè)元素34例如任務(wù):將記錄A中的元素0復(fù)制C中的元素235353636373738比例變址尋址38比例變址尋址39這種尋址方式是80386~Pentium微處理器特有的使用32位寄存器(基址寄存器和變址寄存器)訪問存儲(chǔ)器第2個(gè)寄存器(變址寄存器)與比例因子相乘,比例因子可以是1X,2X,4X是或8X比例因子2X用來尋址字存儲(chǔ)器數(shù)組,比例因子4X用來尋址雙字存儲(chǔ)器數(shù)組39這種尋址方式是80386~Pentium微處理器特有的40例如任務(wù):訪問LIST字?jǐn)?shù)組數(shù)據(jù),這個(gè)程序?qū)卧?中的內(nèi)容2存儲(chǔ)到單元4和單元7注意:.386偽指令選擇80386微處理器,這個(gè)偽指令必須放在.MODEL語句后面40例如任務(wù):訪問LIST字?jǐn)?shù)組數(shù)據(jù),這個(gè)程序?qū)卧?中414142數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)用來規(guī)定信息怎樣存儲(chǔ)到存儲(chǔ)器數(shù)組中STRUC定義結(jié)構(gòu)的開始,ENDS語句定義結(jié)構(gòu)的結(jié)束例3.1142數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)用來規(guī)定信息怎樣存儲(chǔ)到存儲(chǔ)器數(shù)組中43程序存儲(chǔ)器尋址直接程序存儲(chǔ)器尋址相對(duì)程序存儲(chǔ)器尋址間接程序存儲(chǔ)器尋址43程序存儲(chǔ)器尋址直接程序存儲(chǔ)器尋址44直接程序存儲(chǔ)器尋址44直接程序存儲(chǔ)器尋址45在實(shí)模式下,遠(yuǎn)轉(zhuǎn)移通過改變CS和IP兩者的內(nèi)容,訪問存儲(chǔ)器第一個(gè)1MB內(nèi)的任何單元在保護(hù)模式操作中,遠(yuǎn)轉(zhuǎn)移訪問描述符表里的新的代碼段描述符,允許轉(zhuǎn)移到存儲(chǔ)器中的任何存儲(chǔ)單元45在實(shí)模式下,遠(yuǎn)轉(zhuǎn)移通過改變CS和IP兩者的內(nèi)容,訪問存46相對(duì)程序存儲(chǔ)器尋址JMP指令的格式是1字節(jié)操作碼加1個(gè)或2個(gè)字節(jié)的位移量,位移量將與指令指針相加相對(duì)JMP和CALL指令8位或16位帶符號(hào)的位移量,允許向前或者向后訪問存儲(chǔ)器46相對(duì)程序存儲(chǔ)器尋址JMP指令的格式是1字節(jié)操作碼加1個(gè)或47間接程序存儲(chǔ)器尋址對(duì)于JMP和CALL指令,微處理器提供幾種間接程序存儲(chǔ)器尋址形式,可以使用任何16位寄存器(AX,BX,CX,DX,SP,BP,DI或SI),任何相對(duì)寄存器([BP],[BX]或[SI]),或任何帶有位移量的相對(duì)寄存器47間接程序存儲(chǔ)器尋址對(duì)于JMP和CALL指令,微處理器提供48堆棧存儲(chǔ)器尋址堆棧存儲(chǔ)器是后進(jìn)先出存儲(chǔ)區(qū)PUSH和POP指令CALL

指令用堆棧保存程序返回地址,而RET

指令從堆棧取出返回地址堆棧指針(SP或ESP)和堆棧段寄存器(SS)48堆棧存儲(chǔ)器尋址堆棧存儲(chǔ)器是后進(jìn)先出存儲(chǔ)區(qū)49當(dāng)字?jǐn)?shù)據(jù)被壓入堆棧時(shí),高8位放入由SP-1尋址的單元,低8位放入由SP-2尋址的單元,然后SP中的值減2當(dāng)數(shù)據(jù)從堆棧彈出時(shí),低8位從SP尋址的單元移出。高8位從SP+1尋址的單元移出,然后SP寄存器加249當(dāng)字?jǐn)?shù)據(jù)被壓入堆棧時(shí),高8位放入由SP-1尋址的單元,低508086-80286微處理器是16位80386和更高檔型號(hào)的微處理器中,任何32位擴(kuò)展寄存器都可以壓入堆棧PUSHA和POPA指令PUSHAD和POPAD指令PUSHF指令PUSHFD指令508086-80286微處理器是16位51

小結(jié)數(shù)據(jù)尋址方式包含:______、______、______、______、______、______和______。在80386~Pentisum4微處理器中,增加了稱為比例變址尋址的一種新的尋址方式。程序存儲(chǔ)器尋址方式包括:______、______和______。51小結(jié)數(shù)據(jù)尋址方式包含:_52表3.12列出了用于8086~80286的所有實(shí)模式的數(shù)據(jù)尋址方式。注意,80386和更高檔型號(hào)的微處理器除了使用這些模式外,又增加了本章定義的其他許多方式。在保護(hù)模式中,段寄存器的功能是尋址包含存儲(chǔ)器段基地址的____。80386~Pentium4微處理器又增加了一些尋址方式,允許擴(kuò)展寄存器EAX,EBX,ECX,EDX,EBP,EDI和ESI尋址寄存器。這些尋址方式以表的形式列出來要占很多篇幅,一般而言,這些擴(kuò)展寄存器的作用域表3.12中列出的那些寄存器是相同的。例如MOVAL,TABLE[EBX+2*ECX+10H]是用于80386~Pentium4微處理器的有效尋址方式。52表3.12列出了用于8086~80286的所有實(shí)模式的數(shù)53MOV指令將______

內(nèi)容復(fù)制到______操作數(shù)中,任何此類指令都不改變?cè)床僮鲾?shù)。寄存器尋址可以使用任何一個(gè)8位寄存器(AH,AL,BH,BL,CH,CL,DH或DL)或任何一個(gè)16位寄存器(AX,BX,CX,DX,SP,BP,SI或DI)。在段寄存器與16位寄存器/存儲(chǔ)單元之間傳送數(shù)據(jù)時(shí),或者在PUSH及POP指令中,也可以用段寄存器(CS,DS,ES或SS)尋址。80386~Pentium4微處理器中,擴(kuò)展寄存器也可以用于寄存器尋址,分別是:EAX,EBX,ECX,EDX,ESP,EBP,EDI和ESI。80386和更高檔型號(hào)的微處理器還可以用FS和GS段寄存器。53MOV指令將______內(nèi)容復(fù)制到______操作54MOV立即數(shù)據(jù)指令將直接跟在操作碼后面的字節(jié)或字送到寄存器或存儲(chǔ)單元。立即尋址方式操作程序中的常數(shù)。在80386和更高檔型號(hào)的微處理器中,可以將雙字立即數(shù)裝入32位寄存器或存儲(chǔ)單元。匯編語言使用的.MODEL語句定義文件的開始和文件使用的存儲(chǔ)模型。如果是TINY模型,程序只有一個(gè)段(代碼段)并且匯編為命令(.COM)程序、如果使用SMALL模型,程序使用代碼段和數(shù)據(jù)段并且匯編為執(zhí)行(.EXE)程序。其他模型的規(guī)模和屬性列于附錄A中。54MOV立即數(shù)據(jù)指令將直接跟在操作碼后面的字節(jié)或字送到寄存55直接尋址以兩種形式出現(xiàn)在微處理器中:(1)直接尋址;(2)位移量尋址。兩種尋址方式是等同的,只是直接尋址用于在EAX,AX或AL與存儲(chǔ)器之間傳送數(shù)據(jù),而位移量尋址用于在任何寄存器與存儲(chǔ)器之間傳送數(shù)據(jù)。直接尋址需要3個(gè)字節(jié)存儲(chǔ)空間,而位移量尋址需要4個(gè)字節(jié)。在80386和更高檔型號(hào)的微處理器中,由于寄存器或操作數(shù)的超越前綴形式,這些指令可能還需要增加字節(jié)。55直接尋址以兩種形式出現(xiàn)在微處理器中:(1)直接尋址;(256寄存器間接尋址允許通過基地址(BP和BX)或變址寄存器(DI和SI)指向的存儲(chǔ)單元中的數(shù)據(jù)地址來訪問數(shù)據(jù)。在80386和更高檔型號(hào)的微處理器中可以用擴(kuò)展寄存器EAX,EBX,ECX,EDX,EBP,EDI和ESI尋址存儲(chǔ)器數(shù)據(jù)?;芳幼冎穼ぶ吠ǔJ菍ぶ窋?shù)組中的數(shù)據(jù)。這種方式的存儲(chǔ)器地址由基址寄存器、變址寄存器和10H倍的段寄存器的內(nèi)容相加構(gòu)成。在80386和更高檔型號(hào)微處理器中,基址寄存器和變址寄存器可以是除了EIP和ESP以外的任何32位寄存器。56寄存器間接尋址允許通過基地址(BP和BX)或變址寄存器(5712.寄存器相對(duì)尋址用基址寄存器或者變址寄存器加位移量去訪問存儲(chǔ)器中的數(shù)據(jù)。13.相對(duì)基址加變址尋址對(duì)于尋址二維存儲(chǔ)器數(shù)組很有用。地址由基址寄存器、變址寄存器、相對(duì)偏移量和10H倍的段寄存器的內(nèi)容相加構(gòu)成。5712.寄存器相對(duì)尋址用基址寄存器或者變址寄存器加位移量5814.比例變址只適用于80386~Pentium4。兩個(gè)寄存器中的第2個(gè)寄存器(變址寄存器)乘以比例因子2X,4X或8X,以便尋址存儲(chǔ)器數(shù)組中的字、雙字或四字。MOVAX,[EBX+2*ECX]和MOV[4*ECX],EDX就是比例因子尋址指令的例子。15.數(shù)據(jù)結(jié)構(gòu)是存儲(chǔ)一組數(shù)據(jù)的模板,其中的數(shù)據(jù)用數(shù)組名和字段名來尋址。例如,數(shù)組NUMBER中的字段TEN用NUMBER.TEN尋址。5814.比例變址只適用于80386~Pentium5916.直接程序存儲(chǔ)器尋址允許JMP和CALL指令使用存儲(chǔ)器系統(tǒng)中的任何單元。這種尋址方式中,偏移地址和段地址存放在指令中。17.相對(duì)程序存儲(chǔ)器尋址允許JMP和CALL指令向前或向后轉(zhuǎn)移到當(dāng)前代碼段內(nèi)±32KB范圍的位置。在80386和更高檔型號(hào)的微處理器中,32位的位移量允許轉(zhuǎn)移到代碼段內(nèi)±2GB位移量的任何位置。32位的位移量只能用于保護(hù)模式。5916.直接程序存儲(chǔ)器尋址允許JMP和CALL指令使用存6018.間接程序存儲(chǔ)器尋址允許JMP和CALL指令通過寄存器或存儲(chǔ)單元間接尋址其他區(qū)域的程序或子程序。19.PUSH和POP指令在堆棧與寄存器或堆棧與存儲(chǔ)單元之間傳送字?jǐn)?shù)據(jù)。為了把立即數(shù)放入堆棧,用PUSH立即指令。PUSH和POP在堆棧與寄存器AX,CX,DX,BX,BP,SP,SI和DI之間傳送數(shù)據(jù)。在80386和更高檔型號(hào)的微處理器中,擴(kuò)展寄存器及擴(kuò)展的標(biāo)志也可以在寄存器與堆棧之間進(jìn)行傳送。如PUSHFD指令存儲(chǔ)EFLAGS,而PSHF指令存儲(chǔ)FLAGS。6018.間接程序存儲(chǔ)器尋址允許JMP和CALL指令通過寄6120.例3.15使用了本章中出現(xiàn)的許多尋址方式,這個(gè)例子把0000:0000到0000:0009單元的內(nèi)容填充到ARRAY1,把0到9填充到ARRAY2,最后將ARRAY1元素2的內(nèi)容與ARRAY2元素3的內(nèi)容交換。6120.例3.15使用了本章中出現(xiàn)的許多尋址方式,這個(gè)例62習(xí)題下面的MOV指令完成什么操作?(a)MOVAX,BX(b)MOVBX,AX(c)MOVBL,CH(d)MOVESP,EBP(e)MOVAX,CS62習(xí)題下面的MOV指令完成什么操作?632.列出寄存器尋址使用的8位寄存器。3.列出寄存器尋址使用的16位寄存器。4.列出80386~Pentium4微處理器寄存器尋址使用的32位寄存器。632.列出寄存器尋址使用的8位寄存器。645.列出由MOV,PUSH,POP寄存器尋址使用的16位段寄存器。6.指令MOVBL,CX存在什么錯(cuò)誤?7.指令MOVDS,SS存在什么錯(cuò)誤?645.列出由MOV,PUSH,POP寄存器尋址使65為下面的每個(gè)任務(wù)選擇指令:

(a)復(fù)制EBX到EDX(b)復(fù)制BL到CL(c)復(fù)制SI到BX(d)復(fù)制DS到AX(e)復(fù)制AL到AH

9.為下面的每個(gè)任務(wù)選擇指令:

(a)將12H傳送到AL中

(b)將0CDH傳送到AX中

(c)將1000H傳送到SI中

(d)將1200A2H傳送到EBX中65為下面的每個(gè)任務(wù)選擇指令:6610.曾經(jīng)用哪些特殊符號(hào)表示立即數(shù)?11..MODELTINY語句的作用是什么?12.什么樣的匯編語言偽指令指明CODE段的開始?6610.曾經(jīng)用哪些特殊符號(hào)表示立即數(shù)?6713.什么是標(biāo)號(hào)?14.MOV指令放在語句的什么字段?15.標(biāo)號(hào)可以由哪些字符開始?6713.什么是標(biāo)號(hào)?6816..EXIT偽指令的作用是什么?17..MODELTINY語句可以被匯編成執(zhí)行程序嗎?18.在SMALL存儲(chǔ)模型中,.STARTUP偽指令完成什么任務(wù)?6816..EXIT偽指令的作用是什么?6919.什么是位移量?怎樣確定MOV[2000H],AL指令中的存儲(chǔ)器地址?20.符號(hào)[]指示什么?6919.什么是位移量?怎樣確定MOV[2000H],7021.假定按實(shí)模式操作,DS=0200H,BX=0300H,DI=400H,確定下面每條指令訪問的存儲(chǔ)器地址:

(a)MOVAL,[1234H](b)MOVEAX,[BX](c)MOV[DI],AL7021.假定按實(shí)模式操作,DS=0200H,BX=7122.指令MOV[BX],[DI]的錯(cuò)誤是什么?23.選擇一條需要BYTEPTR的指令。24.選擇一條需要WORDPTR的指令。25.選擇一條需要DWORDPTR的指令。26.說明MOVBX,DATA和MOVBX,OFFSETDATA指令之間的區(qū)別。7122.指令MOV[BX],[DI]的錯(cuò)誤是什么?7227.給定DS=1000H,SS=2000H,BP=1000H,DI=0100H.假定按實(shí)模式操作,確定下面每條指令尋址的存儲(chǔ)器地址。

(a)MOVAL,[BP+DI](b)MOVCX,[DI](c)MOVEDX,[BP]28.MOVAL,[BX][SI]指令中有錯(cuò)誤嗎?如果有,請(qǐng)說明它的錯(cuò)誤是什么?7227.給定DS=1000H,SS=2000H,7329.假定DS=1200H,BX=0100H,SI=0250H。假定按實(shí)模式操作,確定下面每條指令尋址存儲(chǔ)器的地址。

(a)MOV[100H],DL(b)MOV[SI+100H],EAX(c)MOVDL,[BX+100H]7329.假定DS=1200H,BX=0100H,7430.假定DS=1100H,BX=0200H,LIST=0250H,SI=0500H。假定按實(shí)模式操作,確定下面每條指令尋址存儲(chǔ)器的地址。

(a)MOVLIST[SI],EDX(b)MOVCL,LIST[BX+SI](c)MOVCH,[BX+SI]7430.假定DS=1100H,BX=0200H,L7531.假定DS=1300H,SS=1400H,BP=1500H,andSI=0100H。假定按實(shí)模式操作,確定下面每條指令尋址存儲(chǔ)器的地址。

(a)MOVEAX,[BP+200H](b)MOVAL,[BP+SI-200H](c)MOVAL,[SI-0100H]32.哪些基址寄存器可以尋址堆棧段的數(shù)據(jù)?7531.假定DS=1300H,SS=1400H,7633.給定EAX=00001000H,EBX=00002000H,DS=0010H。假定工作在實(shí)模式,確定下面每條指令所訪問的地址。

(a)MOVECX,[EAX+EBX](b)MOV[EAX+2*EBX],CL(c)MOVDH,[EBX+4*EAX+1000H]7633.給定EAX=00001000H,EBX=07734.給出有5個(gè)字段的數(shù)據(jù)結(jié)構(gòu),字段名是F1,F2,F3,F4和F5,結(jié)構(gòu)名是FIELDS。35.在程序中怎樣尋址習(xí)題34中數(shù)據(jù)結(jié)構(gòu)的F3字段。36.列出全部三種程序存儲(chǔ)器尋址方式。37.存放遠(yuǎn)直接轉(zhuǎn)移指令要用多少存儲(chǔ)器字節(jié)?每個(gè)字節(jié)存儲(chǔ)什么?7734.給出有5個(gè)字段的數(shù)據(jù)結(jié)構(gòu),字段名是F1,F2,7838.段間轉(zhuǎn)移和段內(nèi)轉(zhuǎn)移之間的區(qū)別是什么?39.如果近轉(zhuǎn)移指令使用16位有符號(hào)的位移量,說明怎樣轉(zhuǎn)移到當(dāng)前代碼段內(nèi)的某一存儲(chǔ)單元?40.80386和更高檔型號(hào)的微處理器用______位的位移量轉(zhuǎn)移到4GB代碼段內(nèi)的任何位置。41.什么是遠(yuǎn)轉(zhuǎn)移?7838.段間轉(zhuǎn)移和段內(nèi)轉(zhuǎn)移之間的區(qū)別是什么?7942.如果JMP指令存儲(chǔ)在當(dāng)前代碼段內(nèi)的100H地址,要轉(zhuǎn)移到當(dāng)前代碼段內(nèi)的200H地址,不能用__轉(zhuǎn)移43.如果JMPTHERE指令存儲(chǔ)在存儲(chǔ)器地址10000H處,并且THERE地址是下面的一些值,指出JMP指令匯編為哪類(短、近或遠(yuǎn))轉(zhuǎn)移?

(a)10020H(b)11000H(c)30000H7942.如果JMP指令存儲(chǔ)在當(dāng)前代碼段內(nèi)的100H地址,8044.構(gòu)造一條JMP指令,轉(zhuǎn)移到由BX寄存器指示的地址。45.選擇JMP指令轉(zhuǎn)移到存儲(chǔ)器地址表中的某個(gè)地址。假定是近JMP指令。46.用PUSH指令可以把多少個(gè)字節(jié)存放在堆棧中?47.解釋PUSH[DI]指令是怎樣工作的?8044.構(gòu)造一條JMP指令,轉(zhuǎn)移到由BX寄存器指示的地址8148.PUSHA指令將哪些寄存器放入堆棧中?按什么順序存放的?49.PUSHAD指令完成什么工作?50.在Pentium4微處理器中,哪些指令把EFLAGS存放在堆棧中?8148.PUSHA指令將哪些寄存器放入堆棧中?按什么順序82第3章尋址方式8086~80286微處理器的數(shù)據(jù)尋址方式包括寄存器尋址,立即尋址,直接尋址,寄存器間接尋址,基址加變址尋址,寄存器相對(duì)尋址和相對(duì)基址加變址尋址。80386和更高檔型號(hào)的微處理器還包含比例變址方式的存儲(chǔ)器數(shù)據(jù)尋址。程序存儲(chǔ)器尋址方式包括程序相對(duì)尋址,直接尋址和間接尋址。堆棧的操作1第3章尋址方式8086~80286微處理器的數(shù)據(jù)尋址方83在8086~80286中,MOV指令在寄存器之間或寄存器與存儲(chǔ)器之間傳送字節(jié)數(shù)據(jù)或者字?jǐn)?shù)據(jù)。在80386和更高檔型號(hào)的微處理器中,MOV指令在寄存器之間或寄存器與存儲(chǔ)器之間傳送字節(jié)、字或雙字。2在8086~80286中,MOV指令在寄存器之間或寄存器84一條指令的體系結(jié)構(gòu)操作碼操作數(shù)3一條指令的體系結(jié)構(gòu)操作碼85寄存器尋址4寄存器尋址86要點(diǎn)需使用相同長(zhǎng)度的寄存器就寄存器類MOV指令而言,段寄存器到段寄存器是不允許的代碼段寄存器不能用MOV指令改變MOV指令都不影響標(biāo)志位5要點(diǎn)87立即尋址6立即尋址88要點(diǎn)字母H表示十六進(jìn)制數(shù)如果十六進(jìn)制數(shù)以字母開頭,則要求在它前面加一個(gè)0。例如,用0F2H表示十六進(jìn)制數(shù)F2二進(jìn)制數(shù)后面跟著字母B時(shí),表示該數(shù)據(jù)是二進(jìn)制數(shù)據(jù)十進(jìn)制數(shù)不要求特殊的代碼和符號(hào)一個(gè)ASCII碼字符或幾個(gè)字符可表示為立即數(shù)。例如,`A`表示41H,`AA`表示4141H7要點(diǎn)89890程序中的每條語句由4個(gè)部分組成:標(biāo)號(hào),操作碼,操作數(shù)和注釋當(dāng)程序被匯編后,就會(huì)生成清單擴(kuò)展名.LST文件(ML編譯時(shí),帶/Fl參數(shù)。例如:ML/FlMY1.ASM)和指令的機(jī)器碼或者數(shù)據(jù)一樣,指令或數(shù)據(jù)的偏移地址也由匯編程序生成9程序中的每條語句由4個(gè)部分組成:標(biāo)號(hào),操作碼,操作數(shù)和注釋91直接尋址10直接尋址92MOV指令(3字節(jié)長(zhǎng))所用的直接尋址在數(shù)據(jù)段存儲(chǔ)單元與AL,AX和EAX寄存器之間傳送數(shù)據(jù)除了指令是4字節(jié)或更多外,位移量尋址幾乎等同于直接尋址偏移地址加數(shù)據(jù)段地址形成存儲(chǔ)數(shù)據(jù)單元11MOV指令(3字節(jié)長(zhǎng))所用的直接尋址在數(shù)據(jù)段存儲(chǔ)單元與931294數(shù)據(jù)段以.DATA語句開始模型的尺寸由TINY調(diào)整SMALL,因而包含了一個(gè)數(shù)據(jù)段SMALL模型允許一個(gè)數(shù)據(jù)段和一個(gè)代碼段SMALL模型程序被匯編成執(zhí)行(.EXE)DB和DW偽指令在數(shù)據(jù)段中分配存儲(chǔ)單元STARTUP語句不僅指示代碼段的開始,也將數(shù)據(jù)段的段地址裝入數(shù)據(jù)段寄存器13數(shù)據(jù)段以.DATA語句開始95寄存器間接尋址14寄存器間接尋址96寄存器BP,BX,DI和SI以[]為標(biāo)志保存偏移地址80386和更高檔型號(hào)微處理器的寄存器間接尋址允許使用ESP以外的任何擴(kuò)展寄存器

BX,DI和SI尋址存儲(chǔ)器時(shí),默認(rèn)使用數(shù)據(jù)段;如果用BP尋址存儲(chǔ)器,默認(rèn)使用堆棧段對(duì)于80386和更高檔型號(hào)的微處理器,EBP默認(rèn)尋址堆棧段中的存儲(chǔ)器,而EAX,EBX,ECX,EDI和ESI默認(rèn)尋址數(shù)據(jù)段中的存儲(chǔ)器15寄存器BP,BX,DI和SI以[]為標(biāo)志97匯編偽指令BYTEPTR,WORDPTR,DWORDPTR指明由存儲(chǔ)器指針(PTR)尋址的存儲(chǔ)器數(shù)據(jù)的長(zhǎng)度偽指令只用于帶有立即數(shù)的通過指針或變址寄存器尋址的存儲(chǔ)單元16匯編偽指令98例如任務(wù):要建立一個(gè)從0000:046C存儲(chǔ)單元開始,包含50個(gè)采樣值的信息表?xiàng)l件:單元0000:046C含有一個(gè)由PC實(shí)時(shí)時(shí)鐘維持的計(jì)數(shù)器步驟1:將表的起始地址裝入BX中,用寄存器間接尋址方式順序存儲(chǔ)這50個(gè)采樣值步驟2:初始化計(jì)數(shù)器,再將50裝入CX寄存器,采用DB指令去分配數(shù)據(jù)段中的存儲(chǔ)單元注意MOVBX,DATAS與MOVBX,OFFSETDATAS的區(qū)別17例如任務(wù):要建立一個(gè)從0000:046C存儲(chǔ)單元開始,991810019101要點(diǎn)程序用MOVAX,ES:[046CH]指令從附加段存儲(chǔ)單元46CH讀出數(shù)據(jù)利用寄存器BX中的偏移地址,使用間接尋址方式將數(shù)據(jù)存入存儲(chǔ)單元中BX遞增指向表的下一個(gè)單元LOOP指令使計(jì)數(shù)器CX遞減在地址0000:046C—0000:046F處,存放定時(shí)器的計(jì)數(shù)值。這個(gè)值在午夜0時(shí)為0,然后每秒增加18.2次。20要點(diǎn)102基址加變址尋址21基址加變址尋址103在8086~80386中,基址加變址尋址用一個(gè)基址寄存器(BP或BX)保存存儲(chǔ)器數(shù)組的起始位置地址和一個(gè)變址寄存器(DI或SI)保存數(shù)組元素的相對(duì)位置BP

寄存器和堆棧段寄存器兩者生成有效地址在80386和更高檔型號(hào)的微處理器中,基址加變址尋址方式允許除了ESP以外的任意兩個(gè)32位擴(kuò)展寄存器組合使用如果用EBP寄存器,數(shù)據(jù)在堆棧段中而不在數(shù)據(jù)段中22在8086~80386中,基址加變址尋址用一個(gè)基址寄存10423105用途:尋址存儲(chǔ)器數(shù)組中的元素將數(shù)組的起始地址裝入寄存器BX(基址)把要存取的元素在數(shù)組中的序號(hào)數(shù)存入寄存器DI(變址)24用途:尋址存儲(chǔ)器數(shù)組中的元素106例如任務(wù):將數(shù)組中10H號(hào)元素裝入數(shù)組單元20H注意:用裝入DI寄存器中的數(shù)組元素序號(hào)尋址數(shù)組元素25例如任務(wù):將數(shù)組中10H號(hào)元素裝入數(shù)組單元20H10726108寄存器相對(duì)尋址27寄存器相對(duì)尋址109用位移量加基址或變址寄存器(BP,BX,DI或SI)的內(nèi)容尋址存儲(chǔ)器段中的數(shù)據(jù)BX,DI或SI尋址數(shù)據(jù)段,BP尋址堆棧段在80386和更高檔型號(hào)的微處理器中,位移量可以是32位的數(shù)字,寄存器可以是除了ESP以外的任何32位寄存器位移量可以是在[]符號(hào)內(nèi)加到寄存器上的一個(gè)數(shù),還可以是加在[]符號(hào)前面的偏移地址,或者兩種情況一起出現(xiàn)。28用位移量加基址或變址寄存器(BP,BX,DI或S110應(yīng)用:寄存器相對(duì)尋址方式尋址數(shù)組數(shù)據(jù)例如:把數(shù)組10H單元的內(nèi)容傳送到數(shù)組20H單元,以完成和基址加變址一樣的任務(wù)不用BX寄存器尋址ARRAY存儲(chǔ)區(qū)域,而是將ARRAY作為位移量變址寄存器DI用于存取元素29應(yīng)用:寄存器相對(duì)尋址方式尋址數(shù)組數(shù)據(jù)1113011231113相對(duì)基址加變址尋址32相對(duì)基址加變址尋址114類似于基址加變址尋址方式,但是它用基址寄存器和變址寄存器加位移量形成存儲(chǔ)器地址在80386和更高檔型號(hào)的微處理器中,由兩個(gè)32位寄存器和32的位移量之和產(chǎn)生有效地址應(yīng)用:因?yàn)樗悬c(diǎn)復(fù)雜,這種尋址方式通常用來尋址存儲(chǔ)器的二維數(shù)組中的數(shù)據(jù)用相對(duì)基址加變址尋址方式訪問數(shù)組:假定存儲(chǔ)器中的文件包含多個(gè)記錄,每個(gè)記錄包含多個(gè)元素33類似于基址加變址尋址方式,但是它用基址寄存器和變址寄存器115例如任務(wù):將記錄A中的元素0復(fù)制C中的元素2注意:位移量尋址文件,基址寄存器尋址記錄,而變址寄存器尋址記錄中的元素此例中的FILE包含4個(gè)記錄,每個(gè)記錄包含10個(gè)元素34例如任務(wù):將記錄A中的元素0復(fù)制C中的元素2116351173611837119比例變址尋址38比例變址尋址120這種尋址方式是80386~Pentium微處理器特有的使用32位寄存器(基址寄存器和變址寄存器)訪問存儲(chǔ)器第2個(gè)寄存器(變址寄存器)與比例因子相乘,比例因子可以是1X,2X,4X是或8X比例因子2X用來尋址字存儲(chǔ)器數(shù)組,比例因子4X用來尋址雙字存儲(chǔ)器數(shù)組39這種尋址方式是80386~Pentium微處理器特有的121例如任務(wù):訪問LIST字?jǐn)?shù)組數(shù)據(jù),這個(gè)程序?qū)卧?中的內(nèi)容2存儲(chǔ)到單元4和單元7注意:.386偽指令選擇80386微處理器,這個(gè)偽指令必須放在.MODEL語句后面40例如任務(wù):訪問LIST字?jǐn)?shù)組數(shù)據(jù),這個(gè)程序?qū)卧?中12241123數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)用來規(guī)定信息怎樣存儲(chǔ)到存儲(chǔ)器數(shù)組中STRUC定義結(jié)構(gòu)的開始,ENDS語句定義結(jié)構(gòu)的結(jié)束例3.1142數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)用來規(guī)定信息怎樣存儲(chǔ)到存儲(chǔ)器數(shù)組中124程序存儲(chǔ)器尋址直接程序存儲(chǔ)器尋址相對(duì)程序存儲(chǔ)器尋址間接程序存儲(chǔ)器尋址43程序存儲(chǔ)器尋址直接程序存儲(chǔ)器尋址125直接程序存儲(chǔ)器尋址44直接程序存儲(chǔ)器尋址126在實(shí)模式下,遠(yuǎn)轉(zhuǎn)移通過改變CS和IP兩者的內(nèi)容,訪問存儲(chǔ)器第一個(gè)1MB內(nèi)的任何單元在保護(hù)模式操作中,遠(yuǎn)轉(zhuǎn)移訪問描述符表里的新的代碼段描述符,允許轉(zhuǎn)移到存儲(chǔ)器中的任何存儲(chǔ)單元45在實(shí)模式下,遠(yuǎn)轉(zhuǎn)移通過改變CS和IP兩者的內(nèi)容,訪問存127相對(duì)程序存儲(chǔ)器尋址JMP指令的格式是1字節(jié)操作碼加1個(gè)或2個(gè)字節(jié)的位移量,位移量將與指令指針相加相對(duì)JMP和CALL指令8位或16位帶符號(hào)的位移量,允許向前或者向后訪問存儲(chǔ)器46相對(duì)程序存儲(chǔ)器尋址JMP指令的格式是1字節(jié)操作碼加1個(gè)或128間接程序存儲(chǔ)器尋址對(duì)于JMP和CALL指令,微處理器提供幾種間接程序存儲(chǔ)器尋址形式,可以使用任何16位寄存器(AX,BX,CX,DX,SP,BP,DI或SI),任何相對(duì)寄存器([BP],[BX]或[SI]),或任何帶有位移量的相對(duì)寄存器47間接程序存儲(chǔ)器尋址對(duì)于JMP和CALL指令,微處理器提供129堆棧存儲(chǔ)器尋址堆棧存儲(chǔ)器是后進(jìn)先出存儲(chǔ)區(qū)PUSH和POP指令CALL

指令用堆棧保存程序返回地址,而RET

指令從堆棧取出返回地址堆棧指針(SP或ESP)和堆棧段寄存器(SS)48堆棧存儲(chǔ)器尋址堆棧存儲(chǔ)器是后進(jìn)先出存儲(chǔ)區(qū)130當(dāng)字?jǐn)?shù)據(jù)被壓入堆棧時(shí),高8位放入由SP-1尋址的單元,低8位放入由SP-2尋址的單元,然后SP中的值減2當(dāng)數(shù)據(jù)從堆棧彈出時(shí),低8位從SP尋址的單元移出。高8位從SP+1尋址的單元移出,然后SP寄存器加249當(dāng)字?jǐn)?shù)據(jù)被壓入堆棧時(shí),高8位放入由SP-1尋址的單元,低1318086-80286微處理器是16位80386和更高檔型號(hào)的微處理器中,任何32位擴(kuò)展寄存器都可以壓入堆棧PUSHA和POPA指令PUSHAD和POPAD指令PUSHF指令PUSHFD指令508086-80286微處理器是16位132

小結(jié)數(shù)據(jù)尋址方式包含:______、______、______、______、______、______和______。在80386~Pentisum4微處理器中,增加了稱為比例變址尋址的一種新的尋址方式。程序存儲(chǔ)器尋址方式包括:______、______和______。51小結(jié)數(shù)據(jù)尋址方式包含:_133表3.12列出了用于8086~80286的所有實(shí)模式的數(shù)據(jù)尋址方式。注意,80386和更高檔型號(hào)的微處理器除了使用這些模式外,又增加了本章定義的其他許多方式。在保護(hù)模式中,段寄存器的功能是尋址包含存儲(chǔ)器段基地址的____。80386~Pentium4微處理器又增加了一些尋址方式,允許擴(kuò)展寄存器EAX,EBX,ECX,EDX,EBP,EDI和ESI尋址寄存器。這些尋址方式以表的形式列出來要占很多篇幅,一般而言,這些擴(kuò)展寄存器的作用域表3.12中列出的那些寄存器是相同的。例如MOVAL,TABLE[EBX+2*ECX+10H]是用于80386~Pentium4微處理器的有效尋址方式。52表3.12列出了用于8086~80286的所有實(shí)模式的數(shù)134MOV指令將______

內(nèi)容復(fù)制到______操作數(shù)中,任何此類指令都不改變?cè)床僮鲾?shù)。寄存器尋址可以使用任何一個(gè)8位寄存器(AH,AL,BH,BL,CH,CL,DH或DL)或任何一個(gè)16位寄存器(AX,BX,CX,DX,SP,BP,SI或DI)。在段寄存器與16位寄存器/存儲(chǔ)單元之間傳送數(shù)據(jù)時(shí),或者在PUSH及POP指令中,也可以用段寄存器(CS,DS,ES或SS)尋址。80386~Pentium4微處理器中,擴(kuò)展寄存器也可以用于寄存器尋址,分別是:EAX,EBX,ECX,EDX,ESP,EBP,EDI和ESI。80386和更高檔型號(hào)的微處理器還可以用FS和GS段寄存器。53MOV指令將______內(nèi)容復(fù)制到______操作135MOV立即數(shù)據(jù)指令將直接跟在操作碼后面的字節(jié)或字送到寄存器或存儲(chǔ)單元。立即尋址方式操作程序中的常數(shù)。在80386和更高檔型號(hào)的微處理器中,可以將雙字立即數(shù)裝入32位寄存器或存儲(chǔ)單元。匯編語言使用的.MODEL語句定義文件的開始和文件使用的存儲(chǔ)模型。如果是TINY模型,程序只有一個(gè)段(代碼段)并且匯編為命令(.COM)程序、如果使用SMALL模型,程序使用代碼段和數(shù)據(jù)段并且匯編為執(zhí)行(.EXE)程序。其他模型的規(guī)模和屬性列于附錄A中。54MOV立即數(shù)據(jù)指令將直接跟在操作碼后面的字節(jié)或字送到寄存136直接尋址以兩種形式出現(xiàn)在微處理器中:(1)直接尋址;(2)位移量尋址。兩種尋址方式是等同的,只是直接尋址用于在EAX,AX或AL與存儲(chǔ)器之間傳送數(shù)據(jù),而位移量尋址用于在任何寄存器與存儲(chǔ)器之間傳送數(shù)據(jù)。直接尋址需要3個(gè)字節(jié)存儲(chǔ)空間,而位移量尋址需要4個(gè)字節(jié)。在80386和更高檔型號(hào)的微處理器中,由于寄存器或操作數(shù)的超越前綴形式,這些指令可能還需要增加字節(jié)。55直接尋址以兩種形式出現(xiàn)在微處理器中:(1)直接尋址;(2137寄存器間接尋址允許通過基地址(BP和BX)或變址寄存器(DI和SI)指向的存儲(chǔ)單元中的數(shù)據(jù)地址來訪問數(shù)據(jù)。在80386和更高檔型號(hào)的微處理器中可以用擴(kuò)展寄存器EAX,EBX,ECX,EDX,EBP,EDI和ESI尋址存儲(chǔ)器數(shù)據(jù)。基址加變址尋址通常是尋址數(shù)組中的數(shù)據(jù)。這種方式的存儲(chǔ)器地址由基址寄存器、變址寄存器和10H倍的段寄存器的內(nèi)容相加構(gòu)成。在80386和更高檔型號(hào)微處理器中,基址寄存器和變址寄存器可以是除了EIP和ESP以外的任何32位寄存器。56寄存器間接尋址允許通過基地址(BP和BX)或變址寄存器(13812.寄存器相對(duì)尋址用基址寄存器或者變址寄存器加位移量去訪問存儲(chǔ)器中的數(shù)據(jù)。13.相對(duì)基址加變址尋址對(duì)于尋址二維存儲(chǔ)器數(shù)組很有用。地址由基址寄存器、變址寄存器、相對(duì)偏移量和10H倍的段寄存器的內(nèi)容相加構(gòu)成。5712.寄存器相對(duì)尋址用基址寄存器或者變址寄存器加位移量13914.比例變址只適用于80386~Pentium4。兩個(gè)寄存器中的第2個(gè)寄存器(變址寄存器)乘以比例因子2X,4X或8X,以便尋址存儲(chǔ)器數(shù)組中的字、雙字或四字。MOVAX,[EBX+2*ECX]和MOV[4*ECX],EDX就是比例因子尋址指令的例子。15.數(shù)據(jù)結(jié)構(gòu)是存儲(chǔ)一組數(shù)據(jù)的模板,其中的數(shù)據(jù)用數(shù)組名和字段名來尋址。例如,數(shù)組NUMBER中的字段TEN用NUMBER.TEN尋址。5814.比例變址只適用于80386~Pentium14016.直接程序存儲(chǔ)器尋址允許JMP和CALL指令使用存儲(chǔ)器系統(tǒng)中的任何單元。這種尋址方式中,偏移地址和段地址存放在指令中。17.相對(duì)程序存儲(chǔ)器尋址允許JMP和CALL指令向前或向后轉(zhuǎn)移到當(dāng)前代碼段內(nèi)±32KB范圍的位置。在80386和更高檔型號(hào)的微處理器中,32位的位移量允許轉(zhuǎn)移到代碼段內(nèi)±2GB位移量的任何位置。32位的位移量只能用于保護(hù)模式。5916.直接程序存儲(chǔ)器尋址允許JMP和CALL指令使用存14118.間接程序存儲(chǔ)器尋址允許JMP和CALL指令通過寄存器或存儲(chǔ)單元間接尋址其他區(qū)域的程序或子程序。19.PUSH和POP指令在堆棧與寄存器或堆棧與存儲(chǔ)單元之間傳送字?jǐn)?shù)據(jù)。為了把立即數(shù)放入堆棧,用PUSH立即指令。PUSH和POP在堆棧與寄存器AX,CX,DX,BX,BP,SP,SI和DI之間傳送數(shù)據(jù)。在80386和更高檔型號(hào)的微處理器中,擴(kuò)展寄存器及擴(kuò)展的標(biāo)志也可以在寄存器與堆棧之間進(jìn)行傳送。如PUSHFD指令存儲(chǔ)EFLAGS,而PSHF指令存儲(chǔ)FLAGS。6018.間接程序存儲(chǔ)器尋址允許JMP和CALL指令通過寄14220.例3.15使用了本章中出現(xiàn)的許多尋址方式,這個(gè)例子把0000:0000到0000:0009單元的內(nèi)容填充到ARRAY1,把0到9填充到ARRAY2,最后將ARRAY1元素2的內(nèi)容與ARRAY2元素3的內(nèi)容交換。6120.例3.15使用了本章中出現(xiàn)的許多尋址方式,這個(gè)例143習(xí)題下面的MOV指令完成什么操作?(a)MOVAX,BX(b)MOVBX,AX(c)MOVBL,CH(d)MOVESP,EBP(e)MOVAX,CS62習(xí)題下面的MOV指令完成什么操作?1442.列出寄存器尋址使用的8位寄存器。3.列出寄存器尋址使用的16位寄存器。4.列出80386~Pentium4微處理器寄存器尋址使用的32位寄存器。632.列出寄存器尋址使用的8位寄存器。1455.列出由MOV,PUSH,POP寄存器尋址使用的16位段寄存器。6.指令MOVBL,CX存在什么錯(cuò)誤?7.指令MOVDS,SS存在什么錯(cuò)誤?645.列出由MOV,PUSH,POP寄存器尋址使146為下面的每個(gè)任務(wù)選擇指令:

(a)復(fù)制EBX到EDX(b)復(fù)制BL到CL(c)復(fù)制SI到BX(d)復(fù)制DS到AX(e)復(fù)制AL到AH

9.為下面的每個(gè)任務(wù)選擇指令:

(a)將12H傳送到AL中

(b)將0CDH傳送到AX中

(c)將1000H傳送到SI中

(d)將1200A2H傳送到EBX中65為下面的每個(gè)任務(wù)選擇指令:14710.曾經(jīng)用哪些特殊符號(hào)表示立即數(shù)?11..MODELTINY語句的作用是什么?12.什么樣的匯編語言偽指令指明CODE段的開始?6610.曾經(jīng)用哪些特殊符號(hào)表示立即數(shù)?14813.什么是標(biāo)號(hào)?14.MOV指令放在語句的什么字段?15.標(biāo)號(hào)可以由哪些字符開始?6713.什么是標(biāo)號(hào)?14916..EXIT偽指令的作用是什么?17..MODELTINY語句可以被匯編成執(zhí)行程序嗎?18.在SMALL存儲(chǔ)模型中,.STARTUP偽指令完成什么任務(wù)?6816..EXIT偽指令的作用是什么?15019.什么是位移量?怎樣確定MOV[2000H],AL指令中的存儲(chǔ)器地址?20.符號(hào)[]指示什么?6919.什么是位移量?怎樣確定MOV[2000H],15121.假定按實(shí)模式操作,DS=0200H,BX=0300H,DI=400H,確定下面每條指令訪問的存儲(chǔ)器地址:

(a)MOVAL,[1234H](b)MOVEAX,[BX](c)MO

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論