版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度新能源汽車(chē)充電樁車(chē)位銷(xiāo)售及售后服務(wù)協(xié)議4篇
- 2024綠植養(yǎng)護(hù)服務(wù)合同-住宅小區(qū)綠化帶維護(hù)與管理3篇
- 2025年度棉被定制設(shè)計(jì)與生產(chǎn)合同4篇
- 2025年度車(chē)輛抵押擔(dān)保融資租賃合同參考范本4篇
- 二零二五年度住宅小區(qū)停車(chē)位租賃及收費(fèi)標(biāo)準(zhǔn)合同
- 二零二四年臨時(shí)工勞動(dòng)保障與勞動(dòng)關(guān)系調(diào)整合同3篇
- 二零二五年度租賃型房屋租賃合同附帶租客培訓(xùn)3篇
- 2025版微股東眾籌入股協(xié)議書(shū)-科技創(chuàng)業(yè)領(lǐng)域?qū)S?篇
- 2025年中國(guó)海產(chǎn)行業(yè)市場(chǎng)發(fā)展前景及發(fā)展趨勢(shì)與投資戰(zhàn)略研究報(bào)告
- 2025年中國(guó)無(wú)菌包裝機(jī)行業(yè)市場(chǎng)全面調(diào)研及投資潛力預(yù)測(cè)報(bào)告
- 2024年公需科目培訓(xùn)考試題及答案
- 2024年江蘇鑫財(cái)國(guó)有資產(chǎn)運(yùn)營(yíng)有限公司招聘筆試沖刺題(帶答案解析)
- 2024年遼寧石化職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)含答案
- 廣西桂林市2023-2024學(xué)年高二上學(xué)期期末考試物理試卷
- 財(cái)務(wù)指標(biāo)與財(cái)務(wù)管理
- 部編版二年級(jí)下冊(cè)道德與法治第三單元《綠色小衛(wèi)士》全部教案
- 【京東倉(cāng)庫(kù)出庫(kù)作業(yè)優(yōu)化設(shè)計(jì)13000字(論文)】
- 保安春節(jié)安全生產(chǎn)培訓(xùn)
- 初一語(yǔ)文上冊(cè)基礎(chǔ)知識(shí)訓(xùn)練及答案(5篇)
- 血液透析水處理系統(tǒng)演示
- GB/T 27030-2006合格評(píng)定第三方符合性標(biāo)志的通用要求
評(píng)論
0/150
提交評(píng)論