電科微型計(jì)算機(jī)原理復(fù)習(xí)_第1頁(yè)
電科微型計(jì)算機(jī)原理復(fù)習(xí)_第2頁(yè)
電科微型計(jì)算機(jī)原理復(fù)習(xí)_第3頁(yè)
電科微型計(jì)算機(jī)原理復(fù)習(xí)_第4頁(yè)
電科微型計(jì)算機(jī)原理復(fù)習(xí)_第5頁(yè)
已閱讀5頁(yè),還剩127頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

微型計(jì)算機(jī)原理復(fù)習(xí)題

單項(xiàng)選擇題15*1=15分

填空題10*2=20分

問(wèn)答題:4*5=20分

程序分析題4*5=20分

設(shè)計(jì)應(yīng)用題1*15+1*10=25分

第一章微型計(jì)算機(jī)概述

>1>微型計(jì)算機(jī)(MC,Microcomputer)是

有哪些部件構(gòu)成的?

A答:由MP、存儲(chǔ)器、輸入/輸出接口電路和系

統(tǒng)總線構(gòu)成。

?2、微型計(jì)算機(jī)系統(tǒng)(MCS,Microcomputer

System)是有哪些部分構(gòu)成的?

?答:微型計(jì)算機(jī)系統(tǒng)是以微型計(jì)算機(jī)為主體,

配上軟件系統(tǒng)和外部設(shè)備而構(gòu)成的。

第二章80X86微處理器的結(jié)構(gòu)

A1.什么是壓縮和非壓縮的BCD碼?58的非壓

縮BCD和壓縮BCD各如何表示?

答:壓縮BCD碼表示:一個(gè)字節(jié)表示2個(gè)BCD碼。

非壓縮BCD碼表示的方法:一個(gè)字節(jié)表示1個(gè)

BCD碼.

>58的非壓縮BCD表示是0508H

>58壓縮BCD表示是58H

A2、什么是ASCH碼?可表示哪些信息?按其

作用可分為哪些?常用的ASCH碼有哪些?

?答:ASCH碼是美國(guó)信息交換標(biāo)準(zhǔn)代碼的簡(jiǎn)

稱(chēng),用于給西文字符編碼。包括英文字母的

大小寫(xiě)、數(shù)字、專(zhuān)用字符、控制字符等;按

其作用可分為:34個(gè)控制字符;10個(gè)阿拉伯

數(shù)字52個(gè)英文大小寫(xiě)字母;32個(gè)專(zhuān)用符號(hào)。

>常用的ASCH碼有:

>大寫(xiě)字母A??Z:41H—5AH

?小寫(xiě)字母a—z:61H—7AH

>數(shù)字0—9:30H—39H

>回車(chē):0DH、換行:0AH、空格:20H、$:24H

例如:

表示CB的ASCH是01000011(43H)01000010

(42H)

表示cb的ASCH是01100011(63H)01100010

(62H)

表示49的ASCH是00110100(34H)00111001

(39H)

TEST

A3、086CPU信號(hào)線RESET的功能是什么?

086復(fù)位后內(nèi)部寄存器狀態(tài)是怎樣的?

086CPU復(fù)位后從什么單元中取第一條指令

執(zhí)行。

答:RESET一復(fù)位信號(hào)輸入

8086復(fù)位后CS=FFFFH、DS=0000H>

ES=0000H>SS=0000H>IP=0000H>

FR=0000H

086CPU復(fù)位后從

CS*10H+IP=FFFFH*10H+0000H=FFFF0H

地址單元中取第一條指令執(zhí)行啟動(dòng)系統(tǒng)。

A4、8086CPU用于地址鎖存器輸入允許的控

制信號(hào)和用于數(shù)據(jù)收發(fā)器允許的控制信號(hào)

各是什么信號(hào)?

?答:

>用于地址鎖存器輸入允許的控制信號(hào)是

ALE,用于數(shù)據(jù)收發(fā)器允許的控制信號(hào)是

DENo

A5、8086CPU訪問(wèn)存貯器和訪問(wèn)I/O的地址

分別各為什么?可尋址的最大存貯器空間

和最大I/O空間分別各為多少?

?答:8086CPU訪問(wèn)存貯器的地址是A19—

A0,可尋址的最大存貯器空間是1MB.

>8086CPU訪問(wèn)I/O的地址是A15—A0,可尋

址的最大I/O空間是64KB.

6、6CPU信號(hào)線READY的功能是什么?

在何時(shí)何條件可插入TW?

>答:READY的功能是等待就緒信號(hào),用

于慢速的部件與CPU的速度協(xié)調(diào),在慢速

的部件不能在規(guī)定的時(shí)間內(nèi)完成操作時(shí)可

產(chǎn)生READY=O,CPU檢測(cè)后可在T3與T4

之間插入等待時(shí)鐘TW。

7、8086指令指針寄存器IP多少位?有何功能?

A答:IP是一個(gè)16位的寄存器,存放EU要執(zhí)行的

下一條指令的偏移地址,用以控制程序中指令的

執(zhí)行順序,實(shí)現(xiàn)對(duì)代碼段指令的跟蹤。

>指令指針I(yè)P指向當(dāng)前需要取出的指令字節(jié)存放的

地址。

注意:不是保存正在被執(zhí)行的指令和指令操作數(shù),

也不是保存正在被執(zhí)行的指令存儲(chǔ)單元的偏移地

址。

IP指向的是指令地址的段內(nèi)地址偏移量.

程序員不能對(duì)IP進(jìn)行存取操作,程序中的轉(zhuǎn)移指

令、返回指令以及中斷處理能對(duì)IP進(jìn)行操作。

IP管理程序的執(zhí)行順序。

標(biāo)志寄存器FR多少位?有哪些標(biāo)志?

?答:FR是一個(gè)16位的寄存器,共9個(gè)標(biāo)志.

?其中6個(gè)用作狀態(tài)標(biāo)志CF、PF、AF、ZF、

SF、OF

?3個(gè)用作控制標(biāo)志DF、IF、TF.

(1)進(jìn)位標(biāo)志CF?一反映運(yùn)算結(jié)果向更高位是

否有進(jìn)/借位,加減運(yùn)算后有進(jìn)位/借位時(shí)CF

=1,否則CF=0

CF標(biāo)志的用途:

用于運(yùn)算時(shí)的進(jìn)/借位。

用于無(wú)符號(hào)數(shù)運(yùn)算后判定是否有溢出。

用于移位操作時(shí)接收移出的信息位.

(2)奇偶校驗(yàn)標(biāo)志PF:反映運(yùn)算結(jié)果低八

位中“1”的個(gè)數(shù)為奇或者為偶,其值為

1表示運(yùn)算結(jié)果的低8位中1的個(gè)數(shù)為偶

數(shù),否則為奇數(shù)。

APF標(biāo)志可用于數(shù)據(jù)傳送后的奇偶校驗(yàn)。

(3)輔助進(jìn)位標(biāo)志AF■…反映運(yùn)算后的結(jié)果是否有半進(jìn)

位/借位,其值為1表示運(yùn)算中低4位向高4位有進(jìn)位

或借位,否則無(wú)進(jìn)位或借位。

AF在BCD碼運(yùn)算(8位)時(shí)可用作十進(jìn)制調(diào)整的條件。

(4)零標(biāo)志ZF■■…反映運(yùn)算結(jié)果是否為零,其值為1表示

運(yùn)算結(jié)果為0,否則非0。

ZF可用于判定二個(gè)數(shù)是否相等,相等的時(shí)候它們相減

的結(jié)果為零。

ZF還可用作計(jì)數(shù)器的計(jì)數(shù)次數(shù)是否減為0,當(dāng)減為0

的時(shí)候表示計(jì)數(shù)到,例如:循環(huán)次數(shù)計(jì)數(shù)

(5)符號(hào)標(biāo)志SF:反映運(yùn)算結(jié)果是否為負(fù),其值為

1表示運(yùn)算結(jié)果為負(fù)數(shù),否則為正數(shù)。

SF在有符號(hào)數(shù)運(yùn)算時(shí)才有意義。

SF也可在無(wú)符號(hào)數(shù)比較大小時(shí)判定兩個(gè)數(shù)的大小,

A、B兩個(gè)數(shù)相減后結(jié)果SF=O,A>B,

SF=1,A<B;

SF還在有符號(hào)數(shù)比較大小時(shí)與OF標(biāo)志一起判定

兩個(gè)數(shù)的大小。

(6)溢出標(biāo)志OF:反映有符號(hào)數(shù)運(yùn)算后的結(jié)果是否有溢

出,其值為1表示帶符號(hào)數(shù)運(yùn)算結(jié)果溢出,否則無(wú)溢

出。

有符號(hào)數(shù)運(yùn)算時(shí):

正數(shù)加正數(shù)結(jié)果為正…無(wú)溢出;結(jié)果為負(fù)一有溢出

負(fù)數(shù)加負(fù)數(shù)結(jié)果為負(fù)…無(wú)溢出;結(jié)果為正…有溢出

正數(shù)加負(fù)數(shù)或負(fù)數(shù)加正數(shù)—無(wú)溢出

OF十SF可以用于判有符號(hào)數(shù)比較大小

>以上的6個(gè)狀態(tài)標(biāo)志在運(yùn)算指令運(yùn)算后由EU

自動(dòng)的設(shè)置在FR中(CF也可以直接用指令設(shè)

置),常用作指令的轉(zhuǎn)移或執(zhí)行的控制條件,

影響或控制后續(xù)指令的執(zhí)行,特別是CF、ZF、

OF、SFo

>CPU的不同指令對(duì)狀態(tài)標(biāo)志的影響是不一樣

的,有的指令執(zhí)行后全部影響6個(gè)標(biāo)志,有的

影響部分,不影響的保持原態(tài),也有的一個(gè)

都不影響,對(duì)不影響的指令執(zhí)行后就不可以

使用條件轉(zhuǎn)移指令。

控制標(biāo)志:

(1)方向標(biāo)志DF:用于串操作時(shí)設(shè)置串指針

的修改方向,=0,串指針增量變化,=1,

串指針減量變化

(2)中斷允許標(biāo)志IF:設(shè)置是否允許CPU響應(yīng)

外部的可屏蔽中斷請(qǐng)求INTR,,=0,關(guān)中

斷,=1,開(kāi)中斷

(3)陷阱標(biāo)志TF:用于設(shè)置CPU運(yùn)行為單條執(zhí)

行指令的方式,=0,正常執(zhí)行程序,=1,

單步執(zhí)行程序

9、086CPU最小、最大方式時(shí)用于總線請(qǐng)

求、允許的信號(hào)線各是什么?

答:最小:HOLD?■■總線請(qǐng)求

HLDA?總線響應(yīng)

最大:RQ/GTO>RQ/GT1

?10、物理地址4ACD9H的邏輯地址可以是

哪些?

A答:4A00:0CD9>4500:5CD9>

:0459等

A11、8086CPU由哪幾個(gè)部件構(gòu)成?它們的主要功

能各是什么?

?答:8086CPU由指令執(zhí)行部件EU和總線接口部件

BIU兩個(gè)部份組成。

>指令執(zhí)行部件主要功能是執(zhí)行指令。

>總線接口部件的主要功能是完成訪問(wèn)存儲(chǔ)器或I/O端

口的操作:

>(1)形成訪問(wèn)存儲(chǔ)器的物理地址;

>(2)訪問(wèn)存儲(chǔ)器取得指令并暫存到指令隊(duì)列中等

待執(zhí)行;

>(3)訪問(wèn)存儲(chǔ)器或I/O端口以讀取操作數(shù)參與EU運(yùn)

算,或存放運(yùn)算結(jié)果。

A12、按照傳輸方向分,CPU引腳信號(hào)有幾種

類(lèi)型?各適用于什么場(chǎng)合?

?答:CPU引腳傳輸?shù)男盘?hào)按照傳輸方向劃分,

有以下幾種類(lèi)型:

A輸出:信號(hào)從CPU向外部傳送,用于傳輸?shù)?/p>

址信號(hào)和一些控制信號(hào);

A輸入:信號(hào)從外部送入CPU,主要用于傳輸

外部的狀態(tài)信號(hào)(例如READY)和請(qǐng)求(中

斷、DMA)信號(hào)。

?雙向:信號(hào)有時(shí)從外部送入CPU,有時(shí)從

CPU向外部傳送,主要用于數(shù)據(jù)信號(hào)的傳輸;

>13、什么是邏輯地址?什么是物理地址?它們各自

如何表示?如何轉(zhuǎn)換?

?答:程序中使用的存儲(chǔ)器地址稱(chēng)為邏輯地址,由16

位“段基址”和16位“偏移地址”(段內(nèi)地址)組

成。

>段基址表示一個(gè)段的起始地址的高16位。偏移地址

表示段內(nèi)的一個(gè)單元距離段開(kāi)始位置的距離。

?訪問(wèn)存儲(chǔ)器的實(shí)際地址稱(chēng)為物理地址,用20位二進(jìn)

制表示。

?將兩個(gè)16位二進(jìn)制表示的邏輯地址錯(cuò)位相加,可以

得到20位的物理地址:

>物理地址=段基址X16+偏移地址

第三章80X86微處理器的指令系統(tǒng)

>1、086CPU有哪幾種數(shù)據(jù)尋址方式,掌

握數(shù)據(jù)各種尋址方式的尋址過(guò)程,要求會(huì)

求指令的尋址方式?會(huì)求有效地址EA=?

會(huì)求物理地址=?

?答:指令的物理地址=?5*10地田

>堆棧棧頂物理地址=SS*10H+SP

?源串物理地址二口$*10H+SL

>目的串物理地址=£5*10m4)1

>數(shù)據(jù)直接尋址:MOVAL,[1000H];EA=1000H,物

理地址=DS*10H+1000H

>寄存器間接尋址:

>MOVAL,[BX閾SI閾DI];

>EA=BX或SI或DI,物理地址=口5*1(^+BX或SI或DI

>基址尋址:

>MOVAL,DISP[BX];

AEA=BX+DISP,物理地址二口5*10出BX+DISP

>MOVAL,DISP[BP];

>EA=BP+DISP,^aJ&ilt=SS*10H+BP+DISP

>基址變址尋址:

>MOVAL,[BX+SI^DI];

>EA=BX+SI或DI,物理地址=口5*佃+BX+SI或DI

>MOVAL,[BPSI或DI];

>EA=BP+SI或DI,物理地址=55*10出BP+SI或DI

>變址尋址:

>MOVAL,DISP[SI];

>EA=SI+DISP,^Mtlt=DS*10H+SI+DISP

>MOVAL,DISP[DI];

>EA=DI+DISP>M±Lt=DS*10H+DI+DISP

?相對(duì)基址變址尋址:

>MOVAL,DISP[BX+SI^DI];

>EA=BX+SI或DI+DISP,

>^/SW=DS*10H+BX+SI或DI+DISP

>MOVAL,DISP[BPSI或DI];

>EA=BP+SI或DI+DISP,

>^/JIW=SS*10H+BP+SI或DI+DISP

?2、086CPU有哪幾種轉(zhuǎn)移尋址方式,段內(nèi)、

段間轉(zhuǎn)移有何不同?掌握轉(zhuǎn)移各種尋址方式的

尋址過(guò)程。

?答:與轉(zhuǎn)移地址有關(guān)的尋址方式:段內(nèi)相對(duì)尋

址、段內(nèi)間接尋址、段間直接尋址、段間間接

尋址。

段內(nèi)相對(duì)尋址:

段內(nèi)短轉(zhuǎn)(short)—轉(zhuǎn)移偏移地址=IP+disp

段內(nèi)近轉(zhuǎn)(near)—轉(zhuǎn)移偏移地址=IP+disp16

?段內(nèi)間接尋址:

>寄存器間接一轉(zhuǎn)移的偏移地址=reg(reg

為AX、BX、CX、DX、SP、BP、SkDI)

?存儲(chǔ)器間接一轉(zhuǎn)移的偏移地址=(EA)

(EA為數(shù)據(jù)尋址方式尋址單元,為字單元)

?例:已知

BX=3500H,DS=2000H.(23500H)=4500H,

(23502H)=2000H

>JMPBX;段內(nèi)寄存器間接,IP=3500H

>JMPWORDPTR[BX];段內(nèi)存儲(chǔ)器間接,

>IP=(2000H*10H+3500H)=4500H

?段間直接轉(zhuǎn):

>JMPFARPTRL:

?IP=轉(zhuǎn)移指令的第2、3字節(jié)

?CS=轉(zhuǎn)移指令的第4、5字節(jié)

?段間存儲(chǔ)器間接轉(zhuǎn):

>JMPDWORD[BX]:

>IP=(2000H*10H+3500H)=4500H

>CS=(2000H*10H+3500H+2)=2000H

A3、掌握8086CPU以下指令:

>MOV、PUSH/POP、LEA、ADD、ADC、

SUB、INC、DEC、NEG、CMP、

DAA、MUL、DMAND、OR、NOT、

XOR、SHL、SHR、SAL、SAR、ROL、

ROR、RCL、RCR、MOVS、CMPS、

STOS、LODS、SCAS、REP、條件轉(zhuǎn)移

類(lèi)、LOOP、CALL、RET、CLD、STD

A對(duì)給出的指令,要求會(huì)分析指令是否正確。

A4、下列指令的源操作數(shù)段基址各是什么段

寄存器?

>(1)MOVAX,[BP][SI]答:ss

>(2)MOVAX,CS:8[DI]答:cs

>(3)MOVAX,[BX][DI]答:DS

>(4)MOVAX,ES:10[BP][SI]答:

>5、8086允許段超越和禁止段超越操作各有

哪些?。

A答:允許段超越的有:

>以BP為基址存取操作數(shù)、通用數(shù)據(jù)存取(用

BX、BP、SKDK直接尋址的內(nèi)存訪問(wèn))、

字符串指令的源數(shù)據(jù)串(DS:SI)操作、cs段

數(shù)據(jù)訪問(wèn)等。

?禁止段超越的是:取指令的指令地址(CS:

IP)、字符串指令的源數(shù)據(jù)串(ES:DI)操作、

堆棧操作(push/pop)

>6、掌握指令的有效地址,物理地址如何計(jì)算?有

效地址與段寄存器有什么對(duì)應(yīng)的關(guān)系?

?答:有效地址EA由尋址方式?jīng)Q定

>物理地址=段基址*1OH+EA

A有效地址中用BX、SkDI時(shí)默認(rèn)的段寄存器是DS

>有效地址中用BP、SP時(shí)默認(rèn)的段寄存器是SS

>IP默認(rèn)的段寄存器是CS

>源字符串默認(rèn)的段寄存器是DS(DS:SI)

>目的字符串默認(rèn)的段寄存器是ES(ES:DI)

>7.已知DS=5000H,SS=2500H,BP=

0200H,SI=1000H,傳送指令MOVAX,

[BP+SI]源操作數(shù)的尋址方式什么方式?物理地

址是多少?

?答:源操作數(shù)的尋址方式是:基址變址

>物理地址=26200H

?8、若DS=4500H,DI=1000H,COUNT=A8H,

A指令MOVAX,[DI+COUNT]中,源操作數(shù)的有

效地址EA和物理地址各為多少?

?答:有效地址EA為10A8H

物理地址為460A8H

9、什么是“堆?!保克惺裁从锰??在使

用上有什么特點(diǎn)?

答:堆棧是內(nèi)存中的一塊存儲(chǔ)區(qū),用來(lái)存放

專(zhuān)用數(shù)據(jù)。例如,調(diào)用子程序時(shí)的入口參數(shù)、

返回地址等。

數(shù)據(jù)都按照“先進(jìn)后出”的規(guī)則進(jìn)行存取。

SS存放堆棧段的段基址,SP存放當(dāng)前堆棧

棧頂?shù)钠频刂贰?/p>

數(shù)據(jù)進(jìn)出堆棧要使用專(zhuān)門(mén)的堆棧操作指令,

SP的值在執(zhí)行堆棧操作指令時(shí)根據(jù)規(guī)則自動(dòng)

地進(jìn)行修改。

10、判斷下列指令是否正確。若不正確,指出

錯(cuò)誤原因。

(1)MOVSI,DL

(2)MOVES,1000H

(3)LEAAX,3006H

(4)MOV[BP][DI]90

(5)MOV[SI],[DI]

(6)MOV[DI],[BX]

(7)MOV[DX+SI],AL

(8)MULAL,58H

(9)MOVDS,SEGDAT

(10)MOVWORDPTR[BX],-1

答:(1)指令MOVSI,DL是錯(cuò)誤的,兩個(gè)操

作數(shù)類(lèi)型不匹配。

(2)指令MOVES,1000H是錯(cuò)誤的,裝載

段寄存器時(shí),源操作數(shù)不能為立即數(shù)。

(3)指令LEAAX,3006H是錯(cuò)誤的,LEA

指令的源操作數(shù)必須為內(nèi)存操作數(shù)。

(4)指令MOV0是錯(cuò)誤的,操作

數(shù)類(lèi)型無(wú)法確定。

(5)指令MOV是錯(cuò)誤的,不能同

時(shí)出現(xiàn)兩個(gè)內(nèi)存操作數(shù)。

(6)MOV[DI],[BX];錯(cuò),存儲(chǔ)器不能傳

存儲(chǔ)器

(7)MOV[DX+SI],AL;錯(cuò),DX不能用作

基址尋址

(8)MULAL,58H;錯(cuò),乘法指令不能用

立即數(shù)

(9)MOVDS,SEGDAT;錯(cuò),立即數(shù)不

能送段寄存器

(10)MOVWORDPTR[BX],-1;正確

,送BX指示的字單元

>11.要求會(huì)求數(shù)組最后一個(gè)字、字節(jié)的存儲(chǔ)

地址是多少。

A答:數(shù)組最后一個(gè)字的地址二數(shù)組的首地址+

(數(shù)據(jù)個(gè)數(shù)?1)*2

>數(shù)組最后一個(gè)字節(jié)的地址二數(shù)組的首地址+

(數(shù)據(jù)個(gè)數(shù)?1)

A12、已知BUF偏移地址為58ADH,定義

BUFDW20DUP(?)后,該數(shù)組最后一個(gè)字

節(jié)數(shù)據(jù)的偏移地址是多少?

?答:數(shù)組最后一個(gè)字節(jié)數(shù)據(jù)的偏移地址

5BD3Ho

A13、已矢口BUF偏移地址為25DBH,定義

BUFDB50DUP(?)后,該數(shù)組最后一個(gè)

字的偏移地址是多少?

A答:數(shù)組最后一個(gè)字的偏移地址是260cH

14、不能采用立即數(shù)尋址方式的指令有哪些?

答:PUSH1234H;錯(cuò),不能用立即數(shù)

MUL58H;錯(cuò),不能用立即數(shù)

DIV58H;錯(cuò),不能用立即數(shù)

15、寫(xiě)出執(zhí)行段間轉(zhuǎn)移指令JMPFARPTR

LOP指令時(shí),執(zhí)行的操作是怎樣的?

答:執(zhí)行段間轉(zhuǎn)移指令JMPFARPTRLOP

指令時(shí),執(zhí)行的操作是:

AIP—轉(zhuǎn)移指令第2、3字節(jié)目標(biāo)地址的偏移

地址

ACS—轉(zhuǎn)移指令第4、4字節(jié)目標(biāo)地址的段地

16、指令“JMPSI”和“JMPWORD

PTR[S『作用有什么不同?請(qǐng)說(shuō)明。

?答:上述兩條指令都是段內(nèi)近轉(zhuǎn)移指令,

但是偏移地址的來(lái)源不同。

?指令JMPSI執(zhí)行時(shí),新的偏移地址在SI寄

存器內(nèi)

?指令JMPWORDPTR[SI]執(zhí)行時(shí),目的偏

移地址在存儲(chǔ)單元中,該存儲(chǔ)單元的地址

在DS:SI中。

?17、086CPU串指令中對(duì)源串、目的串有

何要求。

>答:

>源串物理地址二DSPOH+SL

>目的串物理地址二ESFOH+DI

?執(zhí)行前必需設(shè)置DS、SLES、DI

>CX(重復(fù)次數(shù))

>DF全制地址修改方向標(biāo)志

18、掌握REP、REPE、REPNE有何功能?REPZ、

REPNZ指令與什么串指令聯(lián)用?重復(fù)執(zhí)行的終止

條件是什么?

>答:

>REP:可重復(fù)執(zhí)行MOVS、LOAD、STOS

>REPE:可用于串比較CMPS

>REPNE:可用于串搜索SCAS

>REPZCMPS:CX=0(循環(huán)結(jié)束,兩串相等)或

ZF=0(發(fā)現(xiàn)不等,提前退出)

與CMPS指令聯(lián)用,可用于兩串是否相同的比較

REPNZSCAS:CX=0(循環(huán)結(jié)束,未找到關(guān)鍵字)

或ZF=1(發(fā)現(xiàn)相等,已找到關(guān)鍵字,提前退出)

與SCAS指令聯(lián)用,可用于在串中搜索是否有關(guān)鍵字

>19、如何實(shí)現(xiàn)32位數(shù)據(jù)(兩個(gè)16位寄存器DX、AX)

的內(nèi)容移位操作,移位可實(shí)現(xiàn)何種運(yùn)算?。

?例如:如何實(shí)現(xiàn)DX、AX中的無(wú)符號(hào)數(shù)乘2、除2

操作。

解:

?乘2:SHLAX,1;CF-D15.........DO-0

>RCLDX,1;CF-D15..........DO-CF

>除2:SHRDX,1;0—D15.DO—CF

RCRAX,1;CF—D15..........DO—CF

20、數(shù)據(jù)尋址有哪些情況不允許?

解:例如

MOV[DI],[BX];錯(cuò),存儲(chǔ)器不能傳存儲(chǔ)器

MOV[DX+SI],AL;錯(cuò),DX不能用作基址尋址

MOV[SI+DI],AL;錯(cuò),SI+DI不能用作變址尋址

MOV[BX+BP],AL;錯(cuò),BX+BP不能用作基址尋址

MOVWORDPTR[BX],-1;正確

MOVAL,BX;錯(cuò),類(lèi)型不匹配

MOVDS,SEGDAT;錯(cuò),立即數(shù)不能送段寄存器

PUSH1234H;錯(cuò),不能用立即數(shù)

MULAL,58H滯,不能用立即數(shù)

21、掌握補(bǔ)碼計(jì)算X+Y和X?Y。并可寫(xiě)出計(jì)算后的真值

及標(biāo)志位CF、OF、ZF、SF、PF各為多少?

例如:X=-45,Y=-34,用補(bǔ)碼計(jì)算X+Y和X-丫。

解:X=-45=-0101101兇補(bǔ)=11010011

Y=>34=-0100010[丫]補(bǔ)=11011110

卜Y]補(bǔ)=00100010

求[X+Y]補(bǔ):

[X]#=11010011

+[Y]補(bǔ)=11011110

10110001=-1001111=-79

CF=1(有進(jìn)位)ZF=0(結(jié)果非0)SF=1(結(jié)果為負(fù))

OF=0(結(jié)果無(wú)溢出)PF=1(偶數(shù)個(gè)1)

A求[X-丫]補(bǔ):

>[X]補(bǔ)=11010011

A+卜Y]補(bǔ)=00100010

>11110101=-0001011=-11

>CF=0=1(有借位)ZF=0(結(jié)果非0)

>SF=1(結(jié)果為負(fù))OF=0(結(jié)果無(wú)溢出)

>PF=1(偶數(shù)個(gè)1)

A22、設(shè)AX=865AH,BX=CB75H,則指令

“ADDAX,BX”執(zhí)行后,產(chǎn)生的標(biāo)志位是

怎樣的?

?解:1000011001011010

>+1100101101110101

>0101000111001111

?CF=1(有進(jìn)位)SF=0(結(jié)果為正)

ZF=0(結(jié)果非零)OF=1(結(jié)果有溢出)

>AF=0(無(wú)進(jìn)借位)PF=1(偶數(shù)個(gè)1)

A23、數(shù)據(jù)傳送指令(MOV)使用有哪些規(guī)定?

?答:允許reg—reg例:MOVAX,BX

允許reg—mem例:MOVAX,[BX]

允許reg—data例:MOVAX,2500H

允許reg—sreg例:MOVAX,CS

允許mem—reg例:MOV[BX],AX

允許mem-data例:MOV[BX],2500H

允許mem-sreg例:MOV[BX],CS

允許sreg-reg(除CS外)例:MOVDS,BX

>不允許:mem—mem例:MOVY,[BX]

例:MOV[SI],[BX]

>不允許sreg—data例:MOV

DS,2500H

>不允許sreg—sreg例:MOVDS,CS

A不允許CS做目的寄存器例:MOVCS,BX

?注意數(shù)據(jù)類(lèi)型匹配例:MOVDL,BX

A24、已知AX=836BH,X=FFFFK,執(zhí)行

“CMPAX,X”后,標(biāo)志位ZF、CF、OF、

SF=?

?答:0101

?25、已知AX=836BH,X=8000H,執(zhí)行

“TESTAX,X”后,標(biāo)志位ZF、CF、OF、

SF=?

?答:0001

A26、已知DS=5000H,BX=2500H,DI=6000H

(58500H)=D456H,CX=0004K,

>指令SAR[BX][DI],CL、指令RCLBYTE

PTR[BX][DI],1執(zhí)行后的結(jié)果各是什么?

>答:指令SAR[BX][DI]執(zhí)行后的結(jié)果是:

(58500H)=FD45H;

>指令RCLBYTEPTR[BX][DI],1執(zhí)行后的

結(jié)果是:(58500H)=ADH

A27、已知DS=5000H,BX=2500H,DI=6000H

(58500H)=C456H,CX=0004H,指令SAR

[BX][DI],CL、指令SHR[BX][DI],CL執(zhí)行

后的結(jié)果各是什么?

>答:指令SAR[BX][DI],CL執(zhí)行后的結(jié)果各

是(58500H)=FC45H;

>指令SHR[BX][DI],CL執(zhí)行后的結(jié)果是:

(58500H)=0C45H

>28.設(shè)SP=2000H,AX=8A95H,DI=A000Ho

請(qǐng)寫(xiě)出下列指令執(zhí)行后指定寄存器和標(biāo)志位的

(to

>ADDAX,DI

>PUSHAX

>POPDI

?答:ADDAX,DI;AX=2A95H,CF=1

>PUSHAX;SP=1FFEH

POPDI;DI=2A95H

>29.8086CPU條件轉(zhuǎn)移指令和SHORT的轉(zhuǎn)移

范圍為多少?

?答:-128-+127

>30、已知CS=4000H,DS=5000H,BX=2500H,

?(52500H)=6800H,(52502H)=5600H,指令JMP

DWORDPTR[BX]、指令JMPWORDPTR

[BX]執(zhí)行后程序的轉(zhuǎn)移地址各是多少?

>答:指令JMPDWORDPTR[BX]執(zhí)行后程序

的轉(zhuǎn)移地址是CS=5600H,IP=6800H。

>指令JMPWORDPTR[BX]執(zhí)行后程序的轉(zhuǎn)

移地址是CS=4000H,IP=68OOH0

A31、指令JMPFARPTRLOP和“JMP

DWORDPTR[D『的功能有何異同?

?答:上述兩條指令都是段間遠(yuǎn)轉(zhuǎn)移指令,

但是偏移地址的來(lái)源不同。

?指令JMPFARPTRLOP執(zhí)行時(shí),目的的

偏移地址在轉(zhuǎn)移指令第2、3字節(jié)中,段地

址在轉(zhuǎn)移指令第4、5字節(jié)中。

>指令“JMPDWORDPTR[D『時(shí),目的

偏移地址在存儲(chǔ)單元DS:DI中,目的段地

址在存儲(chǔ)單元DS:DI+2中。

A32、指令“JMPBX”和“JMP

WORDPTR[BX『的功能有何異同?

?答:上述兩條指令都是段內(nèi)近轉(zhuǎn)移指令,

但是偏移地址的來(lái)源不同。

A指令“JMPX”執(zhí)行時(shí),新的偏移地址在

X寄存器內(nèi)。

>“JMPWORDPTR[BX「時(shí),目的偏移地

址在存儲(chǔ)單元中,該存儲(chǔ)單元的地址在DS:

BX中。

A33、已知AX=0C046H,BX=8FC2H,分析下列程

序每條指令的執(zhí)行結(jié)果?寫(xiě)出程序執(zhí)行后轉(zhuǎn)移到

什么標(biāo)號(hào)執(zhí)行。

>ADDAX,BX;

>JNOL1;

>JNCL2;

>JMPL3;

>答:ADDAX,BX;AX=C046H+8FC2H=5008H;

0F=1,CF=1

>JNOL1;0F=1,不轉(zhuǎn)L1

>JNCL2;CF=1,不轉(zhuǎn)L2

>JMPL3;轉(zhuǎn)L3

>程序執(zhí)行后轉(zhuǎn)移到L3執(zhí)行。

A34、已知AX=4258H,BX=6083H,分析下列

程序每條指令的執(zhí)行結(jié)果?寫(xiě)出程序執(zhí)行后轉(zhuǎn)

移到什么標(biāo)號(hào)執(zhí)行。

ADDAX,BX;AX=4258H+6083H=A2DBH

>;0F=1,CF=O

>JNOL1;OF=1,不轉(zhuǎn)L1

>JNCL2;CF=0,轉(zhuǎn)L2

>JMPL3

>程序執(zhí)行后轉(zhuǎn)移到L2執(zhí)行。

A35、下歹(j串操作指令REP、REPNZ、

REPNZ正確使用是怎樣的?

?答:REPLODSB

>REPSTOSB

>REPMOVB

>REPZCMPS

>REPNZSCASB

>36、已知DS=1000H,ES=3000H,SI=2500,DI=0500H,

>CX=0004H,DF=0,AX=7825H,

>(12500H)=12H,(12501H)=34H

>(12502H)=56H,(12503H)=78H.

>指令REPSTOSB執(zhí)行后結(jié)果是怎樣的?

A答:本題是向目的串中存數(shù)據(jù)的操作

目的串操作地址=ES*10H+DI

=30000H+0500H=30500H

>關(guān)鍵字=AL=25H

>REP重復(fù)次數(shù)=CX=0004

?執(zhí)行后(30500H)=25H,(30501H)=25H,

(30502H)=25H,(30503H)=25H

>或(30500H—30503H)=56H

>37、已知DS=1000H,ES=4000H,SI=2500H,

>DI=0500H,CX=0004H,DF=0,AX=3456H,

>(12500H)=12H,(12501H)=34H,

>(12502H)=56H,(12503H)=78H.

>指令REPMOVSB執(zhí)行后結(jié)果是怎樣的?

?答:本題是串傳送操作

>源串操作地址=DS*10H+SI

>=10000H+2500H=12500H

>目的串操作地址=£5*10m431

>=40000H+0500H=40500H

>REP重復(fù)次數(shù)=CX=0004

A執(zhí)行后(40500H)=12H,(40501H)=34H,

(40502H)=56H,(40503H)=78H

A38、已知DS、SS、ES、CS、AX、X、Sk

DkCX、DX、SP、P、CF、DF、部分內(nèi)存

單元中的內(nèi)容,寫(xiě)出指令SAR、SHR、

JMP、PUSH、REPSTOS、REP

MOVSB.CALL、RET、DAA執(zhí)行后的結(jié)果。

(1)已知

DS=5000H,BX=2500H,(52500H)=6800HJ

(52502H)=5600H,求下列指令執(zhí)行后的轉(zhuǎn)移地

ilto

指令1:JMPWORDPTR[BX];

解:物理地址二DS*10H+BX=52500H,

(52500H)=6800H,執(zhí)行后IP=6800H,CS不變

>指令2:JMPDWORDPTR[BX];

?解:物理地:tlt=DS*10H+BX=52500H,

(52500H)=6800H,(52502H)=5600H

>執(zhí)行后IP=6800H,CS=5600H,程序轉(zhuǎn)移至ij

5600H:6800H執(zhí)行。

A(2)例如:已知DS=5000H,BX=2500H,

DI=6000H(58500H)=B456H,CX=0004H,

求下指令執(zhí)行后的結(jié)果。

A指令1:SAR[BX][DI],CL;

?解:物理地址二DS*10H+BX+DI=58500H

(58500H)=B456H,CL=4

A執(zhí)行后:(58500H)=FB45H

A指令2:SHR[BX][DI],CL;

?解:物理地址二DS*10H+BX+DI=58500H

(58500H)=B456H,CL=4

?執(zhí)行后:(58500H)=OB45H

>已知DS=5000H,BX=2500H,DI=6000H

(58500H)=B456H,CX=0004H,CF=1

>指令3:RCLBYTEPTR[BX][DI],1;

答:OH+BX+DI

=50000H+2500H+6000H=58500H

操作數(shù):(58500H)=56HCF=1

執(zhí)行前:(58500H)=56H=01010110CF=1

執(zhí)行后(58500H)=ADH=1O1O1101CF=O

CF-010101101^CF=1

(3)

例如:已知SS=3200H,SP=0500H,CX=5484H,

A求下指令執(zhí)行后的結(jié)果。

>PUSHCX;SP-2=SP,執(zhí)行后SP=04FEH,

(SS:SP)=(3200H:04FEH)=5484H

?或(324FEH)=5484H

>(4)已知

ES=2000H,DI=0500H,CX=0004H,AX=3456H

>寫(xiě)出執(zhí)行REPSTOSB的操作結(jié)果是怎樣的?

答:本題是向串中存為目的串操作

目的串操作地址=ES*10H+DI

=20000H+0500H=20500H

關(guān)鍵字=AL=56H

REPMM^:S=CX=0004

執(zhí)行后(20500H)=56H(20501H)=56H

(20502H)=56H(20503H)=56H

或(21500H—25003H)=56H

39、已知DS=8000H,SS=4000H,CS=2000H,

ES=9000H,AX=5423H,BX=2000H,SI=2000H,

DI=1000H,CX=0004H,DX=0050H,SP=0300H,

BP=6000H,,DF=0,CF=1

(4A000H)=0500H,(4A002H)=2B00H

(92500H)=87A5H,(8A000H)=3450H

(8A002H)=7700H,(44000H)=B629H

按下列要求回答問(wèn)題。

(1)寫(xiě)出執(zhí)行指令

SHRWORDPTRES:[0500H+BX],CL后的結(jié)果。

答:物理地址=ES*10H+BX+0500H

=9000H*10H+2000H+0500H=92500H

A操作數(shù)(92500H)=87A5H,CL=4,算術(shù)右移4位

?執(zhí)行后(92500H)=F87AH

(2)寫(xiě)出執(zhí)行指令

SARWORDPTR[SI+BP],CL后的結(jié)果。

A答:物理地址=SS*10H+SI+BP

>=4000H*10H+2000H+2000H=44000H

?操作數(shù)(44000H)=B629H,CL=4,算術(shù)右移4位

>執(zhí)行后(44000H)=FB62H

(3)寫(xiě)出執(zhí)行指令

>JMPDWORDPTR[3000H+DI+BP]后的轉(zhuǎn)移地址

是多少?

>0H+3000H+DI+BP

>=4000H*10H+3000H+1000H+6000H=4A000H

>操作數(shù)(4A000H)=0500H,(4A002H)=2B00H

>執(zhí)行后CS=2B00HIP=0500H

A40、閱讀分析下列指令序列

>ADDAX,BX

>JNOL1

>JNCL2

>SUBAX,BX

>JNCL3

>JNOL4

>JMPL5

>若AX和BX的初始值分別如下列五種情況所示,則

執(zhí)行該指令序列后,程序?qū)⒎謩e轉(zhuǎn)向何處執(zhí)行(注:

即寫(xiě)出轉(zhuǎn)移去的目的地址L1?L5中的一個(gè))

(1)AX=14C6H,BX=80DCH

ADDAX,BX;AX=14C6H+80DCH=95A2H

;OF=0,CF=O

JNOL1;OF=0,轉(zhuǎn)L1

JNCL2

SUBAX,BX

JNCL3

JNOL4

JMPL5

(2)AX=0B568H,BX=54B7H

ADDAX,BX;AX=B568H+54B7H=0A1FH,

;OF=0,CF=1

JNOL1;OF=0,轉(zhuǎn)L1

JNCL2

SUBAX,BX

JNCL3

JNOL4

JMPL5

(3)AX=42C8H,BX=608DH

ADDAX,BX;AX=42C8H+608DH=A355H

;0F=1,CF=O

JNOL1;0F=1,不轉(zhuǎn)L1

JNCL2;CF=0,轉(zhuǎn)L2

SUBAX,BX

JNCL3

JNOL4

JMPL5

(4)AX=0D023H,BX=9FD0H

ADDAX,BX;AX=D023H+9FD0H=6FF3H

;0F=1,CF=1

JNOL1;0F=1,不轉(zhuǎn)L1

JNCL2;CF=1.不轉(zhuǎn)L2

SUBAX,BX;AX=6FF3H-9FD0H=D023H

;0F=1,CF=1

JNCL3;CF=1.不轉(zhuǎn)L3

JNOL4;OF=1.不轉(zhuǎn)L4

JMPL5;轉(zhuǎn)L5

(5)AX=9FD0H,BX=0D023H

ADDAX,BX;AX=9FD0H+D023H=6FF3H

;0F=1,CF=1

JNOL1;0F=1,不轉(zhuǎn)L1

JNCL2;CF=1,不轉(zhuǎn)L2

SUBAX,BX;AX=6FF3H-D023H=9FD0H

;0F=1,CF=1

JNCL3;CF=1.不轉(zhuǎn)L3

JNOL4;OF=1.不轉(zhuǎn)L4

JMPL5;轉(zhuǎn)L5

第四章匯編語(yǔ)言程序設(shè)計(jì)

>1>PTR運(yùn)算符有何功能?

?答:可以重新指定存儲(chǔ)器操作數(shù)的類(lèi)型,

可以重新指定轉(zhuǎn)移指令的轉(zhuǎn)移類(lèi)型。

A2、存儲(chǔ)器數(shù)據(jù)類(lèi)型有什么要求,如何解決

類(lèi)型不確定?

?答:存儲(chǔ)器數(shù)據(jù)類(lèi)型要求類(lèi)型匹配,用

PTR可以說(shuō)明和重新指定變量或標(biāo)號(hào)的類(lèi)

型滿足類(lèi)型匹配。

?例如:INT[BX]?一類(lèi)型不確定

正確的寫(xiě)法:INTBYTEPTR[BX]字節(jié)

類(lèi)型

>INTWORDPTR[BX]——字類(lèi)型

A例如:XDW1234H------字屬性

>MOVAL,X——類(lèi)型錯(cuò)誤

正確的寫(xiě)法:MOVAL,BYTEPTRX;

AL=34H

>3.分析下列程序段每條指令的執(zhí)行結(jié)果和

程序?qū)崿F(xiàn)的功能?

>XDW10

>MOVAX,X

>SALAX,1

>MOVBX,AX

>SALAX,1

>ADDAX,BX

>ADDAX,X

>RET

?答:

>XDW10

>MOVAX,X;AX=X

>SALAX,1;AX=2X

>MOVBX,AX;BX=2X

>SALAX,1;AX=4X

>ADDAX,BX;AX=6X

>ADDAX,X;AX=7X

?執(zhí)行后的結(jié)果AX=46H或70,實(shí)現(xiàn)了XX7

的功能。

>4.分析下列程序段每條指令的執(zhí)行結(jié)果和

程序?qū)崿F(xiàn)的功能?

>XDB10

>MOVAL,X

>SALAL,1

>MOVBL,AL

>SALAL,1

>SALAL,1

>ADDAL,BL

?答:XDB10

>MOVAL,X;AL=X

>SALAL,1;AL=2X

>MOVBL,AL;BL=2X

>SALAL,1;AL=4X

SALAL,1

ADDAL,BL;AL=10X

>執(zhí)行后的結(jié)果AL=64H或100,實(shí)現(xiàn)了X

X10的功能。

>5、查表程序如下,分析該程序?qū)懗龀绦驁?zhí)行后的

結(jié)果。

>DATASEGMENT

>TABLEDW0,1,4,9,16,25,36,49,64,81,100,121,

144,169,196,225,256,289,324,361,400

>XDB17;

>YDW?;

>DATAENDS

>;定義代碼段

>CODESEGMENT

>ASSUMECS:CODE,DS:DATA

>START:MOVAX,DATA

>MOVDS,AX;

MOVBX,OFFSETTABLE;

MOVAL,X;

MOVAH,0;

SHLAX,1

ADDBX,AX

MOVAX,[BX];

MOVY,AX;

MOVAH,4CH

INT21H;

CODEENDS

ENDSTART

答:Y=289或91H

>6、查表程序如下,分析該寫(xiě)出程序執(zhí)行后的結(jié)果。

>DATASEGMENT

>TABLEDB0,1,4,9,16,25,36,49,64,81,100,121,

144,169,196,225;

>XDB14;

>YDB?;

>DATAENDS

>CODESEGMENT

>ASSUMECS:CODE,DS:DATA

>START:MOVAX,DATA

>MOVDS,AX;

>MOVBX,OFFSETTABLE

>MOVAL,X;

>MOVAH,0;

>ADDBX,AX

>MOVAL,[BX]

>MOVY,AL;

>MOVAH,4CH

>INT21H;

>CODEENDS

>ENDSTART

?答:Y=196或C4H

>7.分析下列程序段每條指令的執(zhí)行結(jié)果和程序?qū)?/p>

現(xiàn)的功能?

>MOVAX,86H

>MOVBL,17H

>CALLXYZ

>JNCL

>INCAH

>MOVX,AX

HLT

>XYZPROC

>ADDAL,BL

>DAA

>RET

>XYZENDP

>MOVAX,86H;AX=0086H

>MOVBL,17H;BL=17H

>CALLXYZ;

>JNCL;CF=0,轉(zhuǎn)L

>INCAH;CF=1,AH-AH+1,AH=1

>MOVX,AX;X=0103H

>HLT;

>XYZPROC

>ADDAL,BL;AL=9DH,CF=0

>DAA;AL=03H,CF=1

>RET

>XYZENDP

>程序?qū)崿F(xiàn)的功能是完成兩個(gè)BCD碼數(shù)求和(86+17),進(jìn)

位加在AH中,和值(103)存入X字單元

>8.分析下列程序段每條指令的執(zhí)行結(jié)果和程序?qū)?/p>

現(xiàn)的功能?。

>MOVAL,26H

>MOVDL,48H

>CALLABC

>MOVX,AL

>HLT

>ABCPROC

>ADDAL,DL

>DAA

>RET

>ABCENDP

>答:

>MOVAL,26H;AL=26H

>MOVDL,48H;DL=48H

>CALLABC;

>MOVX,AL;X=74H

>HLT;

>ABCPROC

>ADDAL,DL;AL=6EH,CF=0

>DAA;AL=74H,CF=0

>RET;

>ABCENDP

>程序?qū)崿F(xiàn)的功能是完成兩個(gè)BCD碼求和

(36+48),和值(74)存入X單元

>9.宏定義如下:

>ABC:MACROX,Y,Z

>ROLX,1

>MULY,Z

>ENDM

>寫(xiě)出宏調(diào)用ABC:DX,AX,[DI]后的宏展

開(kāi)的指令.

?答:ROLDX,1

>MULAX,[DI]

>10.宏定義如下:

>ABC:MACROX,Y,Z

>NEGX

>ADDY,Z

>ENDM

?寫(xiě)出宏調(diào)用ABC:[DI],DX,[BX+SI]后的

宏展開(kāi)的指令。

?答:NEG[DI]

ADDDX,[BX+SI]

11、掌握匯編語(yǔ)言程序的編程格式一段定義、段

說(shuō)明、段結(jié)束、返回DOS。

12、掌握匯編語(yǔ)言中常量、標(biāo)識(shí)符、表達(dá)式。

A二進(jìn)制:10001101B

A十進(jìn)制:2532D、-256D、2536

?十六進(jìn)缶U:2532H、0FAC8H、

ABCDH--OABCDH

標(biāo)識(shí)符:包括段名、變量名、過(guò)程名、標(biāo)號(hào)。

A13、掌握匯編語(yǔ)言中數(shù)據(jù)定義語(yǔ)句。

DB、DD、DW、DQ、DT

14、掌握匯編語(yǔ)言中變量的屬性和數(shù)據(jù)的類(lèi)型。

段地址、偏移地址、類(lèi)型屬性(字節(jié)BYTE、字

WORD、雙字DWORD)

15、掌握匯編語(yǔ)言中標(biāo)號(hào)的屬性。

段地址、偏移地址、類(lèi)型屬性(段內(nèi)NEAR、段

間FAR)

A16、掌握匯編語(yǔ)言中的DOS功能調(diào)用的方法

(單個(gè)字符輸入輸出、串字符輸入輸出)。

?例1:鍵入單個(gè)字符,判斷是否為回車(chē),是

轉(zhuǎn)EXIT,否則轉(zhuǎn)L.

>MOVAH,1

>INT21H

>CMPAL,ODH

>JEEXIT

>JMPL

>EXIT:

>例2:顯示單個(gè)字符數(shù)字6

>MOVDL,36H

>MOVAH,2

>INT21H

例3:用2號(hào)調(diào)用顯示字符串

MSGDB'ThismessagewasdisplayedwithDOSfunction021T

MSGLENEQU$-MSG;計(jì)算數(shù)據(jù)個(gè)數(shù)

MOVCX,MSGLEN;取數(shù)據(jù)個(gè)數(shù)做循環(huán)次數(shù)

MOVSLOFFSETMSG;設(shè)指針

MOVAH,02H;

NEXT:MOVDL,[SI];取輸出字符

INT21H;輸出顯示

INCSI;指向下一個(gè)數(shù)據(jù)

LOOPNEXT;循環(huán)輸出顯示

字符串輸入(0A號(hào)功能調(diào)用),功能:從鍵盤(pán)接收字符

串存入內(nèi)存的鍵盤(pán)輸入緩沖區(qū)。

調(diào)用方法:

①預(yù)先在內(nèi)存定義一個(gè)鍵盤(pán)輸入緩沖區(qū)。緩沖區(qū)的第一

個(gè)字節(jié)為指定緩沖區(qū)能接收的字符個(gè)數(shù),第二個(gè)字節(jié)

保留以用作由系統(tǒng)自動(dòng)填寫(xiě)實(shí)際輸入字符的個(gè)數(shù),第

三個(gè)字節(jié)開(kāi)始存放從鍵上輸入的實(shí)際字符ASCH碼。

例如:定義一個(gè)輸入不超過(guò)50個(gè)字符的輸入緩沖區(qū)。

BUFDB50,?,50DUP(?)

②字符的輸入緩沖區(qū)首地址送DS:DX

③執(zhí)行:MOVAH,OAH;

INT21H;用戶鍵入字符串

?完成從鍵盤(pán)接收字符串存到指定內(nèi)存的輸入緩沖

區(qū),直到輸入回車(chē)符為止,由系統(tǒng)自動(dòng)填寫(xiě)實(shí)際

輸入字符的個(gè)數(shù)存入第二個(gè)字節(jié),從第三個(gè)字節(jié)

開(kāi)始存放從鍵上輸入的字符ASCH碼。

?若實(shí)際輸入的字符數(shù)少于定義的字節(jié)數(shù),則緩沖

區(qū)內(nèi)其余字節(jié)補(bǔ)零;若實(shí)際輸入多于定義的字節(jié)

數(shù),則多余字符丟棄,且響鈴。

例:利用OAH號(hào)功能調(diào)用,從鍵盤(pán)輸入最多為80個(gè)字符的字符串

存入以BUF為首址的緩沖區(qū)中。

DATASEGMENT

BUFDB80,?,80DUP(?)

DATAENDS

START:MOVAX,DATA

MOVDS,AX;緩沖區(qū)段地址-DS

LEADX,BUF;取緩沖區(qū)偏移一DX

MOVAH,OAH

INT21H

MOVBXQFFSETBUF;指向輸入緩沖區(qū)

INCBX;指向?qū)嶋H輸入字符個(gè)數(shù)單元

MOVCX,[BX];取字符個(gè)數(shù)做循環(huán)次數(shù)

INCBX;指向?qū)嶋H字符存放單元

L:MOVAL,[BX];取輸入的字符

......;字符處理

INCBX;指向下一單元

LOOPL;循環(huán)

A17、掌握在字符串中查找關(guān)鍵字并統(tǒng)計(jì)關(guān)鍵

字個(gè)數(shù)的編程

>例:設(shè)BUF中定義了一批大小寫(xiě)字母,統(tǒng)計(jì)大小

寫(xiě)字母的個(gè)數(shù)存入X、Y單元

?大寫(xiě)字母A--Z:41H—5AH,小寫(xiě)字母a—z:

61H—7AH

>BUFDB4uhwddlksfklfdSDKFDSF,

>COUNTEQU$-BUF

>XDB?

>YDB?

MOVBX,OFFSETBUF

MOVCX,COUNT

>MOVDX,0

>L2:MOVAL,[BX]

>CMPAL,41H

>JBL

>CMPAL,5AH

>JAL1

>INCDL

>JMPL

>L1:CMPAL,61H

>JBL

>CMPAL,7AH

>JAL

>INCDH

>L:INCBX

>LOOPL2

A18、掌握在字符串中查找關(guān)鍵字,找到了存

儲(chǔ)關(guān)鍵字的地址,未找到存標(biāo)志。

A例:編程從鍵盤(pán)輸入不超過(guò)100個(gè)字符的字

符串,輸入后編寫(xiě)程序在該字符串中查找是

否有,若有就將地址存入A單元;若無(wú)

貝I)將FFFF存入A。

解:定義數(shù)據(jù)段

DATASEGMENT

DATDB100,?,100DUP(?);

ADW?

DATAENDS

;定義代碼段

CODESEGMENT

ASSUMECS:CODE,DS:DATA

;初始化DS段(0.5分)

START:MOVAX,DATA

MOVDS,AX

;鍵盤(pán)輸入

MOVDX,OFFSETBUF

MOVAH,OAH

INT21H

;其他初始化

MOVBX,OFFSETDAT

INCBX

MOVCX,[BX]

INCBX

;查找

LO:MOVAL,[BX]

CMPAL,

JZL1

INCBX

LOOPLO

MOVA,OFFFFH;

JMPEXIT

L1:MOVA,BX;

;返回DOS

EXIT:MOVAH,4CH

INT21H

CODEENDS

ENDSTART

19、掌握在字符串中查找關(guān)鍵字并做替換的編

例:編寫(xiě)程序?qū)崿F(xiàn)從數(shù)據(jù)段以DAT為首地址的

字符串中尋找所有的‘丫’字符,找到后替換

為‘X,,該字符串以O(shè)DH(回車(chē))結(jié)尾,字

符的個(gè)數(shù)不大于50個(gè)。

>數(shù)據(jù)段定義

>DATASEGMENT

>DATDB'ABCA.................10DH

>COUNTDB?

>DATAENDS

;代碼段定義

CODESEGMENT

ASSUMECD:CODE,DS:DATA

;初始化DS段

START:MOVAX,DATA

MOVDS,AX

;初始化

MOVBX,OFFSETDAT

MOVDL,0

;循環(huán)查詢(xún)

L3:MOVAL,[BX]

;判結(jié)束

CMPAL,0DH

JEL1

;判‘丫’

CMPAL,‘丫’

JNEL2

;查到'Y\統(tǒng)計(jì)

MOV[BX],X

;修改指針,循環(huán)

L2:INCBX

JMPL3

;保存結(jié)果,返回DOS

LI:

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

>20、掌握子程序調(diào)用及子程序中實(shí)現(xiàn)BCD運(yùn)算的程序。舉例

>MOVAL,29H;

MOVBL,76H;

CALLSUBO;

INCAL;

DECCL;

I

I

I

SUBOPROC

ADDAL,BL;

MOVCL,AL;

DAA;

RET;

SUBOENDP

>上程序段運(yùn)行后,AL=_06H,CL=9EH

A21、編程從鍵盤(pán)輸入一個(gè)字符串(長(zhǎng)度<50),

蒯入后在該字符串中搜索是否有需要查找的關(guān)鍵

學(xué),如果有則顯示“丫”,否則顯示“N”

>解:;定義數(shù)據(jù)段

>DATASEGMENT

>BUFDB50,?,50DUP(?);

>YDBODH,OAH,'Y$,

>NDBODH,OAH,'N$'

>DATAENDS

>;定義代碼段及結(jié)束DOS

>CODESEGMENT

>ASSUMECS:CODE,DS:DATA

>;初始化DS段

>START;MOVAX,DATA

>MOVDS,AX

>;鍵盤(pán)輸入

>MOVDX,OFFSETBUF

>MOVAH,OAH

>INT21H

>;鍵盤(pán)輸入關(guān)鍵字

>MOVAH,01H

>INT21H

>;其他初始化

>MOVBX,OFFSETBUF

>INCBX

>MOVCX,[BX]

>INCBX

>;查找關(guān)鍵字

>L0:CMPAL,[BX]

>JZL1

>INCBX

>LOOPLO

>;未找到關(guān)鍵字,顯示'N1

>MOVDX,OFFSETN

>MOVAH,09H

>INT21H

>JMPEXIT:

>;找到關(guān)鍵字,顯示‘Y'

>L1:M0VDX,OFFSETY

>MOVAH,09H

>INT21H

>;返回DOS

>EXIT:MOVAH,4CH

>INT21H

>CODEENDS

>ENDSTART

A22、編程從鍵盤(pán)輸入一個(gè)字符串(長(zhǎng)度<9),

輸入后在該字符串中搜索是否有需要查找的關(guān)鍵字,

有則統(tǒng)計(jì)關(guān)鍵字的個(gè)數(shù),統(tǒng)計(jì)結(jié)束后存入X單元

并顯示關(guān)鍵字的個(gè)數(shù)。

>解:;定義數(shù)據(jù)段

>DATASEGMENT

>BUFDB10,?,10DUP(?);

>XDB?

>DATAENDS

>;定義代碼段及結(jié)束DOS

>CODESEGMENT

>ASSUMECS:CODE,DS:DATA

>;初始化DS段

>START;MOVAX,DATA

>MOVDS,AX

>;鍵盤(pán)輸入

>MOVDX,OFFSETBUF

>MOVAH,OAH

>INT21H

>;鍵盤(pán)輸入關(guān)鍵字

>MOVAH,01H

>INT21H

>;其他初始化

>MOVBX,OFFSETBUF

>INCBX

>MOVCX,[BX]

>INCBX

>MOVDL,0

>;查找關(guān)鍵字并統(tǒng)計(jì)個(gè)數(shù)

>LO:CMPAL,[BX]

>JNZL1

>INCDL

>L1:INCBX

>LOOPLO

>;搜索結(jié)束后保存關(guān)鍵字個(gè)數(shù)

>MOVX,DL

>;找到關(guān)鍵字,顯示關(guān)鍵字個(gè)數(shù)

>ORDL,30H

>MOVAH,2

>INT21H

?;返回DOS

>EXIT:MOVAH,4CH

>INT21H

>CODEENDS

>ENDSTART

第五章存儲(chǔ)器及接口

1、系統(tǒng)地址總線的位數(shù)與尋址的存儲(chǔ)空間有何

關(guān)系?

A答:設(shè)地址為n位,尋址的存儲(chǔ)空間=2n

A例如:n=10可尋址1024個(gè)存儲(chǔ)單元(1K)

>n=11可尋址2048個(gè)存儲(chǔ)單元(2K)

>n=12可尋址4096個(gè)存儲(chǔ)單元(4K)

>n=13可尋址8192個(gè)存儲(chǔ)單元(8K)

>n=14可尋址16384個(gè)存儲(chǔ)單元(16K)

>n=15可尋址32768個(gè)存儲(chǔ)單元(32K)

n=16可尋址65536個(gè)存儲(chǔ)單元(64K)

n=l7可尋址128Kn=18可尋址256K

n=19可尋址512K

>n=20可尋址1Mn=21可尋址2M

>n=22可尋址4Mn=23可尋址8M

>n=24可尋址16Mn=25可尋址32M

n=26可尋址64Mn=27可尋址128M

>n=28可尋址256Mn=29可尋址512M

A2、已知一個(gè)SRAM芯片的容量為8KX8和

64KX8,地址線、數(shù)據(jù)線各為多少?

?答:SRAM芯片的容量為8KX8:地址線13

條,數(shù)據(jù)線8條

>SRAM芯片的容量為64Kx8,地址線16條、

數(shù)據(jù)線8條

?3、微機(jī)存儲(chǔ)器系統(tǒng)常用哪幾種芯片?芯片有哪些引

腳?與系統(tǒng)的鏈接是怎樣的?

?答:系統(tǒng)常用存儲(chǔ)芯片有:SRAM、EPROM

ASRAM芯片的引腳:數(shù)據(jù)線I/08—1/01,接系統(tǒng)的

D7—DO

?地址線Am--AO9接系統(tǒng)的Am?—AO,m—由芯片容

量決定

>輸出允許加:接廂而

>讀寫(xiě)控制WE:接

溫馨提示

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