版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上第一章習(xí)題及答案1. 微處理器內(nèi)部包含哪三大部分?解:運(yùn)算器、控制器和寄存器組。2. 完成下列數(shù)制的轉(zhuǎn)換B=( )D=( )H解:B=173D=ADH。0.11B=( )D解:0.11B=0.75D。211.25=( )B =( )H解:211.25=.01B=D3.4H。10111.0101B=( )H=( )BCD解:10111.0101B=17.5H=23.3125D=(0010 0011.0011 0001 0010 0101)BCD3. 已知X=+B,Y=B,設(shè)機(jī)器數(shù)為8位,分別寫出X、Y的原碼、反碼和補(bǔ)碼。解: 4. 已知X的真值為32,Y的真值為19,求
2、解:5. 已知X=51,Y=86,用補(bǔ)碼完成下列運(yùn)算,并判斷是否產(chǎn)生溢出(設(shè)字長為8位)。 XY XY XY XY解:X補(bǔ)=BY補(bǔ)=Y反+1=反+1=+1=BX+Y補(bǔ)=X補(bǔ)+Y補(bǔ)=B+B=BX+Y=X+Y補(bǔ) 補(bǔ)= 補(bǔ)=+1=B B,因?yàn)?,所以未產(chǎn)生溢出。 B,因?yàn)?,所以產(chǎn)生溢出。 B,因?yàn)?,所以產(chǎn)生溢出。 B,因?yàn)?,所以未產(chǎn)生溢出。6. 若使與門的輸出端輸出高電平,則各輸入端的狀態(tài)是什么?解:各輸入端為高電平。 7. 若使與非門的輸出端輸出低電平,則各輸入端的狀態(tài)是什么? 解:各輸入端為高電平。8. 如果74LS138譯碼器的Y4端輸出低電平,則C、B、A三個(gè)輸入端的狀態(tài)分別是什么?解:C、B
3、、A三個(gè)輸入端的狀態(tài)分別是1,0,0。第二章習(xí)題及答案1. 8086/8088CPU由哪兩大功能部分所組成?簡述它們的主要功能?解:8086/8088CPU由EU和BIU兩大功能部分組成。執(zhí)行單元EU主要完成指令的譯碼和執(zhí)行。執(zhí)行單元通過EU控制電路從BIU中取出指令,經(jīng)過指令譯碼形成各種定時(shí)控制信號(hào),向EU內(nèi)各功能部件發(fā)出相應(yīng)的控制命令,以完成指令所規(guī)定的操作。 總線接口單元BIU是8086/8088同外部聯(lián)系的接口。它負(fù)責(zé)所有涉及外部總線的操作,包括取指令、讀操作數(shù)、寫操作數(shù)、地址轉(zhuǎn)換和總線控制等。BIU內(nèi)部設(shè)置指令預(yù)取隊(duì)列,每當(dāng)指令隊(duì)列有兩個(gè)或兩個(gè)以上的字節(jié)空間,且執(zhí)行單元未向BIU申請(qǐng)
4、讀/寫存儲(chǔ)器操作數(shù)時(shí),BIU順序地預(yù)取后續(xù)指令的代碼,并填入指令隊(duì)列中。當(dāng)EU執(zhí)行的是轉(zhuǎn)移指令時(shí),則BIU清除當(dāng)前的指令預(yù)取隊(duì)列的內(nèi)容,從新的地址取回指令,并立即送到EU去執(zhí)行,然后,從后續(xù)的指令序列中取回指令填滿隊(duì)列。2. 什么是指令流水線?指令流水線需要哪些硬件支持?解:指令流水線是指8086/8088CPU內(nèi)部的執(zhí)行單元EU和總線接口單元BIU通過指令預(yù)取隊(duì)列協(xié)同工作從而實(shí)現(xiàn)指令的并行執(zhí)行。指令流水線最主要的硬件支持是BIU內(nèi)部的指令預(yù)取隊(duì)列。3. 邏輯地址如何轉(zhuǎn)換成物理地址?已知邏輯地址為2D1EH:35B8H,對(duì)應(yīng)的物理地址是什么?解:邏輯地址是段基址和段內(nèi)偏移地址形式的地址。物理地
5、址段基址×16段內(nèi)偏移已知邏輯地址為2D1EH:35B8H,則對(duì)應(yīng)的物理地址4. 8088和8086的指令預(yù)取隊(duì)列的長度分別是多少?解:8088的指令預(yù)取隊(duì)列的長度為4字節(jié);8086的指令預(yù)取隊(duì)列的長度為6字節(jié)。5. 簡述8086/8088CPU內(nèi)部的各寄存器的作用。解:AX、BX、CX和DX通用寄存器一般用于存放參與運(yùn)算的數(shù)據(jù)或運(yùn)算的結(jié)果。SP:用于存放堆棧棧頂?shù)亩蝺?nèi)偏移量。BP:用于存放訪問內(nèi)存時(shí)的偏移地址。SP和BP也可以用來存放數(shù)據(jù),它們的默認(rèn)段寄存器都是SS。SI和DI通常在間接尋址方式中存放操作數(shù)的偏移地址。在串操作指令中,DI的默認(rèn)段寄存器是ES。SI和DI也可以用來存
6、放數(shù)據(jù)。CS:代碼段寄存器,用于存放代碼段的段基址。DS:數(shù)據(jù)段寄存器,用于存放數(shù)據(jù)段的段基址。SS:堆棧段寄存器,用于存放堆棧段的段基址。ES:附加段寄存器,用于存放附加段的段基址。IP:指令指針寄存器,用于存放CPU即將執(zhí)行的下一條指令在代碼段中的段內(nèi)偏移地址。FLAGS:標(biāo)志寄存器,用于存放指令執(zhí)行結(jié)果的特征。6. 8086/8088CPU內(nèi)部的狀態(tài)標(biāo)志寄存器共有幾位標(biāo)志位?各位的含義是什么?解:狀態(tài)標(biāo)志寄存器共有9位標(biāo)志位,其中包含6個(gè)狀態(tài)標(biāo)志位和3個(gè)控制標(biāo)志位。狀態(tài)標(biāo)志位:CF(Carry Flag):進(jìn)位標(biāo)志。當(dāng)算術(shù)運(yùn)算結(jié)果使最高位產(chǎn)生進(jìn)位或借位時(shí),則CF=1;否則CF=0。PF(
7、Parity Flag):奇偶標(biāo)志。若運(yùn)算結(jié)果中的低8位含有偶數(shù)個(gè)1,則PF=1;否則PF=0。AF(Auxiliary carry Flag):輔助進(jìn)位標(biāo)志。運(yùn)算過程中若D3位向D4有進(jìn)位或借位時(shí),AF=1;否則AF=0。ZF(Zero Flag):零標(biāo)志。若運(yùn)算結(jié)果為0,則ZF=1;否則ZF=0。SF(Sign Flag):符號(hào)標(biāo)志。若運(yùn)算結(jié)果為負(fù),則SF=1;否則SF=0。OF(Overflow Flag):溢出標(biāo)志。當(dāng)帶符號(hào)數(shù)的補(bǔ)碼運(yùn)算結(jié)果超出機(jī)器所能表達(dá)的范圍時(shí),就會(huì)產(chǎn)生溢出,這時(shí)OF=1;否則OF=0。控制標(biāo)志位:DF(Direction Flag):方向標(biāo)志。控制串操作指令的地址
8、變化的方向。當(dāng)DF=0時(shí),串操作指令的地址指針按增量變化;當(dāng)DF=1時(shí),串操作指令的地址指針按減量變化。IF(Interrupt Flag):中斷允許標(biāo)志??刂莆⑻幚砥魇欠裨试S響應(yīng)可屏蔽中斷請(qǐng)求。若IF=1,則允許響應(yīng);否則禁止響應(yīng)。TF(Trap Flag):單步標(biāo)志。TF=1時(shí),CPU工作在單步方式。7. 8086/8088系統(tǒng)中存儲(chǔ)器的分段原則是什么?解:分段原則是要求段的起始單元的物理地址是16的整數(shù)倍,每段的物理長度為64KB。8. 當(dāng)ALE有效時(shí),8088的地址/數(shù)據(jù)總線上將出現(xiàn)什么信息?解:當(dāng)ALE有效時(shí),8088的地址/數(shù)據(jù)總線上將出現(xiàn)地址信息。9. READY管腳的作用是什么
9、?解:READY用于微處理器時(shí)序中插入等待狀態(tài)。若該引腳被置為低電平,則微處理器進(jìn)入等待狀態(tài)并保持空閑;若該引腳被置為高電平,則它對(duì)微處理器的操作不產(chǎn)生影響。CPU在讀、寫操作時(shí)序中的T3時(shí)鐘周期開始處,通過檢測(cè)READY管腳的狀態(tài)來決定是否插入TW等待時(shí)鐘周期,以解決CPU與存儲(chǔ)器或I/O接口之間速度不匹配的矛盾。10. 為什么在基于8086/8088的系統(tǒng)中經(jīng)常需要使用緩沖器?解:由于基于8086/8088的系統(tǒng)驅(qū)動(dòng)能力的不足,需要使用緩沖器。11. 8088工作在最小模式下包含哪些控制信號(hào)?解:最小模式下包含的控制信號(hào)有: RD、WR、IO/M、ALE、DT/R、DEN和INTA等信號(hào)。
10、12. 若CS=4000H,則當(dāng)前代碼段可尋址的存儲(chǔ)空間范圍是多少?解:CS=4000H時(shí),當(dāng)前代碼段可尋址的存儲(chǔ)空間范圍為40000H4FFFFH。第三章習(xí)題及答案1. 什么叫尋址方式?8086指令系統(tǒng)中有哪幾種尋址方式?解:尋址方式,即獲得地址的方法,主要指獲得段內(nèi)偏移地址的方法,段基址常采用默認(rèn)方式獲得。8086CPU指令系統(tǒng)的尋址方式有兩類:獲得指令中操作數(shù)地址的方法。獲得要執(zhí)行的下一條指令的地址的方法。8086指令系統(tǒng)中有8種操作數(shù)尋址方式,立即尋址。2. 下列指令中BUFF為字節(jié)類型變量,DATA為常量,指出下列指令中源操作數(shù)的尋址方式:(1)MOV AX, 1200(2)MOV
11、AL, BUFF(3)SUB BX, 2000H(4)MOV CX, SI(5)MOV DX, DATASI(6)MOV BL, SIBX(7)MOV DI, AX(8)ADD AX, DATADI+BP(9)PUSHF(10)MOV BX, ES:SI解: (1)MOV AX, 1200 ;立即尋址(2)MOV AL, BUFF ;直接尋址(3)SUB BX, 2000H ;直接尋址(4)MOV CX, SI ;寄存器間接尋址(5)MOV DX, DATASI ;寄存器相對(duì)尋址(6)MOV BL, SIBX ;基址變址尋址(7)MOV DI, AX ;寄存器尋址(8)ADD AX, DATA
12、DI+BP ;基址變址相對(duì)尋址(9)PUSHF ;隱含尋址(10)MOV BX, ES:SI;寄存器間接尋址3. 指出下列指令的錯(cuò)誤并改正。(1)MOV DS, 1200(2)MOV AL, BX(3)SUB 33H, AL(4)PUSH AL(5)MUL 45H(6)MOV BX, SI(7)MOVS BYTE PTRDS:DI, BYTE PTR DS:SI(8)ADD DATADI+BP, ES:CX(9)JMP BYTE PTRSI(10)OUT 3F8H, AL解:(1)MOV DS, 1200 ;不能用立即數(shù)給段基址寄存器賦值(2)MOV AL, BX ;操作數(shù)類型不一致(3)SU
13、B 33H, AL ;立即數(shù)不能作為目的操作數(shù)(4)PUSH AL;壓棧指令的操作數(shù)必須是字類型(5)MUL 45H;乘法指令中的操作數(shù)不能是立即數(shù)(6)MOV BX, SI;源和目的操作數(shù)不能同時(shí)為內(nèi)存操作數(shù)(7)MOVS BYTE PTR DS:DI, BYTE PTR DS:SI; 目的操作數(shù)應(yīng)該在ES段。(8)ADD DATADI+BP, ES:CX;CX不能做間址寄存器使用(9)JMP BYTE PTRSI;操作數(shù)必須是字類型(10)OUT 3F8H, AL;16位的端口地址不能直接在輸入輸出指令中使用。4. 根據(jù)要求寫出一條(或幾條)匯編語言指令。(1)將立即數(shù)4000H送入寄存器
14、BX。(2)將立即數(shù)4000H送入段寄存器DS。(3)將變址寄存器DI的內(nèi)容送入數(shù)據(jù)段中2000H的存儲(chǔ)單元。(4)把數(shù)據(jù)段中2000H存儲(chǔ)單元的內(nèi)容送段寄存器ES。(5)將立即數(shù)3DH與AL相加,結(jié)果送回AL。(6)把BX與CX寄存器內(nèi)容相加,結(jié)果送入BX。(7)寄存器BX中的低4位內(nèi)容保持不變,其他位按位取反,結(jié)果仍在BX中。(8)實(shí)現(xiàn)AX與-128的乘積運(yùn)算。(9)實(shí)現(xiàn)CX中高、低8位內(nèi)容的交換。(10)將DX中D0、D4、D8位置1,其余位保持不變。解:(1)將立即數(shù)4000H送入寄存器BX。MOV BX,4000H(2)將立即數(shù)4000H送入段寄存器DS。MOV AX, 4000HM
15、OV DS, AX(3)將變址寄存器DI的內(nèi)容送入數(shù)據(jù)段中2000H的存儲(chǔ)單元。MOV 2000H,DI(4)把數(shù)據(jù)段中2000H存儲(chǔ)單元的內(nèi)容送段寄存器ES。MOV AX,2000HMOV ES,AX(5)將立即數(shù)3DH與AL相加,結(jié)果送回AL。ADD AL,3DH(6)把BX與CX寄存器內(nèi)容相加,結(jié)果送入BX。ADD BX,CX(7)寄存器BX中的低4位內(nèi)容保持不變,其他位按位取反,結(jié)果仍在BX中。MOV AX, BX,NOT AXAND AX,0FFF0HAND BX,000FHOR BX,AX(8)實(shí)現(xiàn)AX與-128的乘積運(yùn)算。MOV BX,-128IMUL BX(9)實(shí)現(xiàn)CX中高、低
16、8位內(nèi)容的交換。MOV AL,8ROL CX AL(10)將DX中D0、D4、D8位置1,其余位保持不變。0R DX,0111H5. 設(shè)SS=2000H,SP=1000H,SI=2300,DI=7800,BX=9A00H。說明執(zhí)行下面每條指令時(shí),堆棧內(nèi)容的變化和堆棧指針的值。PUSH SIPUSH DIPOP BX解:PUSH SI(0FFFH)=23H(0FFEH)=00HSP=0FFEHPUSH DI(0FFDH)=78H(0FFCH)=00HSP=0FFCHPOP BXBX=7800HSP=0FFEH6. 內(nèi)存中18FC0H、18FC1H、18FC2H單元的內(nèi)容分別為23H、55、5AH
17、,DS=1000H,BX=8FC0H,SI=1,執(zhí)行下面兩條指令后AX=?DX=?MOV AX, BX+SILEA DX, BX+SI解:AX=5A55HDX=8FC1H7. 回答下列問題:(1)設(shè)AL=7FH,執(zhí)行CBW指令后,AX=?(2)設(shè)AX=8A9CH,執(zhí)行CWD指令后,AX=?DX=?解:(1)設(shè)AL=7FH,執(zhí)行CBW指令后,AX=007FH(2)設(shè)AX=8A9CH,執(zhí)行CWD指令后,AX=8A9CH DX=FFFFH8. 執(zhí)行以下兩條指令后,F(xiàn)LAGS的6個(gè)狀態(tài)標(biāo)志位的值是什么?MOV AX, 847BHADD AX, 9438H結(jié)果為118B3H解:CF=1 PF=0(為運(yùn)算
18、結(jié)果的低8位奇偶) AF=1 ZF=0 SF=0 OF=1 9. 下面程序段將03E8H轉(zhuǎn)換成十進(jìn)制數(shù)并顯示,填寫指令后的空格。MOV AX, 03E8H;AH= 03H , AL= E8H MOV CX, 4 MOV DI, 2000H ;DI= 2000H MOV BX, 10 ;BH= 00 , BL= 0AHGO0: SUB DX, DX ;CF= 0 , ZF= 1 DIV BX ;AX= 64H , DX= 0 MOV DI, DL ;DI= 0 INC DI LOOP GO0 ;CX= 3 MOV CX, 4 GO1: DEC DI ;DI=2003HMOV DL, DI ;DL
19、=01OR DL, 30H ;DL=31H MOV AH, 02 ;顯示1位十進(jìn)制數(shù)1 INT 21H LOOP GO1 10. 用串操作指令替換以下程序段:ABC:MOV AL, SI MOV ES:DI, AL INC SI INC DI LOOP ABC解:REP MOVSB11. 設(shè)AX=AAH,順序執(zhí)行下列各條指令,填寫空格。(1)XOR AX, 0FFFFH ;AX= (2)AND AX, 13A0H ;AX= (3)OR AX, 25C9H ;AX= (4)TEST AX, 0004H ;AX= 解: (1)XOR AX, 0FFFFH ;AX= FF55H (2)AND AX,
20、 13A0H ;AX= 00A0H (3)OR AX, 25C9H ;AX= 25EBH (4)TEST AX, 0004H ;AX= 00AAH 12. 試寫出執(zhí)行下列3條指令后BX寄存器的內(nèi)容。MOV CL,2HMOV BX,CO2DHSHR BX,CL解: BX=300BH13. 執(zhí)行下列程序段后,AX、BX的內(nèi)容各是什么?(1) MOV AX,0001HMOV BX,8000HNEG AX ;0-0001HMOV CX,4AA:SHL AX,1 RCL BX,1 LOOP AA HLT解:AX=FFF0H BX=000FH(2)MOV AX,0 MOV BX,1 MOV CX,100
21、A: ADD AX,BX INC BX LOOP A HLT解:AX=8080H BX=0101H14. 編寫程序段,實(shí)現(xiàn)下述要求:(1) 使AX寄存器的低4位清0,其余位不變。(2) 使BX寄存器的低4位置1,其余位不變。(3) 測(cè)試AX的第0位和第4位,兩位都是1時(shí)將AL清0。(4) 測(cè)試AX的第0位和第4位,兩位中有一個(gè)為1時(shí)將AL清0。解:(1)使AX寄存器的低4位清0,其余位不變。 AND AX, 0FFF0H(2) 使BX寄存器的低4位置1,其余位不變。OR AX, 0FH(3)測(cè)試AX的第0位和第4位,兩位都是1時(shí)將AL清0。TEST AX,01HJZ AATEST AX,10H
22、JZ AAMOV AL,0HLTAA: .(4)測(cè)試AX的第0位和第4位,兩位中有一個(gè)為1時(shí)將AL清0。TEST AX, 11HJZ AAMOV AL,0AA: .15. 編寫程序段,完成把AX中的16進(jìn)制數(shù)轉(zhuǎn)換為ASCII碼,并將對(duì)應(yīng)的ASCII碼依次存入MEM開始的存儲(chǔ)單元中。例如,當(dāng)AX的內(nèi)容為37B6H時(shí),MEM開始的4 個(gè)單元的內(nèi)容依次為33H,37H,42H,36H。解:MOV CX,4LEA SI,MEMADD SI,3;SI指向MEM+3CC: MOV BX,AX ;保存原始數(shù)據(jù)AND AX, 000FH ;取個(gè)位數(shù)CMP AL, 9JA AA ;在AB之間就加37HADD A
23、L,30H ;在09之間就加30HJMP BBAA: ADD AL,37HBB: MOV SI,AL ;保存ASCII值DEC SIPUSH CXMOV AX,BXMOV CL,4SHR AX,CL ;準(zhǔn)備取下一個(gè)數(shù)POP CXLOOP CC16. 編寫程序段,求從TABLE開始的10個(gè)無符號(hào)數(shù)的和,結(jié)果放在SUM單元中。解:LEA SI,TABLEMOV CX,10XOR AX,AXNEXT:ADD AL,SIADC AH,0INC SILOOP NEXTMOV SUM,AX17. 編寫程序段,從鍵盤上輸入字符串HELLO,并在串尾加結(jié)束標(biāo)志$。解: LEA DX,STRING ;設(shè)置字符串
24、存放緩沖區(qū)首地址 MOV AH ,0AH ;調(diào)用10號(hào)功能,輸入字符串 INT 21H MOV CL,STRING+1 ;實(shí)際鍵入的字符個(gè)數(shù)送CLXOR CH,CH ADD DX,2ADD DX,CX ;得到字符串尾地址MOV BX,DXMOV BYTE PTRBX,'$' 18. 編寫程序段,在屏幕上依次顯示1、2、3、A、B、C。解: LEA BX,STR ;STR為6個(gè)字符的存放區(qū)域首地址 MOV CX,6LPP: MOV AH,2 MOV DL,BX INC BX INT 21H;利用2號(hào)功能調(diào)用依次先生6個(gè)字符 LOOP LPP19. 編寫程序段,在屏幕上顯示字符串“
25、Hello World”。解: LEA DX,STRING ; STRING字符的存放區(qū)域首地址MOV AH,09HINT 21H ; 利用9號(hào)功能調(diào)用顯示字符串20. 編寫程序段,把內(nèi)存中首地址為MEM1的200個(gè)字節(jié)送到首地址為MEM2的區(qū)域。解: MOVAX,SEG MEM1MOVDS,AX;設(shè)定源串段地址MOVAX,SEG MEM2MOVES,AX;設(shè)定目標(biāo)串段地址MOVSI,0;設(shè)定源串偏移地址MOVDI,0;設(shè)定目標(biāo)串偏移地址MOVCX,200;串長度送CXCLD;(DF)=0,使地址指針按增量方向修改REP MOVSB;每次傳送一個(gè)字節(jié),并自動(dòng)HLT 21. 編寫程序段,以400
26、0H為起始地址的32個(gè)單元中存有32個(gè)有符號(hào)數(shù),統(tǒng)計(jì)其中負(fù)數(shù)的個(gè)數(shù),并將統(tǒng)計(jì)結(jié)果保存在BUFFER單元中。解:START: MOV DI,OFFSET BUFFERXOR AL,ALMOV DI,ALMOV SI,4000HMOV CX,32AA:MOV AL,SIOR AL,ALJNS X1INC DI X1: INC SINEXT:LOOP AAHLT第四章習(xí)題及答案1. 什么叫匯編?匯編語言源程序的處理過程是什么?解:任何CPU都只能執(zhí)行機(jī)器語言程序。匯編語言不是機(jī)器語言,匯編語言程序必須通過具有“翻譯”功能的系統(tǒng)程序的處理,處理的過程稱為匯編。匯編語言源程序經(jīng)過匯編生成機(jī)器語言目標(biāo)程序
27、,簡稱目標(biāo)程序。目標(biāo)程序經(jīng)過連接程序連接,就得到可執(zhí)行的機(jī)器語言程序文件。2. 匯編語言的語句類型有哪些?各有什么特點(diǎn)?解:匯編語言的語句類型有兩種:指示性語句和指令性語句。指示性語句可以位于任何段中,指令性語句必須位于代碼段內(nèi)。l 指示性語句又稱為偽操作語句,它不是8088/8086CPU的指令,它與匯編程序(assembler)有關(guān)。指示性語句的功能主要是變量定義、為數(shù)據(jù)分配存儲(chǔ)空間、告訴匯編程序如何對(duì)源程序匯編等。源程序匯編后指示性語句不生成目標(biāo)代碼,所以常被稱為偽指令。l 指令性語句指令性語句是可執(zhí)行語句,是8088/8086CPU的指令。源程序匯編后指令性語句生成目標(biāo)代碼。第3章中介
28、紹的所有指令都是指令性語句的主體,其操作數(shù)最多只能有兩個(gè)。3. 匯編語言源程序的基本結(jié)構(gòu)是什么?解:匯編語言源程序由若干段組成:數(shù)據(jù)段、附件數(shù)據(jù)段、堆棧段和代碼段等,段與段之間的順序可以隨意排列,每一段由SEGMENT開始,以ENDS結(jié)束,每段的開始和結(jié)束都附有相同的名字。一個(gè)程序一般定義三個(gè)段:數(shù)據(jù)段、堆棧段和代碼段,必要時(shí)增加定義附加數(shù)據(jù)段,能獨(dú)立運(yùn)行的程序至少包含一個(gè)代碼段。4. 寫出完成下述要求的變量定義的語句:(1) 為緩沖區(qū)BUFF保留200個(gè)字節(jié)的內(nèi)存空間(2) 將字符串BYTE,WORD存放于某數(shù)據(jù)區(qū)(3) 在數(shù)據(jù)區(qū)中存入下列5個(gè)數(shù)據(jù):2040H,0300H,10H,0020H
29、,1048H解:(1)為緩沖區(qū)BUFF保留200個(gè)字節(jié)的內(nèi)存空間BUFF DB 200 DUP(?)(2)將字符串BYTE,WORD存放于某數(shù)據(jù)區(qū)DB BYTE,WORD(3)在數(shù)據(jù)區(qū)中存入下列5個(gè)數(shù)據(jù):2040H,0300H,10H,0020H,1048HDW 2040H,0300H,10H,0020H,1048H5. 畫出下面數(shù)據(jù)段匯編后的內(nèi)存圖,并標(biāo)出變量的位置。DATA SEGMENTAA EQU 78HAA0 DB 09H,-2,45H,2 DUP(01H, ?),AB AA1 DW -2,34H+AAAA2 DD 12H ;雙字類型DATAENDS解:如圖所示。6. 設(shè)程序中的數(shù)據(jù)
30、定義如下:NAME DB 30 DUP(?)LISTDB 1,8,3,2ADDR DW 30 DUP(?)(1) 取NAME的偏移地址放入SI(2) 取LIST的前兩個(gè)字節(jié)存入AX(3) 取LIST實(shí)際長度解:(1)取NAME的偏移地址放入SIMOV SI,OFFSET NAME(2)取LIST的前兩個(gè)字節(jié)存入AXMOV AX,WORD PTR LIST(3)取LIST實(shí)際長度MOV AX,SIZE LIST ;P857. 依據(jù)下列指示性語句,求表達(dá)式的值。SHOW0 EQU 200SHOW1 EQU 15SHOW2 EQU 2 SHOW0X100+55 SHOW0 AND SHOW1-15
31、(SHOW0/SHOW2) MOD SHOW1 SHOW1 OR SHOW0解:(1) SHOW0 X 100+55=200X100+55 SHOW0 AND SHOW1-15=C8H AND 0FH - 0FH = 0;減法的優(yōu)先級(jí)過于AND (SHOW0/SHOW2)MOD SHOW1=100 MOD 15=10 SHOW1 OR SHOW0=0FH OR C8H=CF8. 編寫程序,統(tǒng)計(jì)寄存器BX中二進(jìn)制位“1”的個(gè)數(shù),結(jié)果存在AL中。DATA SEGMENTNUM DW ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,
32、DATA MOV DS,AXMOV AL,0 MOV BX,NUM ;把數(shù)X傳送給BXMOV CX,16 NEXT: SHL AX,1 JNC NEXT1 INC AL NEXT1: LOOP NEXT MOV AH,4CH INT 21HCODE ENDSEND START9. 某數(shù)據(jù)塊存放在BUFFER開始的100個(gè)字節(jié)單元中,試編寫程序統(tǒng)計(jì)數(shù)據(jù)塊中正數(shù)(不包括0)的個(gè)數(shù),并將統(tǒng)計(jì)的結(jié)果存放到NUMBER單元中。解DATA SEGMENTBUFFER DB 100(?) NUMBER DB 0DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART
33、: MOV AX,DATA MOV DS,AXXOR DX, DXMOV CX,100MOV SI,OFFSET BUFFERNEXT: MOV AL,SIINC SITEST AL,80H ;是正數(shù)嗎?JNZ GOON;否,轉(zhuǎn)移到GOONCMP AL,0 JZ GOONINC DXGOON: LOOP NEXTMOV NUMBER,DXMOV AH,4CH INT 21HCODE ENDSEND START10. 閱讀下面程序段,指出它的功能。DATA SEGMENTASCII DB 30H, 31H, 32H, 33H ,34H ,35H, 36H, 37H, 38H, 39HHEX DB
34、 04HDATA ENDS CODE SEGMENT ASSUME CS:CODE, DS: DATASTART:MOV AX, DATAMOV DS, AXMOV BX,OFFSET ASCIIMOV AL,HEXAND AL,0FHMOV AL,BX+ALMOV DL,ALMOV AH,2INT 21HMOV AH,4CHINT 21HCODE ENDSEND START解:這時(shí)一個(gè)查表程序,查表取出HEX的ASCII。并在屏幕上顯示ASCII碼11. 某數(shù)據(jù)區(qū)中有100個(gè)小寫字母,編程把它們轉(zhuǎn)換成大寫字母,并在屏幕上顯示。解:DATA SEGMENTBUFFER DB 100(?) DA
35、TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AXMOV CX,100MOV SI,OFFSET BUFFERNEXT: MOV AL,SIINC SICMP AL,61H ;是小寫字母嗎?JB GOON;否,轉(zhuǎn)移到GOON(小于則轉(zhuǎn)移)SUB AL,20H MOV DL,ALMOV AH,2INT 21HGOON: LOOP NEXTMOV AH,4CH INT 21HCODE ENDS END START12. 子程序的參數(shù)傳遞有哪些方法?解:主程序在調(diào)用子程序時(shí),要為子程序預(yù)置數(shù)據(jù),在子程序返回時(shí)給出
36、數(shù)據(jù)處理的結(jié)果,這稱為數(shù)據(jù)傳送或變量傳送。方法主要有以下幾種: 寄存器傳送。 地址表傳送,需要傳送的參數(shù)較多時(shí)可以利用存儲(chǔ)單元傳送。在調(diào)用子程序前,把所有參數(shù)依次送入地址表,然后將地址表的首地址作為子程序入口參數(shù)傳遞給子程序。 堆棧傳送,這種方式要審慎注意堆棧的變化情況。13. 過程定義的一般格式是什么?子程序開始處為什么常用PUSH指令?返回前用POP指令?解:格式見P90,如果一個(gè)子程序被多次調(diào)用,保護(hù)與恢復(fù)(主程序)現(xiàn)場(chǎng)就非常重要。主程序每次調(diào)用子程序時(shí),主程序的現(xiàn)場(chǎng)不會(huì)相同,保護(hù)與恢復(fù)現(xiàn)場(chǎng)的工作就只能在子程序中進(jìn)行。原則上,在子程序中,首先把子程序中要用到的寄存器、存儲(chǔ)單元、狀態(tài)標(biāo)志等
37、壓入堆?;虼嫒胩囟臻g中,然后子程序才可以使用它們,使用完后再將它們彈出堆棧或從特定空間中取出,恢復(fù)它們?cè)瓉淼闹?,即恢?fù)主程序現(xiàn)場(chǎng)。保護(hù)和恢復(fù)現(xiàn)場(chǎng)常使用PUSH和POP指令。14. 閱讀下面程序段,指出它的功能。DATA SEGMENT STRING DB ExxperienceLENG DW 100KEY DB xDATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATAMAIN PROC FARSTART:MOV AX, DATAMOV DS, AXDI-DI+SI+SP->BPBP-BP+IP-IP+BP+4->SICLCHBP+
38、6->DIBLBHMOV ES, AXLEA BX, STRING ;字符串地址->BXLEA CX, LENG ;字符串長->CXPUSH BXPUSH CXMOV AL, KEYCALL DELCHARMOV AH, 4CHINT21HMAIN ENDPDELCHAR PROC PUSH BPMOV BP, SPPUSH SIPUSH DICLDMOV SI, BP+4MOV CX, SIMOV DI, BP+6REPNE SCASBJNE DONEMOV SI, BP+4DEC WORD PTRSIMOV SI, DIDEC DIREP MOVSBDONE: POP D
39、IPOP SIPOP BPRETDELCHAR ENDPCODE ENDSEND START解:從字符串中刪去多余的X字符。15. 顯示兩位壓縮BCD碼值(099),要求不顯示前導(dǎo)0。解:DATA SEGMENTBUF DB ? ; 內(nèi)存中的兩位壓縮BCD碼DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AXMOV AL, BUFMOV BL,ALNEXT: MOV CL,4 SHR AL, CL AND AL,0FHCMP AL,0JZ GOONADD AL,30H ;顯示高位BCD碼MOV DL,AL
40、MOV AH,2INT 21HGOON: MOV AL,BLAND AL,0FH ADD AL,30H ;顯示低位BCD碼MOV DL,ALMOV AH,2INT 21HMOV AH,4CH INT 21HCODE ENDSEND START16. 某數(shù)據(jù)區(qū)中連續(xù)存放著100個(gè)整數(shù),要求將其中為0的元素刪除,并將保留的數(shù)據(jù)連續(xù)存放。解:DATA SEGMENT STRING DB 100(?)LENG DW 100KEY DB 0DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATAMAIN PROC FARSTART:MOV AX, DATA
41、MOV DS, AXMOV ES, AXLEA BX, STRINGLEA CX, LENGPUSH BXPUSH CXMOV AL, KEYCALL DELCHARMOV AH, 4CHINT21HMAIN ENDPDELCHAR PROC PUSH BPMOV BP, SPPUSH SIPUSH DICLDMOV SI, BP+4MOV CX, SIMOV DI, BP+6REPNE SCASBJNE DONEMOV SI, BP+4DEC WORD PTRSIMOV SI, DIDEC DIREP MOVSBDONE: POP DIPOP SIPOP BPRETDELCHAR ENDPC
42、ODE ENDSEND START17. 編程,把以DATA為首址的兩個(gè)連續(xù)單元中的16位無符號(hào)數(shù)乘以10。解: DATA SEGMENTBUFFER DB A3H,27H DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AXLEA SI,BUFFERMOV AX,SISHL AX,1MOV BX,AXMOV CL,3MOV AX,SISHL AX,CLADD AX,BXMOV BUFFER,ALMOV BUFFER+1,AHMOV AH,4CH INT 21HCODE ENDSEND START注:2X
43、+23X=2X+8X=10X18. 編程,比較兩個(gè)字串是否相同,并找出其中第一個(gè)不相等字符的地址,將該地址送BX,不相等的字符送AL。兩個(gè)字符串的長度均為200個(gè)字節(jié),M1為源串首地址,M2為目標(biāo)串首地址。解:DATA SEGMENTM1 DB 100DUP(?)DATA ENDSEDATA SEGMENTM2 DB 100DUP(?) EDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA ,ES:EDATASTART: MOV AX,DATA MOV DS,AXMOV AX,EDATA MOV ES,AXLEASI,M1 ;(SI)源串首地址LEADI,M
44、2 ;(DI)目標(biāo)串首地址MOVCX,200 ;(CX)串長度CLD;(DF)=0,使地址指針按增量方向修改REPECMPSB ;若相等則重復(fù)比較AND CX,0FFFFH ;檢查(CX)是否等于零JZ STOP;(CX)=0則轉(zhuǎn)STOPDECSI;(SI)-1,指向不相等單元MOVBX,SI ;(BX)不相等單元的地址MOVAL,SI ;(AL)不相等單元的內(nèi)容STOP: MOV AH,4CH INT 21HCODE ENDSEND START19. 編程,在內(nèi)存的數(shù)據(jù)段中存放了100個(gè)8位帶符號(hào)數(shù),其首地址為TABLE,試統(tǒng)計(jì)其中正元素、負(fù)元素、和零元素的個(gè)數(shù),并分別將個(gè)數(shù)存入PLUS,M
45、INUS,ZERO等3個(gè)單元中;解:DATA SEGMENTTABLE DB 100DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AXXOR AL,ALMOV PLUS,ALMOV MINUS,ALMOV ZERO,ALLEA SI,TABLEMOV CX,100CLDCHECK:LODSBOR AL,ALJS X1JZ X2INC PLUSJMP NEXTX1:INC MINUSJMP NEXTX2:INC ZERONEXT:LOOP CHECK: MOV AH,4CH INT 21HC
46、ODE ENDSEND START20. 編程,在數(shù)據(jù)段DATA1開始的80個(gè)連續(xù)的存儲(chǔ)單元中,存放80位同學(xué)某門課程的考試成績(0100)。編寫程序統(tǒng)計(jì)成績90分的人數(shù),8089分的人數(shù),7079分的人數(shù),6069分以及<60分的人數(shù)。將結(jié)果存放到DATA2開始的存儲(chǔ)單元中。解:DATA SEGMENT DATA1 DB 80 DUP(?) ;假定學(xué)生成績已放入這80個(gè)單元中 DATA2 DB 5 DUP(0) ;統(tǒng)計(jì)結(jié)果的存放單元 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AXMOV CX,80 ;統(tǒng)計(jì)80個(gè)學(xué)生的成績 LEA SI,DATA1 LEA DI,DATA2 AGAIN: MOV AL,SI CMP AL,90 ;與90比較 JC NEXT1 ;小于90分,轉(zhuǎn)NEXT1 INC BYTE PTR DI ;否則90分以上的人數(shù)加1 JMP STO ;轉(zhuǎn)循環(huán)控制處理 NEXT1: CMP AL,80 ;與80比較 JC NEXT2;小于80分,轉(zhuǎn)NEXT2 INC BYTE PTRDI
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 【創(chuàng)新設(shè)計(jì)】2022年高三生物(人教版)一輪復(fù)習(xí)-基礎(chǔ)課時(shí)案26-內(nèi)環(huán)境組成與穩(wěn)態(tài)-課后訓(xùn)練
- 山東省濟(jì)南市歷城二中2025年高考物理模擬試卷(含答案)
- 【優(yōu)化方案】2021高考數(shù)學(xué)(人教版)一輪復(fù)習(xí)學(xué)案19-三角函數(shù)的圖象與性質(zhì)
- 【名師一號(hào)】2020-2021學(xué)年高中生物(人教版)必修三雙基限時(shí)練12-群落的結(jié)構(gòu)
- 【全程復(fù)習(xí)方略】2020年高考政治一輪課時(shí)提升作業(yè)(2)-必修1-第1單元-第2課(江蘇專供)
- 2023-2024學(xué)年湖南省長沙一中雨花新華都學(xué)校七年級(jí)(上)期末數(shù)學(xué)試卷
- 一年級(jí)數(shù)學(xué)計(jì)算題專項(xiàng)練習(xí)1000題集錦
- 【2022屆走向高考】高三數(shù)學(xué)一輪(人教B版)基礎(chǔ)鞏固:第7章-第2節(jié)-基本不等式
- 【創(chuàng)新設(shè)計(jì)】2021年高考數(shù)學(xué)(四川專用-理)一輪復(fù)習(xí)考點(diǎn)突破:第9篇-第2講-用樣本估計(jì)總體
- 晚唐詩歌創(chuàng)作成就資料講解
- GB/T 13940-1992聚丙烯酰胺
- 75t循環(huán)流化床鍋爐設(shè)計(jì)說明書
- 認(rèn)知神經(jīng)科學(xué)課件
- 城市規(guī)劃原理-第四版-課件
- JT∕T 1443-2022 冷鏈運(yùn)輸監(jiān)控管理平臺(tái)技術(shù)要求
- 世界各國電源標(biāo)準(zhǔn)插頭插座一覽表
- 空調(diào)冷量計(jì)算與配置方法
- GF-2000-0203 建設(shè)工程勘察合同
- 企業(yè)技術(shù)中心成立文件
- 四年級(jí)家長會(huì)(完美版)
- 苯酚及酚類37張課件
評(píng)論
0/150
提交評(píng)論