版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
______________________________________________________________________________________________________________
第1章緒論作業(yè)
1.將下列二進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù)。
(1)11001010B=202(2)00111101B=61
(3)01001101B=77(4)10100100B=164
3.將下列十進(jìn)制數(shù)分別轉(zhuǎn)換為二進(jìn)制數(shù)和十六進(jìn)制數(shù)。
(2)76=1001100B=4CH
(4)134=10000110B=86H
4.求下列十進(jìn)制數(shù)的BCD碼
(1)327=1100100111(BCD碼)
(2)1256=1001001010110(BCD碼)
6.求出下列10進(jìn)制數(shù)的原碼、反碼和補(bǔ)碼
(2)+85(4)-85
解:85=01010101B
原碼:+85=01010101B-85=11010101B
反碼:+85=01010101B-85=10101010B
補(bǔ)碼:+85=01010101B-85=10101011B
10.畫(huà)出微型計(jì)算機(jī)的基本結(jié)構(gòu)框圖,說(shuō)明各部分的主要功能是什么?
解:
微型計(jì)算機(jī)的基本結(jié)構(gòu)框圖如下:
微處理器地址總線
存儲(chǔ)器I/O接口I/O設(shè)備
CPUI/O總線
數(shù)據(jù)總線
控制總線
微處理器CPU:控制微處理器與存儲(chǔ)器或I/O設(shè)備間的數(shù)據(jù)交換;進(jìn)行算術(shù)和邏輯運(yùn)算等操作;判定和控
制程序流向。
微處理器主要完成:
(1)指令控制:從存儲(chǔ)器中取指令,指令譯碼;
(2)數(shù)據(jù)加工:簡(jiǎn)單的算術(shù)邏輯運(yùn)算;
(3)操作控制:在微處理器和存儲(chǔ)器或者I/O之間傳送數(shù)據(jù);
(4)時(shí)間控制:程序流向控制。
存儲(chǔ)器:用來(lái)存放數(shù)據(jù)和指令。
I/O接口:主機(jī)和外設(shè)間的橋梁,提供數(shù)據(jù)緩沖驅(qū)動(dòng)、信號(hào)電平轉(zhuǎn)換、信息轉(zhuǎn)換、地址譯碼、定時(shí)控制等
-可編輯修改-
______________________________________________________________________________________________________________
各種功能。
I/O設(shè)備:輸入原始數(shù)據(jù)和程序,轉(zhuǎn)換成計(jì)算機(jī)能識(shí)別的信息,送入存儲(chǔ)器去等待處理。輸出運(yùn)算結(jié)果。
總線:連接計(jì)算機(jī)系統(tǒng)中各功能部件的信息通道。
第2章8086CPU作業(yè)
2.8086CPU內(nèi)部由哪兩部分組成?它們的大致是如何工作的?
答:
(1)8086CPU由指令執(zhí)行部件EU和總線接口部件BIU兩部分組成。
(2)
①BIU先執(zhí)行讀存儲(chǔ)器操作,從給定地址單元中取出指令,送到先進(jìn)先出的指令隊(duì)列中等待執(zhí)行。
存儲(chǔ)器的物理地址=CS16+IP,在地址加法器中形成。
②EU從指令隊(duì)列中取走指令,經(jīng)EU控制器譯碼分析后,向各部件發(fā)控制命令,以完成執(zhí)行指令的操
作。BIU與EU是并行工作方式。
③當(dāng)指令隊(duì)列已滿,EU在執(zhí)行指令,未向總線接口單元BIU申請(qǐng)讀/寫(xiě)內(nèi)存或I/O操作時(shí),BIU處于
空閑狀態(tài)。
④指令執(zhí)行過(guò)程中,若需對(duì)存儲(chǔ)器或I/O端口存取數(shù)據(jù),EU就要求BIU去完成相應(yīng)的總線周期。
5.兩個(gè)帶符號(hào)數(shù)10110100B和11000111B相加,運(yùn)算后各標(biāo)志位的值等于多少?哪些標(biāo)志位是有
意義的?如果把這兩個(gè)數(shù)當(dāng)成無(wú)符號(hào)數(shù),相加后哪些標(biāo)志位是有意義的?
解:
(1)兩個(gè)帶符號(hào)數(shù):不考慮CF標(biāo)志
10110100
+11000111
101111011
運(yùn)算后各標(biāo)志位狀態(tài)如下:
CF=1,有進(jìn)位,對(duì)于帶符號(hào)數(shù),無(wú)意義。
PF=1,結(jié)果有偶數(shù)個(gè)1
AF=0,無(wú)半進(jìn)位,非BCD碼運(yùn)算,無(wú)意義。
ZF=0,結(jié)果非0
SF=0,結(jié)果為正數(shù)
OF=1,溢出(兩個(gè)負(fù)數(shù)相加,結(jié)果變成了正數(shù))
(2)兩個(gè)無(wú)符號(hào)數(shù):不考慮SF和OF標(biāo)志
10110100
+11000111
101111011
運(yùn)算后各標(biāo)志位狀態(tài)如下:
CF=1,有進(jìn)位
PF=1,結(jié)果有偶數(shù)個(gè)1
ZF=0,結(jié)果非0
AF、SF、OF無(wú)意義。
20.簡(jiǎn)要解釋下列名詞的意義。
CPU:中央處理單元CPU(ControlProcessingUnit)也稱微處理器,是微型計(jì)算機(jī)的核心部件,由
運(yùn)算器ALU、控制器、寄存器組以及總線接口等部件組成。主要完成各種運(yùn)算,負(fù)責(zé)對(duì)整機(jī)的控制。
存儲(chǔ)器:用于存儲(chǔ)程序和數(shù)據(jù)的硬件設(shè)備。
堆棧:堆棧是一種數(shù)據(jù)結(jié)構(gòu),是內(nèi)部RAM的一段區(qū)域。設(shè)置堆棧的目的是用于數(shù)據(jù)的暫存,中斷、子
程序調(diào)用時(shí)斷點(diǎn)和現(xiàn)場(chǎng)的保護(hù)與恢復(fù)。
IP:指令指針寄存器,用于控制CPU的指令執(zhí)行順序(只存放偏移量),只能和代碼段寄存器CS配合
使用,可以確定當(dāng)前所要取的指令的內(nèi)存地址,且始終指向代碼段中下一條將要讀取到CPU指令隊(duì)列的那
條指令。順序執(zhí)行程序時(shí),CPU每取一個(gè)指令字節(jié),IP自動(dòng)加1,指向下一個(gè)要讀取的字節(jié)。
SP:堆棧指針寄存器,用于指示堆棧的棧頂?shù)刂菲屏康募拇嫫?,它決定了堆棧在內(nèi)部RAM中的物理
位置。只能和SS段寄存器配合使用,且始終指向堆棧的棧頂,在堆棧指令中隱含的使用它來(lái)定位棧頂數(shù)據(jù)。
BP:基址指針寄存器。用于存放偏移量,通常和SS段寄存器配合使用,在間接尋址中用于定位堆棧段
中的內(nèi)存單元。
段寄存器:由于CPU內(nèi)部的寄存器都是16位的,為了能夠提供20位的物理地址,8086系統(tǒng)中采用了
存儲(chǔ)器分段的方法。規(guī)定存儲(chǔ)器的一個(gè)段為64KB,由段寄存器來(lái)確定存儲(chǔ)單元的段基址,由指令提供該單
元相對(duì)于相應(yīng)段起始地址的16位偏移量。
狀態(tài)標(biāo)志:表示前一步操作(如加、減等)執(zhí)行以后,ALU所處的狀態(tài),后續(xù)操作可以根據(jù)這些狀態(tài)
-可編輯修改-
______________________________________________________________________________________________________________
標(biāo)志進(jìn)行判斷,實(shí)現(xiàn)轉(zhuǎn)移。
控制標(biāo)志:可以通過(guò)指令人為設(shè)置,用以對(duì)某一種特定的功能起控制作用(如中斷屏蔽等),反映了人
們對(duì)微機(jī)系統(tǒng)工作方式的可控制性。
物理地址:存儲(chǔ)器的實(shí)際地址,它是指CPU和存儲(chǔ)器進(jìn)行數(shù)據(jù)交換時(shí)所使用的地址。物理地址是由段
地址與偏移地址共同決定的,計(jì)算物理地址的表達(dá)式為:
物理地址=段地址×16+偏移地址
邏輯地址:是在程序中使用的地址,它由段地址和偏移地址兩部分組成。
邏輯地址的表示形式為“段地址:偏移地址”。
機(jī)器語(yǔ)言:直接用二進(jìn)制編碼表述的指令系統(tǒng)語(yǔ)言,通常稱為機(jī)器語(yǔ)言,機(jī)器語(yǔ)言指令是計(jì)算機(jī)惟一
能直接識(shí)別和執(zhí)行的指令。
匯編語(yǔ)言:便于記憶和使用,通常使用匯編語(yǔ)言(符號(hào)指令或指令助記符)來(lái)描述計(jì)算機(jī)的指令系統(tǒng)。
指令:讓計(jì)算機(jī)完成某種操作的命令稱為指令。
指令系統(tǒng):一臺(tái)計(jì)算機(jī)所能識(shí)別、執(zhí)行的指令的集合就是它的指令系統(tǒng)。
總線:連接計(jì)算機(jī)系統(tǒng)中其他主要功能部件的橋梁,是計(jì)算機(jī)系統(tǒng)中信息輸送的樞紐,只有通過(guò)總線,
計(jì)算機(jī)系統(tǒng)的各部件才能實(shí)現(xiàn)相互通信。
內(nèi)部總線:微處理器內(nèi)部各個(gè)器件之間傳送信息的通路。
系統(tǒng)總線:微處理機(jī)機(jī)箱內(nèi)的底板總線。可分為:ISA、EISA、VESA局部總線、PCI局部總線等。
時(shí)鐘周期:CPU時(shí)鐘頻率的倒數(shù)稱為時(shí)鐘周期,也稱T狀態(tài)。
總線周期:BIU完成一次訪問(wèn)存儲(chǔ)器或I/O端口操作所需要的時(shí)間稱為總線周期。一個(gè)基本的總線周
期是由4個(gè)(或4個(gè)以上)時(shí)鐘周期組成的。
指令周期:執(zhí)行一條指令所需要的時(shí)間稱為指令周期,不同指令的指令周期的長(zhǎng)短是不同的。一個(gè)指
令周期是由幾個(gè)總線周期組成的。
21.要完成下列運(yùn)算和控制,用什么標(biāo)志判別?其值是什么?
(1)比較兩數(shù)是否相等?
(2)兩數(shù)運(yùn)算后結(jié)果是正數(shù)還是負(fù)數(shù)?
(3)兩數(shù)相加后是否溢出?
(4)奇偶校驗(yàn)判斷。
(5)兩數(shù)相減后比較大小。
(6)中斷信號(hào)能否允許?
答:
(1)比較兩數(shù)是否相等:兩數(shù)相減后用零標(biāo)志ZF判斷,ZF=1,則相等。
(2)兩數(shù)運(yùn)算后結(jié)果是正數(shù)還是負(fù)數(shù):用符號(hào)標(biāo)志SF判斷,SF=1,則結(jié)果為負(fù)數(shù)。
(3)兩數(shù)相加后是否溢出:用溢出標(biāo)志OF判斷,OF=1,則有溢出。
(4)奇偶校驗(yàn)判斷:采用偶校驗(yàn)方式,判定是否要補(bǔ)“1”?用奇偶標(biāo)志PF判斷,若數(shù)據(jù)結(jié)果低8位中
含有偶數(shù)個(gè)“1”,則PF=1;不用補(bǔ)“1”。
(5)兩數(shù)相減后比較大?。篫F=1,兩數(shù)相等。對(duì)于無(wú)符號(hào)數(shù),CF=1,則被減數(shù)小于減數(shù);CF=0,則被
減數(shù)大于減數(shù);ZF=1,則兩數(shù)相等。對(duì)于帶符號(hào)數(shù),SF⊕OF=1,則被減數(shù)小于減數(shù);SF⊕OF=0,則被減數(shù)
大于減數(shù)。
(6)中斷信號(hào)能否允許:用中斷允許標(biāo)志IF判斷,IF=1,則能允許可屏蔽中斷。
22.說(shuō)明8086系統(tǒng)中“最小模式”和“最大模式”兩種工作方式的主要區(qū)別。
最小模式(最小工作方式):?jiǎn)挝⑻幚砥飨到y(tǒng)(系統(tǒng)中只有一個(gè)8086微處理器),所有的總線控制信
號(hào),都是直接由8086CPU產(chǎn)生的,適用于規(guī)模較小的微機(jī)應(yīng)用系統(tǒng)。
當(dāng)把8086的33腳MN/MX接+5V時(shí),8086CPU就處于最小工作方式。
最大模式(最大工作方式):多微處理器系統(tǒng)(包含有兩個(gè)或多個(gè)微處理器,一個(gè)主處理器8086CPU,
其他的處理器稱為協(xié)處理器它們是協(xié)助主處理器工作的。),主要用在中等或大規(guī)模的8086系統(tǒng)中。
當(dāng)把8086的33腳MN/MX接地時(shí),8086CPU就處于最大模式。
第3章作業(yè)
1.分別說(shuō)明下列指令的源操作數(shù)和目的操作數(shù)各采用什么尋址方式。
源目的
(1)MOVAX,2048H立即尋址寄存器尋址
(2)MOVCL,0FFH立即尋址寄存器尋址
(3)MOVBX,[SI]寄存器間接尋址寄存器尋址
(4)MOV5[BX],BL寄存器尋址寄存器相對(duì)尋址
-可編輯修改-
______________________________________________________________________________________________________________
(5)MOV[BP+100H],AX寄存器尋址寄存器相對(duì)尋址
(6)MOV[BX+DI],‘$’立即尋址基址變址尋址
(7)MOVDX,ES:[BX+SI]基址變址尋址寄存器尋址
(8)MOVVAL[BP+DI],DX寄存器尋址相對(duì)基址加變址尋址
(9)INAL,05HI/O端口尋址(或直接尋址)寄存器尋址
(10)MOVDS,AX寄存器尋址寄存器尋址
2.已知:DS=1000H,BX=0200H,SI=02H,內(nèi)存10200H~10205H單元的內(nèi)容分別為10H,2AH,3CH,46H,59H,
6BH。下列每條指令執(zhí)行完后AX寄存器的內(nèi)容各是什么?
AX內(nèi)容
(1)MOVAX,0200H;(AX)=0200H
(2)MOVAX,[200H];(AX)=2A10H
(3)MOVAX,BX;(AX)=0200H
(4)MOVAX,3[BX];(AX)=5946H
(5)MOVAX,[BX+SI];(AX)=463CH
(6)MOVAX,2[BX+SI];(AX)=6B59H
6.指出下列指令中哪些是錯(cuò)誤的,錯(cuò)在什么地方
(1)MOVDL,AX錯(cuò)誤,源和目的操作數(shù)類型不匹配,DL是8位寄存器,AX是16位寄存
器。
(2)MOV8650H,AX錯(cuò)誤,立即數(shù)不能作為目的操作數(shù)。
(3)MOVDS,0200H錯(cuò)誤,不能用立即數(shù)直接給段寄存器賦值。
(4)MOV[BX],[1200H]錯(cuò)誤,不能在兩個(gè)存儲(chǔ)單元之間直接傳送數(shù)據(jù)
(5)MOVIP,0FFH錯(cuò)誤,IP不能作目的操作數(shù)或不能用立即數(shù)直接給IP寄存器賦值。
(6)MOV[BX+SI+3],IP錯(cuò)誤,IP不能作源操作數(shù)。
(7)MOVAX,[BX][BP]錯(cuò)誤,基址變址尋址方式必須是一個(gè)基址寄存器與一個(gè)變址寄存器,
不能兩個(gè)同時(shí)為基址寄存器(BX、BP均為基址寄存器)。
(8)MOVAL,ES:[BP]正確。
(9)MOVDL,[SI][DI]錯(cuò)誤,基址變址尋址方式必須是一個(gè)基址寄存器與一個(gè)變址寄存器,
不能兩個(gè)同時(shí)為變址寄存器(SI、DI均為變址寄存器)。
(10)MOVAX,OFFSET0A20H錯(cuò)誤,OFFSET后必須是存儲(chǔ)單元標(biāo)號(hào)地址,不能是立即數(shù)。
(11)MOVAL,OFFSETTABLE錯(cuò)誤,操作數(shù)類型不匹配,AL為8位,TABLE為16位。
(12)XCHGAL,50H錯(cuò)誤,交換指令XCHG的操作數(shù)不能是立即數(shù)。
(13)INBL,05H錯(cuò)誤,IN指令的目的操作數(shù)必須是累加器
(14)OUTAL,0FFEH錯(cuò)誤,OUT指令的源操作數(shù)必須是累加器,目的操作數(shù)為8位I/O端口
地址或用DX做橋梁的16位I/O端口地址。
10.已知AX=2508H,BX=0F36H,CX=0004H,DX=1864H,求下列每條指令執(zhí)行后的結(jié)果是什么?標(biāo)志位CF
等于什么?
(1)ANDAH,CL(AH)=04HCF=0
(2)ORBL,30H(BL)=36HCF=0
(3)NOTAX(AX)=0DAF7HCF不變(不影響CF)
(4)XORCX,0FFF0H(CX)=0FFF4HCF=0
(5)TESTDH,0FH(DH)=18HCF=0
(6)CMPCX,00H(CX)=0004HCF=0
(7)SHRDX,CL(DX)=0186HCF=0
(8)SARAL,1(AL)=04HCF=0
-可編輯修改-
______________________________________________________________________________________________________________
(9)SHLBH,CL(BH)=0F0HCF=0
(10)SALAX,1(AX)=4A10HCF=0
(11)RCLBX,1CF=1,(BX)=1E6DH,CF=0,(BX)=1E6CHCF=0
(12)RORDX,CL(DX)=4186HCF=0
11.假設(shè)數(shù)據(jù)定義如下:
DATASEGMENT
STRINGDB‘ThePersonalComputer&TV’
DATAENDS
試用字符串操作指令編程完成以下功能:
(1)把該字符串傳送到附加段中偏移地址為GET_CHAR開(kāi)始的內(nèi)存單元中。
解:程序段如下:
LEASI,STRING;置源串偏移地址
LEADI,GET_CHAR;置目的串偏移地址
MOVCX,26;置串長(zhǎng)度
CLD;方向標(biāo)志復(fù)位
REPMOVSB;字符串傳送
12.編程將AX寄存器中的內(nèi)容以相反的次序傳送到DX寄存器中,并要求AX中的內(nèi)容不被破壞,然后統(tǒng)
計(jì)DX寄存器中1的個(gè)數(shù)是多少。
解:將AX的內(nèi)容用ROR循環(huán)右移,16次之后AX的內(nèi)容不變(如果用算術(shù)/邏輯右移SHL/SAL,則AX的內(nèi)
容破壞,需要用堆棧PUSHUAX/POPAX保護(hù)),其最低位移入CF中,再使用RCL循環(huán)左移將CF中的值移入
DX中。并且,如果CF的值為1,則將BL加1。
MOVCX,16
XORBL,BL
LP1:RORAX,1
JNCLP2
INCBL
LP2:RCLDX,1
LOOPLP1
HLT
調(diào)試程序:
STACKSEGMENTSTACK
DB100DUP(?)
STACKENDS
DATASEGMENT
BUFDW12
BUF1DW100DUP(?)
DATAENDS
CODESEGMENT
ASSUMECS:CODE,DS:DATA,SS:STACK
START:PUSHDS
MOVAX,DATA
MOVDS,AX
MOVAX,1234H
-可編輯修改-
______________________________________________________________________________________________________________
MOVCX,16
XORBL,BL
LP1:RORAX,1
JNCLP2
INCBL
LP2:RCLDX,1
LOOPLP1
HLT
CODEENDS
ENDSTART
15.某班有七個(gè)同學(xué)的英語(yǔ)成績(jī)低于80分,分?jǐn)?shù)存在ARRAY數(shù)組中,試編程完成以下工作:給每人加5
分,結(jié)果存到NEW數(shù)組中.
解:
STACKSEGMENTSTACK
DB100DUP(?)
STACKENDS
DATASEGMENT
ARRAYDB7DUP(?)
NEWDB7DUP(?)
DATAENDS
CODESEGMENT
ASSUMECS:CODE,DS:DATA,SS:STACK
START:MOVCX,7
MOVBX,0
LP1:MOVAL,ARRAY[BX]
ADDAL,05H
DAA
MOVNEW[BXI],AL
INCBX
LOOPLP1
HLT
CODEENDS
ENDSTART
調(diào)試程序:
STACKSEGMENTSTACK
DB100DUP(?)
STACKENDS
DATASEGMENT
ARRAYDB65H,76H,78H,54H,90H,85H,68H
NEWDB7DUP(?)
BUF1DW100DUP(?)
DATAENDS
CODESEGMENT
-可編輯修改-
______________________________________________________________________________________________________________
ASSUMECS:CODE,DS:DATA,SS:STACK
START:PUSHDS
MOVAX,DATA
MOVDS,AX
MOVCX,7
MOVBX,0
LP1:MOVAL,ARRAY[BX]
ADDAL,05H
DAA
MOVNEW[BXI],AL
INCBX
LOOPLP1
HLT
CODEENDS
ENDSTART
某班有七個(gè)同學(xué)的英語(yǔ)成績(jī)低于80分,分?jǐn)?shù)存在ARRAY數(shù)組中,試編程完成以下工作:
(1)給每人加5分,結(jié)果存到NEW數(shù)組中
(2)把總分存到SUM單元中
(3)把平均分存到AVERAGE單元中
解:
STACKSEGMENTSTACK
DB100DUP(?)
STACKENDS
DATASEGMENT
ARRAYDB7DUP(?)
NEWDB7DUP(?)
SUMDW0
AVGDB0
DATAENDS
CODESEGMENT
ASSUMECS:CODE,DS:DATA,SS:STACK
START:MOVCX,7
MOVSI,0
MOVSUM,0
MOVAH,0
LP1:MOVAL,ARRAY[SI]
ADDAL,05H
DAA
MOVNEW[SI],AL
ADDAL,SUM
DAA
MOVSUM,AL
-可編輯修改-
______________________________________________________________________________________________________________
ADCAH,0
DAA
MOVSUM+1,AH
INCSI
LOOPLP1
MOVAX,SUM
MOVBL,07H
DIVBL
MOVAVG,AL
HLT
CODEENDS
ENDSTART
調(diào)試程序:
STACKSEGMENTSTACK
DB100DUP(?)
STACKENDS
DATASEGMENT
ARRAYDB65H,76H,78H,54H,90H,85H,68H
NEWDB7DUP(?)
SUMDB00H,00H
AVGDB0
BUF1DW100DUP(?)
DATAENDS
CODESEGMENT
ASSUMECS:CODE,DS:DATA,SS:STACK
START:PUSHDS
MOVAX,DATA
MOVDS,AX
MOVCX,7
MOVSI,0
MOVSUM,0
MOVAH,0
LP1:MOVAL,ARRAY[SI]
ADDAL,05H
DAA
MOVNEW[SI],AL
ADDAL,SUM
DAA
MOVSUM,AL
ADCAH,0
MOVSUM+1,AH
INCSI
LOOPLP1
MOVAL,SUM
-可編輯修改-
______________________________________________________________________________________________________________
MOVAH,SUM+1
MOVBL,07H
DIVBL
MOVAVG,AL
HLT
CODEENDS
ENDSTART
13.設(shè)CS=1200H,IP=0100H,SS=5000H,SP=0400H,DS=2000H,SI=3000H,BX=0300H,(20300H)=4800H,
(20302H)=00FFH,TABLE=0500H,PROG_N標(biāo)號(hào)的地址為1200:0278H,PROG_F標(biāo)號(hào)的地址為3400:0ABCH。
說(shuō)明下列每條指令執(zhí)行完后,程序分別轉(zhuǎn)移到何處執(zhí)行?
JMP指令
(1)JMPPROG_N
段內(nèi)直接近轉(zhuǎn)移,目的地址為1200H:0278H(或12278H)
(2)JMPBX
段內(nèi)寄存器間接轉(zhuǎn)移,目的地址為1200H:0300H(或12300H)
(3)JMP[BX]
物理地址=DS×10H+BX=2000H×10H+0300H=20300H
(20300H)=4800H→IP
段內(nèi)存儲(chǔ)器間接轉(zhuǎn)移,目的地址為1200H:4800H(或16800H)
(4)JMPFARPROG_F
段間直接轉(zhuǎn)移,目的地址為3400H:0ABCH(或34ABCH)
(5)JMPDWORDPTR[BX]
物理地址=DS×10H+BX=2000H×10H+0300H=20300H
(20300H)=4800H→IP,(20302H)=00FFH→CS
段間存儲(chǔ)器間接轉(zhuǎn)移,目的地址為00FFH:4800H(或057F0H)
JMP改為CALL后,目的地址與JMP相同。
(1)CALLPROG_N
段內(nèi)直接調(diào)用,3字節(jié)指令,目的地址為1200H:0278H(或12278H),0103H入棧,SP=03FEH
(2)CALLBX
段內(nèi)寄存器間接調(diào)用,2字節(jié)指令,目的地址為1200H:0300H(或12300H),0102H入棧,SP=03FEH
(3)CALL[BX]
段內(nèi)存儲(chǔ)器間接調(diào)用,2字節(jié)指令,目的地址為1200H:4800H(或16800H),0102H入棧,SP=03FEH
(4)CALLFARPROG_F
段間直接調(diào)用,5字節(jié)指令,目的地址為3400H:0ABCH(或34ABCH),1200H和0105H分別入棧,SP=03FCH
(5)CALLDWORDPTR[BX]
段間間接調(diào)用,2字節(jié)指令,目的地址為00FFH:4800H(或057F0H),1200H和0102H分別入棧,SP=03FCH
部分調(diào)試程序:
STACKSEGMENTSTACK
DB100DUP(?)
-可編輯修改-
______________________________________________________________________________________________________________
STACKENDS
DATASEGMENT
BUFDW12
BUF1DW100DUP(?)
ORG300H
DB00H,48H,0FFH,00H
DATAENDS
CODESEGMENT
ASSUMECS:CODE,DS:DATA,SS:STACK
START:PUSHDS
MOVAX,DATA
MOVDS,AX
MOVBX,0300H
CALLPROG_N
CALLBX
CALL[BX]
ORG0278
PROG_N:RET
ORG0300H
RET
ORG4800H
RET
HLT
CODEENDS
ENDSTART
14.如在下列程序段的括號(hào)中分別填入以下指令:
(1)LOOPNEXT
(2)LOOPENEXT
(3)LOOPNENEXT
試說(shuō)明在這三種情況下,程序段執(zhí)行完后,AX,BX,CX,DX寄存器的內(nèi)容分別是什么
START:MOVAX,01H
MOVBX,02H
MOVDX,03H
MOVCX,04H
NEXT:INCAX
ADDBX,AX~
SHRDX,1
()
解:
LOOP過(guò)程:AXBXCXDX
初始值01H02H04H03H
循環(huán)1次02H04H03H01H
循環(huán)2次03H07H02H00H
-可編輯修改-
______________________________________________________________________________________________________________
循環(huán)3次04H0BH01H00H
循環(huán)4次05H10H00H00H
結(jié)果:
AXBXCXDX
(1)05H10H00H00H
(2)02H04H03H01H
執(zhí)行一次,ZF=0,退出循環(huán)。
(3)03H07H02H00H
執(zhí)行兩次,ZF=1,退出循環(huán)。
20.設(shè)8086CPU的時(shí)鐘頻率為5MHz,請(qǐng)編寫(xiě)延時(shí)5ms的子程序。
解:微機(jī)的主頻率為5MHz
則:時(shí)鐘周期=主頻率的倒數(shù)=1/(5×10-6)=0.2μs
延時(shí)5ms需要的時(shí)鐘周期數(shù)=5ms/0.2μs=25000
延時(shí)子程序如下:
DELAY5:MOVCX,N4
DLY1:NOP3×N
LOOPDLY117×(N-1)+5
RET16
應(yīng)該有25000=4+3×N+17×(N-1)+5+16,才能實(shí)現(xiàn)要求的延時(shí)。則:
N=1250=04E2H
延時(shí)子程為:
DELAY5:MOVCX,04E2H
DLY1:NOP
LOOPDLY1
RET
第4章作業(yè)
P153
5.閱讀下列程序,說(shuō)明每條指令執(zhí)行后的結(jié)果是什么?
X1DB65H,78H
X2DW06FFH,5200H
X3DD?
GO:MOVAL,TYPEX1
MOVBL,TYPEX2
MOVCL,TYPEX3
MOVAH,TYPEGO
MOVBH,SIZEX2
MOVCH,LENGTHX3
解:
(1)前三條語(yǔ)句的功能是設(shè)置數(shù)據(jù)于數(shù)據(jù)段中,從數(shù)據(jù)段偏移地址0000H開(kāi)始存放。
變量偏移地址數(shù)據(jù)
X10000H65H
-可編輯修改-
______________________________________________________________________________________________________________
0001H78H
X20002HFFH
0003H06H
0004H78H
0005H00H
X30006H隨機(jī)數(shù)
0007H隨機(jī)數(shù)
0008H隨機(jī)數(shù)
0009H隨機(jī)數(shù)
程序匯編后結(jié)果如下:
六條程序執(zhí)行結(jié)果如下:
(AL)=01H;設(shè)置變量類型屬性,字節(jié)數(shù)
(BL)=02H;設(shè)置變量類型屬性,字節(jié)數(shù)
(CL)=04H;設(shè)置變量類型屬性,字節(jié)數(shù)
(AH)=0FFH;設(shè)置GO顯示類型,近標(biāo)號(hào),為-1,補(bǔ)碼表示
(BH)=02H;設(shè)置數(shù)據(jù)類型,無(wú)DUP時(shí),返回?cái)?shù)據(jù)類型的字節(jié)數(shù)
(CH)=01H;無(wú)DUP時(shí),返回1。
程序執(zhí)行后結(jié)果如下:
調(diào)試程序如下:
STACKSEGMENTSTACK
DB100DUP(?)
-可編輯修改-
______________________________________________________________________________________________________________
STACKENDS
DATASEGMENT
X1DB65H,78H
X2DW06FFH,5200H
X3DD?
DATAENDS
CODESEGMENT
ASSUMECS:CODE,DS:DATA,SS:STACK
START:PUSHDS
MOVAX,DATA
MOVDS,AX
GO:MOVAL,TYPEX1
MOVBL,TYPEX2
MOVCL,TYPEX3
MOVAH,TYPEGO
MOVBH,SIZEX2
MOVCH,LENGTHX3
POPDS
HLT
CODEENDS
ENDSTART
6.畫(huà)出示意圖,說(shuō)明下列變量在內(nèi)存中如何讓存放?
A1DB12H,34H
A2DB‘Right.’
A3DW5678H
A4DB3DUP(?)
(1)設(shè)置數(shù)據(jù)于數(shù)據(jù)段中,從數(shù)據(jù)段偏移地址0000H開(kāi)始存放。
變量偏移地址數(shù)據(jù)
A10000H12H
0001H34H
A20002H52H
0003H69H
0004H67H
0005H68H
0006H74H
0007H2EH
A30008H78H
0009H56H
A4000AH隨機(jī)數(shù)
000BH隨機(jī)數(shù)
000CH隨機(jī)數(shù)
調(diào)試程序如下:
-可編輯修改-
______________________________________________________________________________________________________________
STACKSEGMENTSTACK
DB100DUP(?)
STACKENDS
DATASEGMENT
A1DB12H,34H
A2DB'Right.'
A3DW5678H
A4DB3DUP(?)
DATAENDS
CODESEGMENT
ASSUMECS:CODE,DS:DATA,SS:STACK
START:PUSHDS
MOVAX,DATA
MOVDS,AX
POPDS
HLT
CODEENDS
ENDSTART
程序匯編后結(jié)果如下:
12.編程實(shí)現(xiàn),從鍵盤(pán)輸入一個(gè)十進(jìn)制數(shù)0~9,查表求鍵入數(shù)字的七段代碼(共陽(yáng)極LED顯示器的段碼),
存入DL中,并在鍵入數(shù)字之前,顯示提示信息“Pleaseinputanumber(0~9):”。
解:
STACKSEGMENTSTACK
DB100DUP(?)
STACKENDS
DATASEGMENT
TABLEDB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
BUFDB'Pleaseinputonenumber(0~9):',0DH,0AH,'$'
DATAENDS
CODESEGMENT
-可編輯修改-
______________________________________________________________________________________________________________
ASSUMECS:CODE,DS:DATA,SS:STACK,ES:DATA
START:PUSHDS
MOVAX,DATA
MOVDS,AX
MOVDX,OFFSETBUF
MOVAH,09H
INT21H
MOVAH,1
INT21H
ANDAL,0FH
MOVBX,OFFSETTABLE
XLAT
MOVDL,AL
POPDS
HLT
CODEENDS
ENDSTART
調(diào)試結(jié)果:
數(shù)字5的共陽(yáng)極LED七段碼為92H。
15.已知:在內(nèi)存BUF開(kāi)始的單元中,存在一串?dāng)?shù)據(jù):58,75,36,42,89。編程找出其中的最小值存入
MIN單元中,并將這個(gè)數(shù)顯示在屏幕上。
解:
STACKSEGMENTSTACK
DB100DUP(?)
STACKENDS
DATASEGMENT
BUFDB58H,75H,36H,42H,89H
MINDB0
-可編輯修改-
______________________________________________________________________________________________________________
DATAENDS
CODESEGMENT
ASSUMECS:CODE,DS:DATA,SS:STACK
START:PUSHDS
MOVAX,DATA
MOVDS,AX
MOVCX,4
MOVBX,OFFSETBUF
MOVAL,[BX]
ST1:INCBX
CMPAL,[BX]
JBENEXT
MOVAL,[BX]
NEXT:LOOPST1
MOVMIN,AL
ANDAL,0F0H
MOVCL,4
RORAL,CL
ADDAL,30H
MOVDL,AL
MOVAH,02H
INT21H
MOVAL,MIN
ANDAL,0FH
ADDAL,30H
MOVDL,AL
MOVAH,02H
INT21H
POPDS
MOVAH,4CH
INT21H
HLT
CODEENDS
ENDSTART
18.某班有20個(gè)同學(xué)的微機(jī)原理成績(jī)存放在LIST開(kāi)始的單元中,要求編程先從高到低的次序排列好,
再求出總分和平均值,分別存放在SUM和AVER開(kāi)始的單元中。
解:
STACKENDS
DATASEGMENT
LISTDB65H,76H,78H,54H,90H,85H,68H,66H,77H,88H
DB99H,89H,79H,69H,75H,85H,63H,73H,83H,93H
SUMDW0
-可編輯修改-
______________________________________________________________________________________________________________
AVERDB0
BUFDB100DUP(?)
DATAENDS
CODESEGMENT
ASSUMECS:CODE,DS:DATA,SS:STACK
START:PUSHDS
MOVAX,DATA
MOVDS,AX
MOVDI,OFFSETLIST
MOVBX,19
LP0:MOVSI,DI
MOVCX,BX
LP1:MOVAL,[SI]
INCSI
CMPAL,[SI]
JNCLP2
MOVDL,[SI]
MOV[SI-1],DL
MOV[SI],AL
LP2:LOOPLP1
DECBX
JNZLP0
LP3:MOVCX,20
MOVBX,OFFSETLIST
MOVSUM,0
XORAX,AX
LP4:ADDAL,[BX]
DAA
ADCAH,0
INCBX
LOOPLP4
MOVSUM,AX
MOVBL,20H
DIVBL
ADDAL,0
DAA
MOVAVERAL
POPDS
HLT
CODEENDS
ENDSTART
20.編程將存放在AL中的無(wú)符號(hào)二進(jìn)制數(shù),轉(zhuǎn)化成十六進(jìn)制數(shù),再轉(zhuǎn)換成ASII碼并顯示在屏幕上。
-可編輯修改-
______________________________________________________________________________________________________________
解:
程序如下:
STACKSEGMENTSTACK
DB100DUP(?)
STACKENDS
DATASEGMENT
DB100DUP(?)
DATAENDS
CODESEGMENT
ASSUMECS:CODE,DS:DATA,SS:STACK
START:PUSHDS
MOVAX,DATA
MOVDS,AX
MOVDH,AL
MOVCH,02H
ST1:MOVCL,4
RORDH,CL
MOVAL,DH
ANDAL,0FH
ADDAL,30H
CMPAL,39H
JBEDISP
ADDAL,07H
DISP:MOVDL,AL
MOVAH,02H
INT21H
DECCH
JNZST1
POPDS
MOVAH,4CH
INT21H
HLT
CODEENDS
ENDSTART
調(diào)試程序如下:
STACKSEGMENTSTACK
BUFDB01111000B
DB100DUP(?)
STACKENDS
DATASEGMENT
DB100DUP(?)
DATAENDS
CODESEGMENT
-可編輯修改-
______________________________________________________________________________________________________________
ASSUMECS:CODE,DS:DATA,SS:STACK
START:PUSHDS
MOVAX,DATA
MOVDS,AX
MOVAL,BUF
MOVDH,AL
MOVCH,02H
ST1:MOVCL,4
RORDH,CL
MOVAL,DH
ANDAL,0FH
ADDAL,30H
CMPAL,39H
JBEDISP
ADDAL,07H
DISP:MOVDL,AL
MOVAH,02H
INT21H
DECCH
JNZST1
POPDS
MOVAH,4CH
INT21H
HLT
CODEENDS
ENDSTART
21.編寫(xiě)程序,使用三種以上的方法,將存儲(chǔ)器中2000H開(kāi)始的地址單元中的100字節(jié)數(shù)據(jù)復(fù)制到
3000H開(kāi)始的存儲(chǔ)器地址單元中。
解:
(1)利用通用傳送指令MOV
MOVSI,2000H注意這里如果是標(biāo)號(hào)地址,則必須用OFFSET
MOVDI,3000H
MOVCX,100
LP1:MOVAL,[SI]
MOV[DI],AL
INCSI
INCDI
LOOPLP1
HLT
MOVCX,100
MOVBX,0
LP0:MOVAL,2000[BX]
MOV3000[BX],AL
INCBX
LOOPLP0
HLT
-可編輯修改-
______________________________________________________________________________________________________________
(2)利用交換指令XCHG
MOVSI,2000H
MOVDI,3000H
MOVCX,100
LP2:MOVAL,[SI]
XCHG[DI],AL
INCSI
INCDI
LOOPLP2
HLT
(3)利用換碼指令XLAT
MOVBX,2000H
MOVDI,3000H
MOVCX,100
LP3:XORAL,AL
XLAT
MOV[DI],AL
INCBX
INCDI
LOOPLP3
HLT
(4)利用堆棧實(shí)現(xiàn)數(shù)據(jù)傳送
MOVSI,2000H
MOVDI,3000H
MOVCX,50
LP4:PUSH[SI]
POP[DI]
INCSI
INCSI
INCDI
INCDI
LOOPLP4
HLT
(5)利用串操作指令REPMOVSB
MOVSI,2000H
MOVDI,3000H
MOVCX,100
CLD;DF=0,SI、DI自動(dòng)+1
REPMOVSB
HLT
調(diào)試程序:
STACKSEGMENTSTACK
DB100DUP(?)
STACKENDS
DATASEGMENT
ORG2000H
DB11H,22H,33H,44H,55H.66H,77H,88H,99H
DB100DUP(?)
ORG3000H
DB100DUP(?)
DATAENDS
-可編輯修改-
______________________________________________________________________________________________________________
CODESEGMENT
ASSUMECS:CODE,DS:DATA,SS:STACK
START:PUSHDS
MOVAX,DATA
MOVDS,AX
MOVSI,2000H
MOVDI,3000H
MOVCX,100
LP1:MOVAL,[SI]
MOV[DI],AL
INCSI
INCDI
LOOPLP1
POPDS
HLT
CODEENDS
ENDSTART
22.在DATA開(kāi)始的4個(gè)單元中存
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 語(yǔ)法化現(xiàn)象與認(rèn)知機(jī)制-洞察分析
- 舞蹈史中的跨文化傳播-洞察分析
- 項(xiàng)目協(xié)同效率提升-洞察分析
- 行業(yè)跨國(guó)競(jìng)爭(zhēng)格局下我國(guó)防水材料產(chǎn)業(yè)的競(jìng)爭(zhēng)力提升策略-洞察分析
- 無(wú)紡布行業(yè)市場(chǎng)趨勢(shì)分析-洞察分析
- 物聯(lián)網(wǎng)智能農(nóng)業(yè)發(fā)展趨勢(shì)探討-洞察分析
- 信貸市場(chǎng)競(jìng)爭(zhēng)態(tài)勢(shì)-洞察分析
- 音樂(lè)記憶的長(zhǎng)期保存機(jī)制-洞察分析
- 小說(shuō)敘事視角研究-洞察分析
- 飲用水安全風(fēng)險(xiǎn)預(yù)警-洞察分析
- 2024年血透管路行業(yè)技術(shù)趨勢(shì)分析
- 美術(shù)年終總結(jié)匯報(bào)
- 數(shù)字孿生技術(shù)與MES系統(tǒng)的融合
- 人才梯隊(duì)(人才庫(kù)、人才盤(pán)點(diǎn))建設(shè)方案
- 廣西柳州市2023-2024學(xué)年四年級(jí)上學(xué)期期末考試語(yǔ)文試卷
- 《芯片制造工藝》課件
- 中山大學(xué)研究生中特考試大題
- 手術(shù)室護(hù)理實(shí)踐指南術(shù)中低體溫預(yù)防
- 鋼管混凝土柱計(jì)算
- 四川省成都市2022-2023學(xué)年六年級(jí)上學(xué)期語(yǔ)文期末考試試卷(含答案)5
- 違規(guī)建筑綜合整頓行動(dòng)方案(二篇)
評(píng)論
0/150
提交評(píng)論