版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
微機(jī)原理試題
CH01微型計(jì)算機(jī)概述
習(xí)題與思考題
1.微型計(jì)算機(jī)由哪些部件組成?各部件的主要功能是什么?
解答:
微機(jī)系統(tǒng)
微型計(jì)算機(jī)
系統(tǒng)軟件
外圍設(shè)備:打卬機(jī)、鍵盤(pán)、CRT、磁盤(pán)控制器等
微處理器
(CPU)
系統(tǒng)總線:AB、CB、DB
(功能:為CPU和其他部件之間提供數(shù)據(jù)、地址
和控制信息的傳輸通道)
存儲(chǔ)器:只讀存儲(chǔ)器(ROM)、隨機(jī)存儲(chǔ)器(RAM)
(功能:用來(lái)存儲(chǔ)信息)
輸入/輸出(I/O)接口:串/并行接口等
(功能:使外部設(shè)備和微型機(jī)相連)
算術(shù)邏輯部件(ALU)
累加器、寄存器
控制器
操作系統(tǒng)(OS)
系統(tǒng)實(shí)用程序:匯編、編譯、編輯、調(diào)試程序等
(注:CPU的功能一一①可以進(jìn)行算術(shù)和邏輯運(yùn)算;
②可保存少量數(shù)據(jù);
③能對(duì)指令進(jìn)行譯碼并執(zhí)行規(guī)定的動(dòng)作;
④能和存儲(chǔ)器、外設(shè)交換數(shù)據(jù);
⑤提供整修系統(tǒng)所需要的定時(shí)和控制;
⑥可以響應(yīng)其他部件發(fā)來(lái)的中斷請(qǐng)示。)
2.8086/8088CPU由哪兩部分組成?它們的主:要功能各是什么?是如何協(xié)調(diào)工作的?
解答:
微處理器
(CPU)
總線接口部件(BIU):負(fù)責(zé)與存儲(chǔ)器、I/O端口傳送數(shù)據(jù)
執(zhí)行部件(EU):負(fù)責(zé)指令的執(zhí)行
協(xié)調(diào)工作過(guò)程:
總線接口部件和執(zhí)行部件并不是同步工作的,它們按以下流水線技術(shù)原則來(lái)協(xié)調(diào)管理:
①每當(dāng)8086的指令隊(duì)列中有兩個(gè)空字節(jié),或者8088的指令隊(duì)列中有個(gè)空字節(jié)時(shí),
總線接口部件就會(huì)自動(dòng)把指令取到指令隊(duì)列中。
②每當(dāng)執(zhí)行部件準(zhǔn)備執(zhí)行一條指令時(shí),它會(huì)從總線接口部件的指令隊(duì)列前部取出指令
的代碼,然后用幾個(gè)時(shí)鐘周期去執(zhí)行指令。在執(zhí)行指令的過(guò)程中,如果必須訪問(wèn)存儲(chǔ)器或者
輸入/輸出設(shè)備,那么,執(zhí)行部件就會(huì)請(qǐng)求總線接口部件進(jìn)入總線周期,完成訪問(wèn)內(nèi)存或者
輸入/輸出端口的操作;如果此時(shí)總線接口部件正好處于空閑狀態(tài),那么,會(huì)立即響應(yīng)執(zhí)行
部件的總線請(qǐng)求。但有時(shí)會(huì)遇到這樣的情況,執(zhí)行部件請(qǐng)求總線接口部件訪問(wèn)總線時(shí),總線
接口部件正在將某個(gè)指令字節(jié)取到指令隊(duì)列中,此時(shí)總線接口部件將首先完成這個(gè)取指令的
操作,然后再去響應(yīng)執(zhí)行部件發(fā)出的訪問(wèn)總線的請(qǐng)求。
③當(dāng)指令隊(duì)列已滿,而且執(zhí)行部件又沒(méi)有總線訪問(wèn)請(qǐng)求時(shí).,總線接口部件便進(jìn)入空閑
狀態(tài)。④在執(zhí)行轉(zhuǎn)移指令、調(diào)用指令和返回指令時(shí),由于程序執(zhí)行的順序發(fā)生了改變,不再
是順序執(zhí)行卜.面一條指令,這時(shí),指令隊(duì)列中已經(jīng)按順序裝入的字節(jié)就沒(méi)用了。遇到這種情
況,指令隊(duì)列中的原有內(nèi)容將被自動(dòng)消除,總線接口部件會(huì)按轉(zhuǎn)移位置往指令隊(duì)列裝入另一
個(gè)程序段中的指令。
3.8086/8088CPU中有哪些寄存器?各有什么用途?標(biāo)志寄存器F有哪些標(biāo)志位?各在什
么情況下置位?
解答:
寄存器功能
數(shù)據(jù)
寄存器
AX字乘法,字除法,字I/O
BX查表轉(zhuǎn)換
CX串操作,循環(huán)次數(shù)
DX字節(jié)相乘,字節(jié)相除,間接I/O
變址
寄存器
SI源變址寄存器,用于指令的變址尋址
DI目的變址寄存器,用于指令的變址尋址
指針
寄存器
SP堆棧指針寄存器,與SS起來(lái)確定堆棧在內(nèi)存中的位置
BP基數(shù)指針寄存器,用于存放基地址,以使8086/8088尋址更加靈活
控制
寄存器
IP控制CPU的指令執(zhí)行順序
PSW用來(lái)存放8086/8088CPU在工作過(guò)程中的狀態(tài)
段寄存器CS控制程序區(qū)
DS控制數(shù)據(jù)區(qū)
SS控制堆棧區(qū)
ES控制數(shù)據(jù)區(qū)
標(biāo)志寄存器F的標(biāo)志位:①控制標(biāo)志:OF、DF、IF、TF:②狀態(tài)標(biāo)志:SF、ZF、AF、
PF,CF“
標(biāo)志寄存器F的各標(biāo)志位置位情況:
-CF:進(jìn)位標(biāo)志位。做加法時(shí)出現(xiàn)進(jìn)位或做減法時(shí)出現(xiàn)借位,該標(biāo)志位置1;否則清0。
?PF:奇偶標(biāo)志位。當(dāng)結(jié)果的低8位中I的個(gè)數(shù)為偶數(shù)時(shí),該標(biāo)志位置1;否則清0。
?AF:半進(jìn)位標(biāo)志位。在加法時(shí),當(dāng)位3需向位4進(jìn)位,或在減法時(shí)位3需向位4借位
時(shí),該標(biāo)志位就置1;否則清0。該標(biāo)志位逋常用于對(duì)B8算術(shù)運(yùn)算結(jié)果的調(diào)整。
-ZF:零標(biāo)志位。運(yùn)算結(jié)果各位都為0時(shí),該標(biāo)志位置1,否則清0。
-SF:符號(hào)標(biāo)志位。當(dāng)運(yùn)算結(jié)果的最高位為1時(shí),該標(biāo)志位置1,否則清0。
?TF:陷阱標(biāo)志位(單步標(biāo)志位)。當(dāng)該位置1時(shí),將使8086/8088進(jìn)入單步指令工作方式。
在每條指令開(kāi)始執(zhí)行以前,CPU總是先測(cè)試TF位是否為1,如果為1,則在本指令執(zhí)
行后將產(chǎn)生陷阱中斷,從而執(zhí)行陷阱中斷處理程序。該程序的首地址由內(nèi)存的
00004H-00007H4個(gè)單元提供。該標(biāo)志通常用于程序的調(diào)試。例如,在系統(tǒng)調(diào)試軟件
DEBUG中的T命令,就是利用它來(lái)進(jìn)行程序的單步跟蹤的。
?IF:中斷允許標(biāo)志位。如果該位置1,則處理器可以響應(yīng)可屏蔽中斷,否則就不能響應(yīng)
可屏蔽中斷。
?DF:方向標(biāo)志位。當(dāng)該位置1時(shí),串操作指令為自動(dòng)減量指令,即從高地址到低地址
處理字符串:否則串操作指令為自動(dòng)增量指令。
?OF:溢出標(biāo)志位。在算術(shù)運(yùn)算中,帶符號(hào)的數(shù)的運(yùn)算結(jié)果超出了8位或16位帶符號(hào)數(shù)
所能表達(dá)的范圍時(shí),即字節(jié)運(yùn)算大于十127或小于一128時(shí),字運(yùn)算大于十32767
或小于一32768時(shí),該標(biāo)志位置位。4.8086/8088系統(tǒng)中存儲(chǔ)器的邏輯地址和物理地址之間有什么關(guān)系?
表示的范圍各為多
少?
解答:
邏輯地址:段地址:偏移地址
物理地址:也稱為絕對(duì)地址,由段基址和偏移量?jī)刹糠謽?gòu)成。物理地址與系統(tǒng)中的存儲(chǔ)
空間是--?對(duì)應(yīng)的。
邏輯地址與物理地址兩者之間的關(guān)系為:物理地址=段地址X16+偏移地址
每個(gè)邏輯段的地址范圍:0000:0000H?FFFFH;0001:0000H-FFFFH;...;FFFF:
0000H-FFFFH:共有232個(gè)地址,但其中有許多地址是重疊的(體現(xiàn)出邏輯地址的優(yōu)勢(shì),
可根據(jù)需要方便地寫(xiě)出邏輯地址,又不影響其準(zhǔn)確的物理地址,邏輯地址與物理地址的關(guān)系
為多對(duì)一的關(guān)系)。
物理地址的地址范圍:00000H?FFFFFH。
5.已知當(dāng)前數(shù)據(jù)段位于存儲(chǔ)器的A1000H到B0FFFH范圍內(nèi),問(wèn)DS=?
解答:
A1000H-A100:0000以A100H為段地址的64K物理地址的范圍是:偏移地址為
0000H-FFFFH,即A100:0000H-A100:FFFFH-A1000H+0000H-A1000H+0FFFFH
=A1000H-B0FFFH,ADS=A100Ho
6.某程序數(shù)據(jù)段中存有兩個(gè)字?jǐn)?shù)據(jù)1234H和5A6BH,若已知DS=5AA0H,它們的偏移地
址分別為245AH和3245H,試畫(huà)出它們?cè)诖鎯?chǔ)器中的存放情況
解答:
存放情況如圖所示(左右兩側(cè)的寫(xiě)法均可):
5AA0:0000H
5AA0:245AH
5AA0:245BH
5AA0:3245H
5AA0:3246H
34H
12H
6BH
5AH
5AA00H
5CE5AH
5CE5BH
5DC45H
5DC46H
7.8086/8088CPU有哪兩種工作模式,它們各有什么特點(diǎn)?
解答:為了適應(yīng)各種不同的應(yīng)用場(chǎng)合,8086/8088CPU芯片可工作在兩種不同的工作模式下,
即最小模式與最大模式。
所謂最小模式,就是系統(tǒng)中只有一個(gè)8086/8088微處理器,在這種情況"所有的總
線控制信號(hào),都是直接由這片8086/8088CPU產(chǎn)生的,系統(tǒng)中的總線控制邏輯電路被減到最
少。該模式適用于規(guī)模較小的微機(jī)應(yīng)用系統(tǒng)。
最大模式是相對(duì)于最小模式而言的,最大模式用在中、大規(guī)模的微機(jī)應(yīng)用系統(tǒng)中。在最
大模式下,系統(tǒng)中至少包含兩個(gè)微處理器,其中一個(gè)為主處理器,即8086/8088CPU,其它
的微處理器稱之為協(xié)處理器,它們是協(xié)助主處理器工作的。
8.若8086cpU工作于最小模式,試指出當(dāng)CPU完成將AH的內(nèi)容送到物理地址為91001H
的存儲(chǔ)單元操作時(shí),以下哪些信號(hào)應(yīng)為低電平:MIO,RD、WR、BHE/S7,DTZR。
若CPU完成的是將物理地址91000H單元的內(nèi)容送到AL中,則上述哪些信號(hào)應(yīng)為低電
平。若CPU為8088呢?
解答:8086CPU
①存儲(chǔ)器寫(xiě)(AHf9100H[0001H])時(shí)為低電平的信號(hào):WR、7/SBHE。
②存儲(chǔ)器讀(9100H[0000H]fAL)時(shí)為低電平的信號(hào):RD、R/DT。
8088CPU
①存儲(chǔ)器寫(xiě)(AHf9100H[0001H])時(shí)為低電平的信號(hào):WR,)/SBHE(SS70、MHO。
②存儲(chǔ)器讀(9100H[0000HLAL)時(shí)為低電平的信號(hào):IWIO.RD、R/DT。
9.什么是指令周期?什么是總線周期?什么是時(shí)鐘周期?它們之間的關(guān)系如何?
解答:指令周期--CPU執(zhí)行一條指令所需要的時(shí)間稱為一個(gè)指令周期(InstructionCycle)。
總線周期---每當(dāng)CPU要從存儲(chǔ)器或I/O端口存取一個(gè)字節(jié)稱為一次總線操作,相應(yīng)
于某個(gè)總線操作的時(shí)間即為一■個(gè)總線周期(BUSScle)。
時(shí)鐘周期--時(shí)鐘周期是CPU處理動(dòng)作的最小時(shí)間單位,其值等于系統(tǒng)時(shí)鐘頻率的倒
數(shù),時(shí)鐘周期乂稱為T(mén)狀態(tài)。
它們之間的關(guān)系:若干個(gè)總線周期構(gòu)成一個(gè)指令周期,一個(gè)基本的總線周期由4個(gè)T組
成,我們分別稱為T(mén)1?T4,在每個(gè)T狀態(tài)下,CPU完成不同的動(dòng)作。
10.8086/8088CPU有哪些基本操作?基本的讀/寫(xiě)總線周期各包含多少個(gè)時(shí)鐘周期?
什么情況下需要插入Tw周期?應(yīng)插入多少個(gè)Tw取決于什么因素?
解答:①8086/8088CPU最小模式下的典型時(shí)序有:存儲(chǔ)器讀寫(xiě);輸入輸出;中斷響應(yīng);系
統(tǒng)復(fù)位及總線占用操作。
②一個(gè)基本的CPU總線周期一般包含四個(gè)狀態(tài),即四個(gè)時(shí)鐘周期;4321TTTT、、、
③在存儲(chǔ)器和外設(shè)速度較慢時(shí),要在之后插入1個(gè)或幾個(gè)等待狀態(tài):3TwT
④應(yīng)插入多少個(gè)取決于READY信號(hào)的狀態(tài),CPU沒(méi)有在狀態(tài)的一開(kāi)始采樣到
READY信號(hào)為低電平,就會(huì)在和之間插入等待狀態(tài),直到采樣到READY信號(hào)為
高電平。
wT3T
3T4TwT
11.試說(shuō)明8086/8088工作在最大和最小模式下系統(tǒng)基本配置的差異。8086/8088微機(jī)
系統(tǒng)中為什么一定要有地址鎖存器?需要鎖存哪些信息?解答:最大模式配置和最小模式配置有一個(gè)主要
的差別:①就是在最大模式下,需要用外加
電路來(lái)對(duì)CPU發(fā)出的控制信號(hào)進(jìn)行變換和組合,以得到對(duì)存儲(chǔ)器和I/O端口的讀/寫(xiě)信號(hào)及
對(duì)鎖存器(8282)和對(duì)總線收發(fā)器(8286)等等的控制信號(hào)。8288總線控制器就是完成上
面這些功能的專用芯片。②為多中斷源的需要,常采用中斷優(yōu)先權(quán)控制電路(如lntel8259A)。
8086/8088系統(tǒng)一定要有地址鎖存器一一因?yàn)楦咚奈坏刂泛蜖顟B(tài)信號(hào)是從同一組引腳I:
分時(shí)送出的,低16位地址和數(shù)據(jù)是從同一組引腳上分時(shí)傳輸?shù)?,所以必須把地址信息鎖存
起來(lái)。
需要鎖存的信息:地址信號(hào)、7/SBHE和MIO/(8086為IOM/)信號(hào)進(jìn)行鎖存。
12.試簡(jiǎn)述8086/8088微機(jī)系統(tǒng)最小模式下從存器儲(chǔ)讀數(shù)據(jù)時(shí)的時(shí)序過(guò)程。
解答:正常的存儲(chǔ)器讀總線操作占用4個(gè)時(shí)鐘周期,通常將它們稱為4個(gè)T狀態(tài)即T1?
T4o
①T1狀態(tài),IO/M=0,指出要訪問(wèn)存儲(chǔ)器。送地址信號(hào)A19-0,地址鎖存信號(hào)ALE有效,
用來(lái)控制8282鎖存地址。DT/R=0,控制8286/8287工作在接收狀態(tài)(讀)。
②T2狀態(tài),A19~A16送狀態(tài)S6~S3,AD7?ADO浮空,準(zhǔn)備接收數(shù)據(jù)。同時(shí),RD=0,表
示要進(jìn)行讀操作,而DEN=O作為8286/8287的選通信號(hào),允許進(jìn)行數(shù)據(jù)傳輸。
③T3狀態(tài),從指定的存儲(chǔ)單元將數(shù)據(jù)讀出送AD7~ADO。若存儲(chǔ)器速度較慢,不能及時(shí)
讀出數(shù)據(jù)的話,則通過(guò)READY引腳通知CPU,CPU在T3的前沿采樣READY,如果
READY=O,則在T3結(jié)束后自動(dòng)插入1個(gè)或幾個(gè)等待狀態(tài)TW,并在每個(gè)TW的前沿檢
測(cè)READY,等到READY變高后,就自動(dòng)脫離TW進(jìn)入T4。
④T4狀態(tài),CPU采樣數(shù)據(jù)線,獲得數(shù)據(jù)。RD、DEN等信號(hào)失效。
CH028086/8088指令系統(tǒng)
習(xí)題與思考題
1.假定DS=2000H,ES=2100H,SS=1500H,SI=OOAOH,BX=0100H,BP=0010H,數(shù)據(jù)變
量VAL的偏移地址為0050H,請(qǐng)指出下列指令源操作數(shù)是什么尋址方式?源操作數(shù)在哪
里?如在存儲(chǔ)器中請(qǐng)寫(xiě)出其物理地址是多少?
(1)MOVAX,OABH(2)MOVAX,[100H]
(3)MOVAX,VAL(4)MOVBX,[SI]
(5)MOVAL,VAIJBX](6)MOVCL,[BX][SI]
(7)MOVVAL[SI],BX(8)MOV[BP][SI],100
解答:
(1)MOVAX,OABH
尋址方式:立即尋址;源操作數(shù)在數(shù)據(jù)線上;物理地址:無(wú)
(2)MOVAX,[100H]
尋址方式:直接尋址;源操作數(shù)在存儲(chǔ)器中;物理地址:DS*16+100H=
2000H*16+100H=20100H
(3)MOVAX,VAL
尋址方式:直接尋址;源操作數(shù)在存儲(chǔ)器中;物理地址:DS*16+VAL=
2000H*16+0050H=20050H
(4)MOVBX,[SI]
尋址方式:寄存器間接尋址;源操作數(shù)在存儲(chǔ)器中;物理地址:DS*16+SI=
2000H*16+00A0H=200A0H
(5)MOVAL,VAL[BX]
尋址方式:變址尋址:源操作數(shù)在存儲(chǔ)器中:物理地址:DS*16+VAL+BX=
2000H*16+0050H+0100
=20150H
(6)MOVCL,[B>q[SI]
尋址方式:基址加變址尋址;源操作數(shù)在存儲(chǔ)器中;物理地址:DS*16+BX+SI=
2000HM6+0100H+00A0H
=201A0H
(7)MOVVALJSI],BX
尋址方式:寄存器尋址;源操作數(shù)在寄存器中;物理地址:無(wú)
(8)MOV[BP][SI],100
尋址方式:立即尋址;源操作數(shù)在;物理地址:無(wú)
2.設(shè)有關(guān)寄存器及存儲(chǔ)單元的內(nèi)容如下:DS=2000H,BX=0100H,AX=1200H,SI=0002H,
[20100H]=12H,[20101H]=34H,
[20102H]=56H,[20103]=78H,[21200]=2AH,[21201H]=4CH,[21202H]=0B7H,
[21203H]=65Ho
試說(shuō)明卜.列各條指令單獨(dú)執(zhí)行后相關(guān)寄存器或存儲(chǔ)單元的內(nèi)容。
(1)MOVAX,1800H(2)MOVAX,BX
(3)MOVBX,[1200H](4)MOVDX,1100[BX]
(5)MOV[BX][SI],AL(6)MOVAX,1100[BX][SI]
解答:
題號(hào)指令執(zhí)行結(jié)果
(1)MOVAX,1800HAX=1800H
(2)MOVAX,BXAX=0100H
(3)MOVBX,[1200H]BX=4C2AH
(4)MOVDX,1100[BX]DX=4C2AH
(5)MOV[B)q[SI],AL[20102H]=00H
(6)MOVAX,1100[BX][SI]AX=65B7H
3.假定BX=0E3H,變量VALUE=79H,確定下列指令執(zhí)行后的結(jié)果(操作數(shù)均為無(wú)符號(hào)數(shù)。
對(duì)3、6,寫(xiě)出相應(yīng)標(biāo)志位的狀態(tài))。
(1)ADDVALUE,BX(2)ANDBX,VALUE
(3)CMPBX,VALUE(4)XORBX,OFFH
(5)DECBX(6)TESTBX,01H
解答:
題號(hào)指令執(zhí)行結(jié)果
(1)ADDVALUE,BXBX=015CH
(2)ANDBX,VALUEBX=0061H
(3)CMPBX,VALUEBX=00E3H(CF=ZF=OF=SF=0,AF=PF=1)
(4)XORBX,OFFHBX=001CH
(5)DECBXBX=00E2H
(6)TESTBX,01HBX=00E3H(CF=ZF=OF=SF=AF=PF=0)
4.已知SS=0FFA0H,SP=00B0H,先執(zhí)行兩條把8057H和OF79H分別進(jìn)棧的PUSH指令,
再執(zhí)行?條POP指令,試畫(huà)出堆棧區(qū)和SP內(nèi)容變化的過(guò)程示意圖。(標(biāo)出存儲(chǔ)單元的地
址)
解答:OOADH
OOAEH
OOAFH
OFFAO:OOBOH
FFAACH
FFAADH
FFAAEH
FFAAFH
FFABOH
OOACH
X
FFAABH
OOADH
OOAEH
OOAFH
OFFAO:OOBOH
57H
80H
FFAACH
FFAADH
FFAAEH
FFAAFH
FFABOH
OOACH
X
FFAABH
①初始狀態(tài);SP=OOBOH②PUSHAX;(AX=8057H)SP=OOAEH
OOADH
OOAEH
OOAFH
OFFAO:OOBOH
79H
OFH
57H
80H
FFAACH
FFAADH
FFAAEH
FFAAFH
FFABOH
OOACH
X
FFAABH
OOADH
OOAEH
OOAFH
OFFAO:OOBOH
57H
80H
FFAACH
FFAADH
FFAAEH
FFAAFH
FFABOH
OOACH
X
FFAABH
③PUSHBX:(BX=OF79H)SP=OOACH④POPBX:SP=OOAEH
堆棧段SS=OFFAOH堆棧段SS=OFFAOH
堆棧段SS=OFFAOH堆棧段SS=OFFAOH
5.已知程序段如下:
MOVAX,1234H
MOVCL,4
ROLAX,CL
DECAX
MOVCX,4
MULCX
試問(wèn):(1)每條指令執(zhí)行后,AX寄存器的內(nèi)容是什么?(2)每條指令執(zhí)行后,CF,SF及
ZF的值分別是什么?(3)程序運(yùn)行結(jié)束時(shí),AX及DX寄存器的值為多少?
指令執(zhí)行結(jié)果
AXCFSFZF
MOVAX,1234HAX=1234HxxxMOVCL,4Ax=1234Hxxx
ROLAX,CLAX=2341H100
DECAXAX=2340H100
MOVCX,4AX=2340H100
MULCXAX=8D00H,DX=0000H000
6.寫(xiě)出實(shí)現(xiàn)下列計(jì)算的指令序列。(假定X、丫、Z、W、R都為字變量)
(1)Z=W+(Z+X)(2)Z=W-(X+6)-(R+9)
(3)Z=(W*X)/(R+6)(4)Z=((W-X)/5*Y)*2
解答:(1)Z=W+(Z+X)
題號(hào)指令題號(hào)指令
(1)Z=W+(Z+X)(2)Z=W-(X+6)-(R+9)
MOVAX,ZMOVDX,R
MOVBX,XADDDX,9
MOVCX,WMOVBX,X
ADDBXADDBX,6
ADCCXMOVAX,W
MOVZ,AXSUBAX,BX
SUBAX,DX
MOVZ,AX
(3)Z=(W*X)/(R+6)(4)Z=((W-X)/5*Y)*2
MOVDX,0MOVAX,W
MOVAX,WMOVBX,X
MOVBX,XSUBAX,BX
MULBXMOVDX,0
PUSHAXMOVCL,5
MOVAX,RDIVCL
ADDAX,6MOVBX,Y
MOVCX,AXMULBX
POPAXMOVCL,2
DIVCXMULCL
MOVZ,AXMOVZ,AX
MOVZ+1,DXMOVZ+1,DX
7.假定DX=1100100110111001B,CL=3,CF=1,試確定下列各條指令單獨(dú)執(zhí)行后DX的值。
(1)SHRDX,1(2)SHLDL,1
(3)SALDH,1(4)SARDX,CL
(5)RORDX,CL(6)ROLDL,CL
(7)RCRDL,1(8)RCLDX,CL
解答:
題號(hào)指令執(zhí)行結(jié)果
(1)SHRDX,1DX=0110010011011100(64DCH)(2)SHLDL,1DX=1100100101110010(C972H)
(3)SALDH,1DX=1001001010111001(92B9H)
(4)SARDX,CLDX=1111100100110111(F937H)
(5)RORDX,CLDX=0011100100110111(3937H)
(6)ROLDL,CLDX=1100100111001101(C9CDH)
(7)RCRDL,1DX=1100100111011100(C9DCH)
(8)RCLDX,CLDX=0100110111001011(4DCFH)
8.已知DX=1234H,AX=5678H,試分析下列程序執(zhí)行后DX、AX的值各是什么?該程序
完成了什么功能?
MOVCL,4
SHLDX,CL
MOVBL,AH
SHLBL,CL
SHRBLCL
ORDL,BL
解答:DX=2345H,AX=6780Ho該程序完成的功能如圖所示,將DX,AX拼裝成雙字后,
左移四位。
DX
DX
AX
1234
5678
DX
AX
2340
6780
23456780
AX
9.試分析下列程序段:
ADDAX,BX
JNCL2
SUBAX,BX
JNCL3
JMPSHORTL5
如果AX、BX的內(nèi)容給定如下:
AXBX
(1)14C6H80DCH
(2)B568H54B7H
問(wèn)該程序在上述情況下執(zhí)行后,程序轉(zhuǎn)向何處?
解答;(1)AX=AX+BX=14C6H+80DCH=95A2H;CF=0;無(wú)進(jìn)位,轉(zhuǎn)移至L2;
(2)AX=AX+BX=B568H+54B7H=0A1FH:CF=1:有進(jìn)位,繼續(xù)執(zhí)行:
AX=AX-BX=0A1FH+54B7H=B568H:CF=1:有借位,繼續(xù)執(zhí)行;
無(wú)條件轉(zhuǎn)移至SHORTL5
10.編寫(xiě)一段程序,比較兩個(gè)5字節(jié)的字符串OLDS和NEWS,如果OLDS字符串不同于
NEWS字符串,則執(zhí)行NEW_LESS,否則順序執(zhí)行。解答:編程如下,(說(shuō)明:左測(cè)程序?yàn)槌R?guī)編法,兩
個(gè)字符串在?個(gè)數(shù)據(jù)段中;右測(cè)的程序
要求OLDS在數(shù)據(jù)段中,NEWS在附加段中,利用串操作的指令是可行的)
LEASI,OLDS:LEASI,OLDS
LEADI,NEWS:LEADI,NEWS
MOVCX,5;MOVCX,5
NEXT:MOVAL,[Sl];OLD
MOVBL[DI];REPECMPSB
CMPAL,BL;JNZNEW_LESS
JNZNEW_LESS;.....
INCSI:JMPEXIT
INCDI;NEW_LESS:
LOOPNEXT;..…
.....EXIT:.....
JMPEXIT
NEW_LESS:
EXIT:..…
11.若在數(shù)據(jù)段中從字節(jié)變量TABLE相應(yīng)的單元開(kāi)始存放了0?15的平方值,試寫(xiě)出包含
有XLAT指令的指令序列杳找N(0-15)的平方。(設(shè)N的值存放在CL中)
解答:
MOVBX,OFFSETTABLE;LEABX,TABLE
MOVCL,N
MOVAL,CL
XLAT
12.有兩個(gè)雙字?jǐn)?shù)據(jù)串分別存放在ASC1和ASC2中(低字放低地址),求它們的差,結(jié)果
放在ASC3中(低字放低地址)。
ASC1DW578,400
ASC2DW694,12
ASC3DW?,?
解答:編程如K,
LEASI,ASC1
LEADI,ASC2
LEABX,ASC3
MOVCX,2
CLC
NEXT:MOVAX,[SI]
MOVDX,[DI]
SBBAX,DX
MOV[BX],AX
INCSI
INCSI
INCDI
INCDIINCBX
INCBX
LOOPNEXT
CH03匯編語(yǔ)言程序設(shè)計(jì)
習(xí)題與思考題
1.下列語(yǔ)句在存儲(chǔ)器中分別為變量分配多少字節(jié)空間?并畫(huà)出存儲(chǔ)空間的分配圖。
VAR1DB10,2
VAR2DW5DUP(?),0
VAR3DBlHOWAREYOU?3DUP(1,2)
VAR4DD-1,1,0
解答:字節(jié)空間--VAR1:2:VAR2:12:VAR3:20;VAR4:12。
存儲(chǔ)空間的分配圖:
DS:00000A02000000000000-000000000000484F
00105720204152452020—594F553F01020102
00200102FFFFFFFF0100—000000000000
2.假定VAR1和VAR2為字變量,LAB為標(biāo)號(hào),試指出下列指令的錯(cuò)誤之處。
(1)ADDVAR1,VAR2(2)SUBAL,VAR1
(3)JMPLAB[CX](4)JNZVAR1
(5)MOV[1000H],100(6)SHLAL,4
解答:(1)兩個(gè)操作數(shù)中至少有一個(gè)為寄存器;
(2)AL為字節(jié),VAR1為字變量,不匹配;
(3)口中不能用CX,SB為標(biāo)號(hào),非變量;
(4)轉(zhuǎn)向地址應(yīng)為標(biāo)號(hào),不能是變量:
(5)目的操作數(shù)的類型不確定;
(6)SHL指令中,當(dāng)所移位數(shù)超過(guò)1時(shí),必須用CL或CX來(lái)取代所移位數(shù)。
3.對(duì)于卜.面的符號(hào)定義,指出卜.列指令的借誤。
A1DB?
A2DB10
K1EQU1024
(1)MOVK1,AX(2)MOVA1,AX
(3)CMPA1,A2(4)K1EQU2048
解答:(1)K1為常量,不能用MOV指令賦值;
(2)A1為字節(jié),AX為字變量,不匹配;
(3)A1耒定義,無(wú)法做比較指令;
(4)K1重新賦值前,必須用PURGE釋放。
4.數(shù)據(jù)定義語(yǔ)句如下所示:
FIRSTDB90H,5FH,6EH,69H
SECONDDB5DUP(?)
THIRDDB5DUP(?)
自FIRST單元開(kāi)始存放的是個(gè)四字節(jié)的十六進(jìn)制數(shù)(低位字節(jié)在前),要求:
編?段程序?qū)⑦@個(gè)數(shù)左移兩位后存放到自SE8ND開(kāi)始的單元,右移兩位后存放到自
THIRD開(kāi)始的單元。(注意保留移出部分)解答:
DATASEGMENT
HRSTDB90H,5FH,6EH,69H
SECONDDB5DUP(?)
THIRDDB5DUP(?)
DATAENDS
CODESEGMENT
ASSUMECS:CODE,DS:DATA
START:MOVAX,DATA
MOVDS,AX
LEASI,FIRST
LEADI,SECOND
MOVCX,2
CLC
;左移2位
MOVAX,[SI];AX=5F90H為低十六位數(shù)據(jù)
INCSI
INCSI
MOVDX.[Sl]:DX=696EH為高十六位數(shù)據(jù)
PUSHDX;保存原有的高十六位數(shù)據(jù)
PUSHAX:保存原有的低卜六位數(shù)據(jù)
ROLDX,CL:將高位數(shù)據(jù)不帶進(jìn)位循環(huán)左移兩位,即高2位數(shù)據(jù)在DL的低2位
ANDDL,03H;讓DL中僅保存移出的高2位數(shù)據(jù)
MOV[DI+4],DL;將移出的高2位數(shù)據(jù)放入SE8ND中的最高單元中
ROLAX,CL;將低位數(shù)據(jù)不帶進(jìn)位循環(huán)左移兩位,即AX的高2位在AL的低2位
ANDAL,03H:讓AL中僅保存移出的AX高2位數(shù)據(jù)
MOVBL,AL;將AL中的數(shù)據(jù)放入BL中保存
POPAX;彈出原有的低十六位數(shù)據(jù)
POPDX;彈出原有的高十六位數(shù)據(jù)
SHLDX,CL;將高位數(shù)據(jù)算術(shù)邏輯左移2位
SHLAX,CL:將低位數(shù)據(jù)算術(shù)邏輯左移2位
ORDL,BL:將AX中移出的高2位數(shù)據(jù)放入DX的低2位
MOV[DI],AX
MOV[DI+2],DX
;右移2位
LEASI,FIRST
LEADI,THIRD
MOVCX,2
CLC
MOVAX,[SI]:AX=5F90H為低卜六位數(shù)據(jù)
INCSI
INCSI
MOVDX,[SI]:DX=696EH為高十六位數(shù)據(jù)
PUSHDX;保存原有的高十六位數(shù)據(jù)PUSHAX;保存原有的低十六位數(shù)據(jù)
RORAX,CL:將低位數(shù)據(jù)不帶進(jìn)位循環(huán)右移兩位,即低2位數(shù)據(jù)在AH的高2位
ANDAH,0C0H:讓AH中僅保存移出的低2位數(shù)據(jù)
PUSHCX
MOVCX,6
SHRAH,CL
POPCX
MOV[DI],AH;將移出的低2位數(shù)據(jù)放入THIRD中的最低單元中
RORDX,CL;將低位數(shù)據(jù)不帶進(jìn)位循環(huán)左移兩位,即AX的高2位在AL的低2位
ANDDH,0C0H;讓DH中僅保存移出的DX低2位數(shù)據(jù)
MOVBL,DH;將DH中的數(shù)據(jù)放入BL中保存
POPAX;彈出原有的低十六位數(shù)據(jù)
POPDX;彈出原有的高十六位數(shù)據(jù)
SHRDX.CL:將高位數(shù)據(jù)算術(shù)邏輯左移2位
SHRAX,CL;將低位數(shù)據(jù)算術(shù)邏輯左移2位
ORAH,BL:將DX中移出的低2位數(shù)據(jù)放入AX的高2位
MOV[DI+1],AX
MOV[DI+3],DX
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
5.(14)在當(dāng)前數(shù)據(jù)區(qū)從400H開(kāi)始的256個(gè)單元中存放著一組數(shù)據(jù),試編程序?qū)⑺鼈冺樞?/p>
搬移到從A000H開(kāi)始的順序256個(gè)單元中。
解答:
DATASEGMENT
ORG400H
DAT1DB...;256DUP(?)
ORG0A000H
DAT2DB...;256DUP(?)
DATAENDS
STACKSEGMENT
STACKENDS
CODESEGMENT
ASSUMEDS:DATACS:CODE,SS:STACK,ES:DATA
START:MOVAX,DATA
MOVDS,AX
;CH3-14
LEASI.DAT1LEADI,DAT2
MOVCX,128
AGAIN:MOVAL,[SI]
MOV[DI],AL
INCSI
INCDI
LOOPAGAIN
;CH3-15,將兩個(gè)數(shù)據(jù)塊逐個(gè)單元進(jìn)行比較,若有錯(cuò)BL=00H,否則B』FFH
LEA8I,DAT1
LEADI,DAT2
MOVCX,128
NEXT:MOVAL,[SI]
MOVBI_[DI]
CMPAL,BL
JNZERROR
INCSI
INCDI
LOOPNEXT
MOVBI_0FFH
JMPEXIT
ERROR:MOVBL,OOH
EXIT:MOVAX,4C00H
INT21H
CODEENDS
ENDSTART
6.試編程序?qū)?dāng)前數(shù)據(jù)區(qū)從BUFF開(kāi)始的4K個(gè)單元中均寫(xiě)入55H,并逐個(gè)單元讀出比較,
看寫(xiě)入的與讀出的是否一致。若全對(duì),則將ERR單元置0H;如果有錯(cuò),則將ERR單元
置FFH。
解答:
DATASEGMENT
BUFFDB1000HDUR?)
ERRDB?
DATAENDS
?
CODESEGMENT
ASSUMECS:CODE,DS:DATA
START:MOVAX,DATA
MOVDS,AX
;將55H依次放入BUFF開(kāi)始的4K個(gè)單元
LEASI,BUFF
MOVCX,1000HMOVAI_55H
NTXT:MOV[SI],AL
INCSI
LOOPNEXT
;取出與55H比較,全對(duì)則ERR=0,否則ERR=FFH
LEADI,BUFF
LEASI,ERR
MOVCXJOOOH
NEXT1:MOVAL,[DI]
INCDI
CMPAL,55H
JNZERROR;若有一個(gè)不同,即置ERR=FFH
LOOPNEXT1
MOVAL,OOH
MOV[SI],AL;全比較完無(wú)錯(cuò),則置ERR=0
JMPEXIT
ERROR:MOVAI_0FFH
MOV[SI],AL
;返回DOS
EXIT:MOVAH,4CH
INT21H
CODEENDS
ENDSTART
END
7.在上題中,如果發(fā)現(xiàn)有錯(cuò)時(shí),要求在ERR單元中存放出錯(cuò)的數(shù)據(jù)個(gè)數(shù),則程序該如何修
改?
解答:
DATASEGMENT
BUFFDB1000HDUR?)
ERRDW?
DATAENDS
CODESEGMENT
ASSUMEOS:CODE,DS:DATA
START:MOVAX,DATA
MOVDS,AX
;將55H依次放入BUFF開(kāi)始的4K個(gè)單元
LEASI,BUFF
MOVCXJOOOH
MOVAl_55H
NTXT:MOV[SI],AL
INCSI
LOOPNEXT
;取出與55H比較LEADI,BUFF
LEASI,ERR
MOVDX,0000H
MOVCXJOOOH
NEXT1:MOVAL,[DI]
INCDI
CMPAI_55H
JZNEXT2;若相同,則比較下一個(gè)
INCDX;否則將放出錯(cuò)個(gè)數(shù)的DX加1
NEXT2:LOOPNEXT1
MOV[SI],DX
EXIT:MOVAH,4CH
INT21H
CODEENDS
ENDSTART
END
8.試編寫(xiě)程序段,完成將數(shù)據(jù)區(qū)從0100H開(kāi)始的一串字節(jié)數(shù)據(jù)逐個(gè)從FOH端口輸出,己知
數(shù)據(jù)串以0AH為結(jié)束符。
解答:
DATASEGMENT
ORG0100H
DATA1DBNDUP(?)
DATAENDS
>
CODESEGMENT
ASSUMECS:CODE,DS:DATA
START:MOVAX,DATA
MOVDS,AX
;將口四1用數(shù)據(jù)串中的數(shù)據(jù)取出并從FOH端口中輸出
LEASI,DATA1
MOVCX.N
MOVBL,0AH
NTXT:MOVAI_[SI]
CMPAL,BL
JZEXIT
OUTOFOH,AL
INCSI
LOOPNEXT
;返回DOS
EXIT:MOVAH,4CH
INT21H
CODEENDSENDSTART
END
9.(24)內(nèi)存中以FIRST和SKOND開(kāi)始的單元中分別存放著兩個(gè)4位用壓縮B8碼表示
的十進(jìn)制數(shù),低位在前。編程序求這兩個(gè)數(shù)的和,仍用壓縮B8碼表示,并存到以THIRD
開(kāi)始的單元。
解答:
DATASEGMENT
FIRSTDW3412H
SECONDDW7856H
THIRDDB?,?,?
DATAENDS
STACKSEGMENT
STACKENDS
CODESEGMENT
ASSUMEDS:DATA,CS:CODE,SS:STACK,EGDATA
START:MOVAX,DATA
MOVDS,AX
LEASI,FIRST
LEADI,SECOND
LEABX,THIRD
MOVCX,2
CLC
AGAIN:MOVAL,BYTEPTR[SI]
MOVDL,BYTEPTR[DI]
ADCAL,DL
DAA
MOVBYTEFTR[BX],AL
INCSI
INCDI
INCBX
LOOPAGAIN
JCAA
MOVBYTEPTR[BX],0
JMPEXIT
AA:MOVBYTEFTR[BX1,1
EXIT:MOVAX,4C00H
INT21H
CODEENDS
ENDSTART
10.(27)設(shè)字變量單元A、B、C存放有三個(gè)數(shù),若三個(gè)數(shù)都不為零,則求三個(gè)數(shù)的和,存
放在D中;若有一個(gè)為零,則將其余兩個(gè)也清零,試編寫(xiě)程序。
解答:
DATASEGMENT
ADB?
BDB?
CDB?
DDW?
DATAENDS
9
STACKSEGMENT
STACKENDS
CODESEGMENT
ASSUMEDS:DATA,CS:CODE,SS:STACK,ESDATA
START:MOVAX,DATA
MOVDS,AX
LEASI,A
LEADI,D
MOVAL,[SI]
CMPAL,00
JZZERO
ADCDX,AL
LEASI,B
MOVAL,[SI]
CMPAL,00
JZZERO
ADCDX,AL
LEASI.C
MOVAI_[SI]
CMPAL,00
JZZERO
ADCDX,AL
MOV[DI],DX
JMPEXIT
ZERO:MOVAl_0
MOVA,AL
MOVB,AL
MOVC,AL;
EXIT:MOVAX,4CX)0H
INT21H
CODEENDS
ENDSTART
11.(16)試編程序,統(tǒng)計(jì)由TABLE開(kāi)始的128個(gè)單元中所存放的字符“A”的個(gè)數(shù),并將結(jié)
果存放在DX中。
解答:
DATASKMENT
TABLEDBX1,X2,...X128
DATAENDS
STACKSEGMENT
STACKENDS
CODESEGMENT
ASSUMEDS:DATA,CS:CODE,SS:STACK,ESDATA
START:MOVAX,DATA
MOVDS,AX
LEASUABLE
MOVDX,0
MOVCX,128
AGAIN:MOVAL,[SI]
CMPAL,'A,
JNZNEXT
INCDX
NEXT:INCSI
LCX3PAGAIN
MOVAX,4C00H
INT21H
CODEENDS
ENDSTART
12.試編制?個(gè)匯編語(yǔ)言程序,求出首地址為DATA的1000個(gè)字?jǐn)?shù)組中的最小偶數(shù),并把
它存放于MIN單元中。
解答:
DATASEGMENT
ARRAYDWX1,X2,...X1000
ARRAY_EVENDW1000DUR?)MINDW?
MAXDW?
DATAENDS
STACKSEGMENT
STACXENDS
CODESEGMENT
ASSUMEDS:DATA,CS:CODE,SS:STACK,ESDATA
START:MOVAX,DATA
MOVDS,AX
;將數(shù)組中的偶數(shù)放入ARRAY_EVEN中
LEASI,ARRAY
LEADI,ARRAY_EVEN
MOVCX,1000
AGAIN:MOVAX,[SI]
TESTAX,01h
JNZNEXT
MOV[DI],AX
INCDI
INCDI
NEXT:INCSI
INCSI
LOOPAGAIN
;找出ARRAY_EVEN中的最大數(shù)
LEASI,ARRA£EVEN
MOVCX,999
MOVAX,[SI]
MOVBX,AX
INCSI
INCSI
NEXT:CMPAX,[SI]
JAELL
MOVAX,[SI]
LL:INCSI
INCSI
LOOPNEXT
MOVMAX,AX
;找出ARRAYLEVEN中的最小數(shù)(第13題增加的部分)
LEASI,ARRAY_EVEN
MOVCX,999
MOVAX,[SI]
MOVBX,AXINCSI
INCSI
NEXT:CMPAX,[SI]
JBESS
MOVAX,[SI]
SS:INGSI
INCSI
LOOPNEXT
MOVMIN,AX
;返回DOS
MOVAX,4C00H
INT21H
CODEENDS
ENDSTART
13.在上題中,如果要求同時(shí)找出最大和最小的偶數(shù),并把它們分別存放于MAX和MIN
單元中,試完成程序。
解答:略(見(jiàn)第12題)。
14.(28)在DATA字?jǐn)?shù)組中存放有100H個(gè)16位補(bǔ)碼數(shù),試編寫(xiě)一程序求它們的平均值,放
在AX中,并求出數(shù)組中有多少個(gè)數(shù)小于平均值,將結(jié)果存于BX中。
解答:
DATASEGMENT
DATDWX1,X2,...X256
DATAENDS
STACKSEGMENT
STACKENDS
CODESEGMENT
ASSUMEDS:DATA,CS:CODE,SS:STACK,ESDATA
START:MOVAX,DATA
MOVDS,AX
;將數(shù)組中的100H個(gè)數(shù)求和后求平均值
LEASI.DAT
MOVCXJOOH
CLC
MOVBX,0000
MOVDX,0000
AGAIN:MOVAX,[SI]
ADDBX,AX
JNCNEXT
ADCDX,1NEXT:INCSI
INCSI
LCXDPAGAIN
MOVCX,10OH
MOVAX,BX
DIVCX
;找出DAT中的小于平均值的個(gè)數(shù)
LEASI,DAT
MOVCX,10OH
MOVDX.0000H
AGAINO:MOVBX,[SI]
CMPBX,AX;與平均值A(chǔ)X比較,大于等于則轉(zhuǎn)NEXT。,否則將讀數(shù)器DX加1
JGENEXTO
INCDX
NEXTO:INCSI
INCSI
LOOPAGAINO
MOVBX,DX
;返回DOS
MOVAX,4C00H
INT21H
CODEENDS
ENDSTART
15.(17)編寫(xiě)一個(gè)子程序,對(duì)AL中的數(shù)據(jù)進(jìn)行偶校驗(yàn),并將經(jīng)過(guò)校驗(yàn)的結(jié)果放回AL中。
解答:
DATASEGMENT
COUNTEQU7
DATAENDS
9
STACKSEGMENT
STACKENDS
CODESEGMENT
ASSUMEDS:DATA,CS:CODE,SS:STACK,ESDATA
START:MOVAX,DATA
MOVDS,AX
PUSHAX
MOVDX,0
MOVCX,COUNT
AGAIN:RCRAl_1
JNCLINODX
LLOOPAGAIN
POPAX
TESTDX,01
JZEXIT
ORAL,80
EXIT:MOVAX,4C00H
INT21H
;ANOTHfflMETHORD
JPEXIT
ORAL,80H
EXIT:MOVAX,4C00H
INT21H
CODEENDS
ENDSTART
16.(18)利用上題的予程序,對(duì)DATA開(kāi)始的256個(gè)單元的數(shù)據(jù)加上偶校驗(yàn),試編程序。
解答:
DATASEGMENT
DATDB...;256DUP(?)
RESULTDB...;256DUP(?)
NUMEQU256
COUNTEQU7
DATAENDS
STACKSEGMENT
STACKENDS
CODESEGMENT
ASSUMEDS:DATA,CS:CODE,SS:STACK,ES:DATA
START:MOVAX,DATA
MOVDS,AX
LEASI,DAT
LEADI,RESULT
MOVCX,NUM
NEXT:MOVAL,[SI]
GALLSUB1
MOV[DI],AL;MOV[SI],ALINCSI
INCDI
LOOPNEXT
MOVAX,4C00H
INT21H
SUB1PROC
PUSHAX
MOVDX,0
MOVCX,COUNT
AGAIN:RCRAL,1
JNCL
INCDX
L:LOOPAGAIN
POPAX
TESTDX,01
JZQUIT
ORAL.80H
QUIT:RET
SUB1ENDP
CODEENDS
ENDSTART
17.(19)試編寫(xiě)程序?qū)崿F(xiàn)將鍵盤(pán)輸入的小寫(xiě)字母轉(zhuǎn)換成大寫(xiě)字母并輸出.
解答:
DATASEGMENT
MESSDB'THEINPUTISNOTCORRECT.\ODHOAHT
DATAENDS
STACKSEGMEhTT
STACKENDS
>
CODESEGMENT
ASSUMEDS:DATA,CS:CODE,SS:STACK,ESDATA
START:MOVAX,DATA
MOVDS,AX
NEXT:MOVAH,01H
INT21H
CMPALQ
JZEXIT
CMPAL,'a'JBERROR
CMPAL,'z,
JAERROR
SUBAL,20H
MOVAH,02H
MOVDL,AL
INT21H
JMPNEXT
ERROR:MOVAH.09H
LEADX.MESS
INT21H
JMPNEXT
EXIT:MOVAX,4C00H
INT21H
CODEENDS
ENDSTART
18.從鍵盤(pán)接收20個(gè)字符,按鍵入順序查找最大的字符,并顯示輸出。
解答:
DATASEGMENT
DATDB20DUP(?)
DATAENDS
STACKSEGMENT
STACKENDS
CODESEGMENT
ASSUMEDS:DATA,CS:CODE,SS:STACK,ESDATA
START:MOVAX,DATA
MOVDS,AX
;從鍵盤(pán)接收20個(gè)字符,并送DAT中保存
LEA81,DAT
MOVCX,20
NEXT:MOVAH,01H
INT21H
MOV[SI],AL
INCSI
LOOPNEXT
;比較20個(gè)字符中的最大字符,并放入AL中
MOVCX.19
LEASI,DATMOVAL,[SI]
INCSI
NEXT1:CMPAL,[SI]
JAELL
MOVAL,[SI]
LLINCSI
LOOPNEXT1
;將最大的字符的ASCII碼由AL送DL顯示
MOVDL,AL
MOVAH.2H
INT21H
;返回DOS
MOVAX,4C00H
INT21H
CODEENDS
ENDSTART
19.(29)編寫(xiě)匯編程序,接收從鍵盤(pán)輸入的10個(gè)數(shù),輸入回車符表示結(jié)束,然后將這些數(shù)
加密后存于BUFF緩沖區(qū)中。加密表為:
輸入數(shù)字:0,1,2,3,4,5,6,7,8,9;密碼數(shù)字:7,5,9,1,3,6,8,0,2,4
解答:
DATASEGMENT
BUFFDB10DUP(?)
TABLEDB7,5,9,1,3,6,8,0,2,4
DATAENDS
?
STACKSEGMENT
STACKENDS
>
CODESEGMENT
ASSUMEDS:DATA,CS:CODE,SS:STACK,ESDATA
START:MOVAX,DATA
MOVDS,AX
LEADI,BUFF
NEXT:MOVAH,01H
INT21H;從鍵盤(pán)上接收單個(gè)字符
CMPA1_OAH:與OAH比,判是否要結(jié)束
JZEXIT
SUBAL,30H:否則,將0~9的ASCII碼轉(zhuǎn)換為十進(jìn)制數(shù)
LEABX,TABLE
XLAT;用查表指令進(jìn)行加密
MOV[DI],ALINCDI
JMPNEXT
;退出并返回DOS
EXIT:MOVAX,4C00H
INT21H
CODEENDS
ENDSTAR
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 衛(wèi)生月通報(bào)獎(jiǎng)勵(lì)制度
- 聯(lián)合免疫治療納米載體在胃癌中的遞送策略
- 2026年人工智能技術(shù)與應(yīng)用考試題庫(kù)及答案詳解
- 運(yùn)城2025年山西運(yùn)城農(nóng)業(yè)職業(yè)技術(shù)學(xué)院招聘15人筆試歷年參考題庫(kù)附帶答案詳解
- 舟山2025年浙江舟山岱山醫(yī)療健康集團(tuán)緊缺專業(yè)人才招聘22人(一)筆試歷年參考題庫(kù)附帶答案詳解
- 滁州2025年安徽滁州全椒縣經(jīng)濟(jì)開(kāi)發(fā)區(qū)綜合服務(wù)中心招聘工作人員筆試歷年參考題庫(kù)附帶答案詳解
- 昆明云南昆明市第二人民醫(yī)院融城老年病醫(yī)院招聘筆試歷年參考題庫(kù)附帶答案詳解
- 宣城2025年安徽宣城績(jī)溪縣幼兒園招聘編外聘用教師6人筆試歷年參考題庫(kù)附帶答案詳解
- 麗水2025年浙江麗水景寧畬族自治縣招聘教師5人筆試歷年參考題庫(kù)附帶答案詳解
- 2026年通信技術(shù)基礎(chǔ)應(yīng)用測(cè)試題
- 2025北京西城區(qū)初一(下)期末英語(yǔ)試題及答案
- 2026.01.01施行的《招標(biāo)人主體責(zé)任履行指引》
- DB11∕T 689-2025 既有建筑抗震加固技術(shù)規(guī)程
- 2025年湖南公務(wù)員《行政職業(yè)能力測(cè)驗(yàn)》試題及答案
- 提前招生面試制勝技巧
- 2024中國(guó)類風(fēng)濕關(guān)節(jié)炎診療指南課件
- 2026年中國(guó)家居行業(yè)發(fā)展展望及投資策略報(bào)告
- 陜西省西安鐵一中2026屆高一物理第一學(xué)期期末教學(xué)質(zhì)量檢測(cè)試題含解析
- DB3207∕T 1046-2023 香菇菌棒生產(chǎn)技術(shù)規(guī)程
- 2025-2030腦機(jī)接口神經(jīng)信號(hào)解碼芯片功耗降低技術(shù)路線圖報(bào)告
- 空調(diào)安裝應(yīng)急預(yù)案
評(píng)論
0/150
提交評(píng)論