




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、第一章習題及答案1. 微處理器內(nèi)部包含哪三大部分?解: 運算器、控制器和寄存器組。2. 完成下列數(shù)制的轉(zhuǎn)換10101101B=()D=() H解: 10101101B=173D=ADH。0.11B=() D解: 0.11B=0.75D。211.25=()B =()H解: 211.25=11010011.01B=D3.4H。10111.0101B=()H=()BCD解: 10111.0101B=17.5H=23.3125D=( 0010 0011.0011 0001 0010 0101 )BCD3. 已知 X=+1011010B,Y= 0011011B,設機器數(shù)為 8 位,分別寫出 X、Y 的原
2、碼、反碼和補碼。解:XXX原反補01011010BY01011010BY01011010BY原反補10011011B11100100B11100101B4. 已知 X 的真值為 32, Y 的真值為 19,求XY 補?解:XY 補00001101B5. 已知 X=51,Y=86,用補碼完成下列運算, 并判斷是否產(chǎn)生溢出 (設字長為 8 位)。 XY XY XY XY解:10100011B ,因為 C 6C 70 ,所以未產(chǎn)生溢出。X補 =00110011BY補 =Y反+1=11010110反+1=10101001+1=10101010BX+Y補=X補 +Y補 =00110011B+101010
3、10B=11011101BX+Y=X+Y補 補 =11011101 補=10100010+1=10100011B. 11110111B ,因為 C6C 71,所以產(chǎn)生溢出。 01110111B,因為 C6C71 ,所以產(chǎn)生溢出。 00100011B ,因為 C6C70 ,所以未產(chǎn)生溢出。6. 若使與門的輸出端輸出高電平,則各輸入端的狀態(tài)是什么?解: 各輸入端為高電平。7. 若使與非門的輸出端輸出低電平,則各輸入端的狀態(tài)是什么?解: 各輸入端為高電平。8. 如果 74LS138譯碼器的 Y4 端輸出低電平,則 C、 B、 A 三個輸入端的狀態(tài)分別是什么?解: C、 B、A 三個輸入端的狀態(tài)分別是
4、1, 0, 0。.第二章習題及答案1. 8086/8088CPU 由哪兩大功能部分所組成?簡述它們的主要功能?解: 8086/8088CPU 由 EU 和 BIU 兩大功能部分組成。執(zhí)行單元EU主要完成指令的譯碼和執(zhí)行。執(zhí)行單元通過EU 控制電路從BIU 中取出指令,經(jīng)過指令譯碼形成各種定時控制信號,向EU內(nèi)各功能部件發(fā)出相應的控制命令,以完成指令所規(guī)定的操作。總線接口單元BIU 是 8086/8088 同外部聯(lián)系的接口。它負責所有涉及外部總線的操作,包括取指令、讀操作數(shù)、寫操作數(shù)、地址轉(zhuǎn)換和總線控制等。BIU 內(nèi)部設置指令預取隊列,每當指令隊列有兩個或兩個以上的字節(jié)空間,且執(zhí)行單元未向BIU
5、 申請讀 / 寫存儲器操作數(shù)時,BIU 順序地預取后續(xù)指令的代碼,并填入指令隊列中。當EU 執(zhí)行的是轉(zhuǎn)移指令時,則 BIU 清除當前的指令預取隊列的內(nèi)容,從新的地址取回指令,并立即送到 EU 去執(zhí)行,然后,從后續(xù)的指令序列中取回指令填滿隊列。2. 什么是指令流水線?指令流水線需要哪些硬件支持?解: 指令流水線是指8086/8088CPU 內(nèi)部的執(zhí)行單元EU 和總線接口單元BIU 通過指令預取隊列協(xié)同工作從而實現(xiàn)指令的并行執(zhí)行。指令流水線最主要的硬件支持是BIU 內(nèi)部的指令預取隊列。3. 邏輯地址如何轉(zhuǎn)換成物理地址?已知邏輯地址為 2D1EH: 35B8H,對應的物理地址是什么?解: 邏輯地址是
6、段基址和段內(nèi)偏移地址形式的地址。物理地址段基址16段內(nèi)偏移已知邏輯地址為2D1EH: 35B8H,則對應的物理地址2D1EH 1635B8H30798H4. 8088 和 8086 的指令預取隊列的長度分別是多少?解: 8088 的指令預取隊列的長度為4 字節(jié); 8086 的指令預取隊列的長度為6 字節(jié)。5. 簡述 8086/8088CPU 內(nèi)部的各寄存器的作用。解: AX、 BX、CX 和 DX 通用寄存器一般用于存放參與運算的數(shù)據(jù)或運算的結果。SP:用于存放堆棧棧頂?shù)亩蝺?nèi)偏移量。BP:用于存放訪問內(nèi)存時的偏移地址。SP和 BP 也可以用來存放數(shù)據(jù),它們的默認段寄存器都是SS。SI和 DI
7、通常在間接尋址方式中存放操作數(shù)的偏移地址。在串操作指令中,DI 的默認段寄存器是 ES。 SI 和 DI 也可以用來存放數(shù)據(jù)。CS:代碼段寄存器,用于存放代碼段的段基址。DS:數(shù)據(jù)段寄存器,用于存放數(shù)據(jù)段的段基址。SS:堆棧段寄存器,用于存放堆棧段的段基址。ES:附加段寄存器,用于存放附加段的段基址。IP:指令指針寄存器,用于存放 CPU即將執(zhí)行的下一條指令在代碼段中的段內(nèi)偏移地址。FLAGS:標志寄存器,用于存放指令執(zhí)行結果的特征。6. 8086/8088CPU 內(nèi)部的狀態(tài)標志寄存器共有幾位標志位?各位的含義是什么?.解: 狀態(tài)標志寄存器共有9 位標志位,其中包含6 個狀態(tài)標志位和3 個控制
8、標志位。狀態(tài)標志位:CF( Carry Flag):進位標志。當算術運算結果使最高位產(chǎn)生進位或借位時,則CF=1;否則 CF=0。PF( Parity Flag):奇偶標志。若運算結果中的低8 位含有偶數(shù)個1,則 PF=1;否則 PF=0。AF( Auxiliary carry Flag):輔助進位標志。運算過程中若D3 位向 D4 有進位或借位時, AF=1;否則 AF=0。ZF(Zero Flag):零標志。若運算結果為0,則 ZF=1;否則 ZF=0。SF( Sign Flag):符號標志。若運算結果為負,則SF=1;否則 SF=0。OF(Overflow Flag):溢出標志。當帶符號
9、數(shù)的補碼運算結果超出機器所能表達的范圍時,就會產(chǎn)生溢出,這時OF=1;否則 OF=0??刂茦酥疚唬篋F( Direction Flag):方向標志??刂拼僮髦噶畹牡刂纷兓姆较颉.擠F=0時,串操作指令的地址指針按增量變化;當DF=1 時,串操作指令的地址指針按減量變化。IF( Interrupt Flag ):中斷允許標志。控制微處理器是否允許響應可屏蔽中斷請求。若 IF=1,則允許響應;否則禁止響應。TF( Trap Flag):單步標志。TF=1 時, CPU工作在單步方式。7. 8086/8088 系統(tǒng)中存儲器的分段原則是什么?解: 分段原則是要求段的起始單元的物理地址是16 的整數(shù)
10、倍,每段的物理長度為64KB。8. 當 ALE有效時, 8088 的地址 / 數(shù)據(jù)總線上將出現(xiàn)什么信息?解: 當 ALE有效時, 8088 的地址 / 數(shù)據(jù)總線上將出現(xiàn)地址信息。9. READY管腳的作用是什么?解: READY用于微處理器時序中插入等待狀態(tài)。若該引腳被置為低電平,則微處理器進入等待狀態(tài)并保持空閑;若該引腳被置為高電平,則它對微處理器的操作不產(chǎn)生影響。CPU在讀、寫操作時序中的T3 時鐘周期開始處,通過檢測READY管腳的狀態(tài)來決定是否插入 TW 等待時鐘周期,以解決CPU與存儲器或I/O 接口之間速度不匹配的矛盾。10. 為什么在基于 8086/8088 的系統(tǒng)中經(jīng)常需要使用
11、緩沖器?解: 由于基于 8086/8088 的系統(tǒng)驅(qū)動能力的不足,需要使用緩沖器。11. 8088 工作在最小模式下包含哪些控制信號?解: 最小模式下包含的控制信號有: RD、 WR、IO/M 、 ALE、 DT/R、DEN和 INTA 等信號。12. 若 CS=4000H,則當前代碼段可尋址的存儲空間范圍是多少?解: CS=4000H時,當前代碼段可尋址的存儲空間范圍為40000H4FFFFH。.第三章習題及答案1. 什么叫尋址方式? 8086 指令系統(tǒng)中有哪幾種尋址方式?解:尋址方式,即獲得地址的方法,主要指獲得段內(nèi)偏移地址的方法,段基址常采用默認方式獲得。8086CPU 指令系統(tǒng)的尋址方
12、式有兩類:獲得指令中操作數(shù)地址的方法。獲得要執(zhí)行的下一條指令的地址的方法。8086 指令系統(tǒng)中有8 種操作數(shù)尋址方式,立即尋址。2. 下列指令中 BUFF為字節(jié)類型變量, DATA 為常量, 指出下列指令中源操作數(shù)的尋址方式:( 1) MOV AX, 1200( 2) MOV 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;
13、立即尋址( 2) MOV 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;寄存器間接尋址3. 指出下列指令的錯誤并改正。( 1) MOV DS, 1200( 2) MOV AL, BX( 3) SUB 33H, AL( 4)PUSH AL( 5) MUL 45H(
14、 6)MOV BX, SI( 7)MOVSBYTE 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) SUB 33H, AL;立即數(shù)不能作為目的操作數(shù)( 4) PUSH AL;壓棧指令的操作數(shù)必須是字類型( 5) MUL 45H;乘法指令中的操作數(shù)不能是立即數(shù)( 6) MOV BX, SI;源和目的操作數(shù)不能同時為內(nèi)存操作數(shù)( 7) MOVSBYT
15、E PTR DS:DI, BYTE PTR DS:SI ; 目的操作數(shù)應該在ES段。( 8) ADD DATADI+BP, ES:CX;CX 不能做間址寄存器使用( 9) JMPBYTE PTRSI;操作數(shù)必須是 字類型( 10) OUT 3F8H, AL;16 位的端口地址不能直接在輸入輸出指令中使用。4. 根據(jù)要求寫出一條(或幾條)匯編語言指令。(1)將立即數(shù) 4000H 送入寄存器 BX。( 2)將立即數(shù) 4000H 送入段寄存器 DS。( 3)將變址寄存器DI 的內(nèi)容送入數(shù)據(jù)段中2000H 的存儲單元。( 4)把數(shù)據(jù)段中2000H 存儲單元的內(nèi)容送段寄存器ES。( 5)將立即數(shù)3DH
16、與 AL 相加,結果送回AL。( 6)把 BX 與 CX寄存器內(nèi)容相加,結果送入BX。( 7)寄存器 BX 中的低 4 位內(nèi)容保持不變,其他位按位取反,結果仍在BX中。( 8)實現(xiàn) AX 與-128 的乘積運算。( 9)實現(xiàn) CX 中高、低 8 位內(nèi)容的交換。( 10)將 DX 中 D0、 D4、 D8 位置 1,其余位保持不變。解:( 1)將立即數(shù) 4000H 送入寄存器 BX。MOVBX,4000H( 2)將立即數(shù)4000H 送入段寄存器DS。MOV AX, 4000HMOV DS, AX( 3)將變址寄存器DI 的內(nèi)容送入數(shù)據(jù)段中2000H 的存儲單元。MOV 2000H,DI( 4)把
17、數(shù)據(jù)段中2000H 存儲單元的內(nèi)容送段寄存器ES。MOV AX,2000HMOV ES,AX( 5)將立即數(shù)3DH 與 AL 相加,結果送回AL。ADD AL,3DH( 6)把 BX 與 CX 寄存器內(nèi)容相加,結果送入BX。ADD BX,CX( 7)寄存器 BX 中的低 4 位內(nèi)容保持不變 ,其他位按位取反,結果仍在BX 中。MOV AX, BX,NOT AXAND AX,0FFF0HAND BX,000FHOR BX,AX( 8)實現(xiàn) AX 與 -128 的乘積運算。MOV BX,-128IMULBX( 9)實現(xiàn) CX中高、低 8 位內(nèi)容的交換。MOV AL,8.ROL CX AL( 10)
18、將 DX 中 D0、D4、D8 位置 1,其余位保持不變。0R DX,0111H5. 設 SS=2000H, SP=1000H, SI=2300,DI=7800, BX=9A00H。說明執(zhí)行下面每條指令時,堆棧內(nèi)容的變化和堆棧指針的值。PUSHSIPUSHDIPOPBX解: PUSHSI( 0FFFH) =23H( 0FFEH)=00HSP=0FFEHPUSHDI( 0FFDH)=78H( 0FFCH) =00HSP=0FFCHPOPBXBX=7800HSP=0FFEH6. 內(nèi)存中 18FC0H、18FC1H、18FC2H單元的內(nèi)容分別為 23H、55、5AH,DS=1000H,BX=8FC0
19、H, SI=1,執(zhí)行下面兩條指令后AX=? DX=?MOVAX, BX+SILEADX, BX+SI解: AX=5A55HDX=8FC1H7. 回答下列問題:( 1)設 AL=7FH,執(zhí)行 CBW 指令后, AX=?( 2)設 AX=8A9CH,執(zhí)行 CWD 指令后, AX=?DX=?解:( 1)設 AL=7FH,執(zhí)行 CBW 指令后, AX=007FH( 2)設 AX=8A9CH,執(zhí)行 CWD 指令后, AX=8A9CH DX=FFFFH8. 執(zhí)行以下兩條指令后, FLAGS的 6 個狀態(tài)標志位的值是什么?MOV AX, 847BHADD AX, 9438H結果為 118B3H解: CF=1
20、PF=0(為運算結果的低8 位奇偶)AF=1ZF=0SF=0OF=19. 下面程序段將 03E8H 轉(zhuǎn)換成十進制數(shù)并顯示,填寫指令后的空格。MOV AX, 03E8H;AH=03H, AL= E8HMOV CX, 4MOV DI, 2000H;DI=2000HMOV BX, 10;BH=00, BL= 0AHGO0: SUB DX, DX;CF=0, ZF=1.DIVBX;AX=64H,DX= 0MOV DI, DL;DI=0INCDILOOP GO0;CX= 3MOV CX, 4GO1: DEC DI;DI= 2003HMOV DL, DI;DL=01OR DL, 30H;DL=31HMOV
21、 AH, 02;顯示 1 位十進制數(shù) 1INT 21HLOOP GO110. 用串操作指令替換以下程序段:ABC: MOVAL, SIMOVES:DI, ALINC SIINC DILOOPABC解: REP MOVSB11. 設 AX=AAH,順序執(zhí)行下列各條指令,填寫空格。(1) XORAX, 0FFFFH;AX=(2) ANDAX, 13A0H;AX=(3) OR AX, 25C9H;AX=(4) TEST AX, 0004H;AX=解: (1)XORAX, 0FFFFH;AX= FF55H(2)ANDAX, 13A0H;AX= 00A0H(3)ORAX, 25C9H;AX= 25EBH
22、(4)TEST AX, 0004H;AX= 00AAH12. 試寫出執(zhí)行下列 3 條指令后 BX寄存器的內(nèi)容。MOVCL, 2HMOVBX,CO2DHSHRBX, CL解: BX=300BH13. 執(zhí)行下列程序段后, AX、 BX的內(nèi)容各是什么?( 1) MOV AX,0001HMOV BX,8000HNEG AX; 0-0001HMOV CX,4AA : SHL AX,1 RCL BX,1LOOP AAHLT解: AX=FFF0HBX=000FH.( 2)MOV AX ,0MOV BX ,1MOV CX , 100A:ADD AX ,BXINC BXLOOP AHLT解: AX=8080HB
23、X=0101H14. 編寫程序段,實現(xiàn)下述要求:( 1) 使 AX 寄存器的低 4 位清 0,其余位不變。( 2) 使 BX 寄存器的低 4 位置 1,其余位不變。(3)測試 AX的第 0位和第 4位,兩位都是 1 時將 AL 清 0。(4)測試 AX的第 0位和第 4位,兩位中有一個為 1 時將 AL 清 0。解:(1)使 AX 寄存器的低 4 位清 0,其余位不變。ANDAX, 0FFF0H(2)使 BX 寄存器的低 4 位置 1,其余位不變。ORAX, 0FH(3)測試 AX 的第 0 位和第 4 位,兩位都是1 時將 AL 清 0。TEST AX,01HJZAATEST AX,10HJ
24、ZAAMOV AL,0HLTAA: .(4)測試 AX 的第 0 位和第 4 位,兩位中有一個為1 時將 AL清 0。TEST AX, 11HJZ AAMOV AL,0AA: .15. 編寫程序段,完成把 AX 中的 16 進制數(shù)轉(zhuǎn)換為 ASCII碼,并將對應的 ASCII碼依次存入 MEM 開始的存儲單元中。 例如,當 AX 的內(nèi)容為 37B6H 時, MEM 開始的 4 個單元的內(nèi)容依次為 33H, 37H,42H, 36H。解:MOV CX,4LEA SI,MEMADD SI,3;SI指向 MEM+3CC:MOV BX,AX;保存原始數(shù)據(jù)AND AX, 000FH;取個位數(shù)CMP AL,
25、 9JAAA;在 AB 之間就加 37H.ADD AL,30H;在 09 之間就加 30HJMPBBAA: ADD AL,37HBB:MOV SI,AL;保存 ASCII值DEC SIPUSH CXMOV AX,BXMOV CL,4SHR AX,CL;準備取下一個數(shù)POP CXLOOPCC16.編寫程序段,求從TABLE開始的 10 個無符號數(shù)的和,結果放在SUM 單元中。解:LEA SI,TABLEMOV CX,10XOR AX,AXNEXT:ADD AL,SIADC AH,0INC SILOOP NEXTMOV SUM,AX17.編寫程序段,從鍵盤上輸入字符串HELLO,并在串尾加結束標志
26、$。解: LEADX,STRING;設置字符串存放緩沖區(qū)首地址MOVAH ,0AH;調(diào)用 10 號功能,輸入字符串INT21HMOVCL,STRING+1;實際鍵入的字符個數(shù)送CLXORCH,CHADDDX,2ADDDX,CX;得到字符串尾地址MOVBX,DXMOVBYTE PTRBX,$18. 編寫程序段,在屏幕上依次顯示1、 2、 3、 A、 B、 C。解:LEA BX,STR;STR為 6 個字符的存放區(qū)域首地址MOV CX,6LPP:MOV AH,2MOV DL,BXINC BXINT 21H;利用 2 號功能調(diào)用依次先生6 個字符LOOP LPP19.編寫程序段,在屏幕上顯示字符串“
27、Hello World ”。解:LEA DX,STRING; STRING字符的存放區(qū)域首地址MOV AH,09HINT 21H; 利用 9 號功能調(diào)用顯示字符串.20. 編寫程序段,把內(nèi)存中首地址為MEM1 的 200 個字節(jié)送到首地址為MEM2 的區(qū)域。解: MOVAX,SEG MEM1MOVDS, AX;設定源串段地址MOVAX,SEG MEM2MOVES, AX;設定目標串段地址MOV SI, 0;設定源串偏移地址MOVDI,0;設定目標串偏移地址MOVCX,200;串長度送 CXCLD;( DF)=0,使地址指針按增量方向修改REPMOVSB;每次傳送一個字節(jié),并自動HLT21. 編
28、寫程序段, 以 4000H 為起始地址的 32 個單元中存有 32 個有符號數(shù), 統(tǒng)計其中負數(shù)的個數(shù),并將統(tǒng)計結果保存在BUFFER單元中。解: START: MOV DI,OFFSET BUFFERXOR AL,ALMOV DI,ALMOV SI,4000HMOV CX,32AA:MOV AL,SIOR AL,ALJNS X1INC DIX1:INC SINEXT:LOOP AAHLT.第四章習題及答案1. 什么叫匯編?匯編語言源程序的處理過程是什么?解:任何 CPU 都只能執(zhí)行機器語言程序。 匯編語言不是機器語言, 匯編語言程序必須通過具有“翻譯”功能的系統(tǒng)程序的處理,處理的過程稱為匯編。
29、匯編語言源程序經(jīng)過匯編生成機器語言目標程序, 簡稱目標程序。 目標程序經(jīng)過連接程序連接,就得到可執(zhí)行的機器語言程序文件。2. 匯編語言的語句類型有哪些?各有什么特點?解:匯編語言的語句類型有兩種:指示性語句和指令性語句。指示性語句可以位于任何段中,指令性語句必須位于代碼段內(nèi)。指示性語句又稱為偽操作語句,它不是8088/8086CPU 的指令,它與匯編程序(assembler)有關。指示性語句的功能主要是變量定義、為數(shù)據(jù)分配存儲空間、告訴匯編程序如何對源程序匯編等。源程序匯編后指示性語句不生成目標代碼,所以常被稱為偽指令。指令性語句指令性語句是可執(zhí)行語句,是 8088/8086CPU 的指令。源
30、程序匯編后指令性語句生成目標代碼。第 3 章中介紹的所有指令都是指令性語句的主體,其操作數(shù)最多只能有兩個。3. 匯編語言源程序的基本結構是什么?解:匯編語言源程序由若干段組成: 數(shù)據(jù)段、附件數(shù)據(jù)段、堆棧段和代碼段 等,段與段之間的順序可以 隨意排列 ,每一段由 SEGMENT開始,以 ENDS結束,每段的開始和結束都附有相同的名字。一個程序一般定義三個段:數(shù)據(jù)段、堆棧段和代碼段,必要時增加定義附加數(shù)據(jù)段,能獨立運行的程序至少包含一個代碼段。4. 寫出完成下述要求的變量定義的語句:( 1) 為緩沖區(qū) BUFF保留 200 個字節(jié)的內(nèi)存空間( 2) 將字符串 BYTE, WORD存放于某數(shù)據(jù)區(qū)(
31、3) 在數(shù)據(jù)區(qū)中存入下列 5 個數(shù)據(jù): 2040H,0300H,10H,0020H,1048H解:(1)為緩沖區(qū)BUFF保留 200 個字節(jié)的內(nèi)存空間BUFF DB 200 DUP(?)(2)將字符串 BYTE, WORD存放于某數(shù)據(jù)區(qū)DBBYTE,WORD( 3)在數(shù)據(jù)區(qū)中存入下列 5 個數(shù)據(jù): 2040H,0300H,10H,0020H,1048H DW 2040H,0300H,10H,0020H,1048H.5. 畫出下面數(shù)據(jù)段匯編后的內(nèi)存圖,并標出變量的位置。AA009HDATASEGMENTFEH45HAAEQU 78H01HAA0DB 09H,-2,45H,2 DUP ( 01H,
32、?) ,AB ?HAA1DW -2,34H+AA01H?AA2DD 12H;雙字類型41HDATAENDS42HAA1FEH解:如圖所示。FFHACHAA000H6. 設程序中的數(shù)據(jù)定義如下:12HNAMEDB 30 DUP ( ?)00H00HLISTDB 1,8,3,200HADDRDW 30 DUP (?)( 1) 取 NAME 的偏移地址放入 SI( 2) 取 LIST的前兩個字節(jié)存入 AX( 3) 取 LIST實際長度解:( 1)取 NAME 的偏移地址放入SIMOV SI,OFFSET NAME(2)取 LIST的前兩個字節(jié)存入AXMOV AX,WORD PTR LIST(3)取
33、LIST實際長度MOV AX,SIZE LIST; P857. 依據(jù)下列指示性語句,求表達式的值。SHOW0 EQU 200 SHOW1 EQU 15SHOW2EQU2 SHOW0X100+55 SHOW0 AND SHOW1-15 (SHOW0/SHOW2) MOD SHOW1 SHOW1 OR SHOW0 解:( 1) SHOW0 X 100+55=200X100+55SHOW0 AND SHOW1-15=C8H AND 0FH - 0FH = ;0減法的優(yōu)先級過于AND ( SHOW0/SHOW2) MOD SHOW1=100 MOD 15=10 SHOW1 OR SHOW0=0FH O
34、R C8H=CF8. 編寫程序,統(tǒng)計寄存器 BX 中二進制位“ 1”的個數(shù),結果存在 AL 中。DATASEGMENTNUMDW ?DATA ENDSCODESEGMENTASSUMECS: CODE, DS: DATASTART: MOVAX, DATAMOVDS, AXMOVAL,0.MOVBX, NUM;把數(shù) X 傳送給 BXMOVCX,16NEXT:SHLAX, 1JNCNEXT1INCALNEXT1: LOOPNEXTMOVAH, 4CHINT21HCODEENDSENDSTART9. 某數(shù)據(jù)塊存放在 BUFFER開始的 100 個字節(jié)單元中,試編寫程序統(tǒng)計數(shù)據(jù)塊中正數(shù)(不包括 0)
35、的個數(shù),并將統(tǒng)計的結果存放到NUMBER單元中。解 DATASEGMENTBUFFER DB 100(?)NUMBER DB 0DATAENDSCODESEGMENTASSUMECS: CODE, DS: DATASTART: MOVAX,DATAMOVDS,AXXORDX, DXMOVCX,100MOVSI,OFFSET BUFFERNEXT: MOVAL,SIINC SITEST AL,80H;是正數(shù)嗎?JNZ GOON;否,轉(zhuǎn)移到 GOONCMP AL,0JZ GOONINC DXGOON: LOOPNEXTMOVNUMBER,DXMOVAH, 4CHINT21HCODEENDSENDS
36、TART10. 閱讀下面程序段,指出它的功能。DATA SEGMENTASCIIDB 30H, 31H, 32H, 33H ,34H ,35H, 36H, 37H, 38H, 39HHEXDB 04HDATAENDSCODESEGMENTASSUMECS:CODE, DS: DATASTART:MOV AX, DATA.MOV DS, AXMOV BX,OFFSET ASCIIMOV AL,HEXAND AL,0FHMOV AL,BX+ALMOV DL,ALMOV AH,2INT 21HMOV AH,4CHINT 21HCODEENDSEND START解:這時一個查表程序,查表取出HEX的
37、ASCII。并在屏幕上顯示ASCII碼11. 某數(shù)據(jù)區(qū)中有 100 個小寫字母,編程把它們轉(zhuǎn)換成大寫字母,并在屏幕上顯示。解: DATASEGMENTBUFFER DB 100(?)DATAENDSCODE SEGMENTASSUMECS: CODE, DS: DATASTART: MOVAX,DATAMOVDS,AXMOVCX,100MOVSI,OFFSET BUFFERNEXT:MOVAL,SIINCSICMPAL,61H;是小寫字母嗎 ?JBGOON;否,轉(zhuǎn)移到 GOON(小于則轉(zhuǎn)移)SUBAL,20HMOVDL,ALMOVAH,2INT21HGOON: LOOPNEXTMOVAH, 4
38、CHINT21HCODEENDSEND START12. 子程序的參數(shù)傳遞有哪些方法?解:主程序在調(diào)用子程序時, 要為子程序預置數(shù)據(jù), 在子程序返回時給出數(shù)據(jù)處理的結果,這稱為數(shù)據(jù)傳送或變量傳送。方法主要有以下幾種: 寄存器傳送。. 地址表傳送,需要傳送的參數(shù)較多時可以利用存儲單元傳送。在調(diào)用子程序前,把所有參數(shù)依次送入地址表,然后將地址表的首地址作為子程序入口參數(shù)傳遞給子程序。 堆棧傳送,這種方式要審慎注意堆棧的變化情況。13. 過程定義的一般格式是什么?子程序開始處為什么常用PUSH 指令?返回前用POP指令?解:格式見P90,如果一個子程序被多次調(diào)用,保護與恢復(主程序)現(xiàn)場就非常重要。
39、主程序每次調(diào)用子程序時, 主程序的現(xiàn)場不會相同,保護與恢復現(xiàn)場的工作就只能在子程序中進行。原則上,在子程序中,首先把子程序中要用到的寄存器、存儲單元、狀態(tài)標志等壓入堆棧或存入特定空間中, 然后子程序才可以使用它們, 使用完后再將它們彈出堆?;驈奶囟臻g中取出,恢復它們原來的值,即恢復主程序現(xiàn)場。保護和恢復現(xiàn)場常使用PUSH和 POP指令。14. 閱讀下面程序段,指出它的功能。DATA SEGMENTSTRING DB Exxperience LENGDW 100KEYDB xDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:DATAMAIN PROC
40、 FARSTART: MOV AX, DATAMOV DS, AXMOV ES, AXLEA BX, STRING;字符串地址 -BXLEA CX, LENG;字符串長 -CXPUSH BXPUSH CXMOV AL, KEYCALL DELCHARMOV AH, 4CHINT21HMAIN ENDPDELCHAR PROCPUSH BPMOV BP, SPPUSH SIPUSH DICLDMOV SI, BP+4MOV CX, SIMOV DI, BP+6REPNE SCASBDI-DI+SI+SP-BPBP-BP+IP-IP+BP+4-SICLCHBP+6-DIBLBH.JNE DONEM
41、OV SI, BP+4DEC WORD PTRSIMOV SI, DIDEC DIREP MOVSBDONE:POPDIPOPSIPOPBPRETDELCHAR ENDPCODE ENDSEND START解:從字符串中刪去多余的X字符。15. 顯示兩位壓縮 BCD碼值( 099),要求不顯示前導 0。解: DATASEGMENTBUFDB?; 內(nèi)存中的兩位壓縮BCD碼DATAENDSCODESEGMENTASSUMECS: CODE, DS: DATASTART: MOVAX,DATAMOVDS,AXMOVAL, BUFMOVBL,ALNEXT:MOV CL,4SHR AL, CLAND A
42、L,0FHCMP AL,0JZ GOONADDAL,30H;顯示高位 BCD碼MOVDL,ALMOVAH,2INT21HGOON: MOV AL,BLAND AL,0FHADD AL,30H;顯示低位 BCD碼MOVDL,ALMOVAH,2INT21HMOVAH, 4CHINT21HCODEENDSENDSTART.16. 某數(shù)據(jù)區(qū)中連續(xù)存放著 100 個整數(shù),要求將其中為 0 的元素刪除,并將保留的數(shù)據(jù)連續(xù)存放。解:DATASEGMENTSTRING DB 100(?)LENGDW100KEYDB 0DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES
43、:DATAMAIN PROC FARSTART: MOV AX, DATAMOV DS, AXMOV ES, AXLEA BX, STRINGLEA CX, LENGPUSH BXPUSH CXMOV AL, KEYCALL DELCHARMOV AH, 4CHINT21HMAIN ENDPDELCHAR PROCPUSH BPMOV BP, SPPUSH SIPUSH DICLDMOV SI, BP+4MOV CX, SIMOV DI, BP+6REPNE SCASBJNE DONEMOV SI, BP+4DEC WORD PTRSIMOV SI, DIDEC DIREP MOVSBDONE:POPDIPOPSIPOPBPRETDELCHAR ENDPCODE ENDS.END START17. 編程,把以DATA 為首址的兩個連續(xù)單元中的16 位
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 海洋油氣開采國際交流與合作考核試卷
- 鈦媒體數(shù)字化轉(zhuǎn)型新思先行者優(yōu)勢與復利效應
- 環(huán)境工程倫理課件
- 航空貨物運輸業(yè)務流程再造考核試卷
- 貨運火車站物流行業(yè)交流與合作考核試卷
- 土地生態(tài)規(guī)劃與設計講解
- 醫(yī)藥人才公園景觀設計
- 環(huán)保作文課件
- 2025年初級經(jīng)濟師之初級經(jīng)濟師工商管理過關檢測試卷A卷附答案
- 小學生教育方法與實施路徑
- 職域行銷BBC模式開拓流程-企業(yè)客戶營銷技巧策略-人壽保險營銷實戰(zhàn)-培訓課件
- 二年級下冊豎式計算題-大全-
- 【基于4P理論的得物APP網(wǎng)絡營銷策略優(yōu)化探究14000字(論文)】
- 外研版七年級上冊英語單詞表
- 氧氣吸入操作評分標準(中心供氧)
- 2019年壓力性損傷預防治療臨床實踐指南
- 中國古詩詞探勝 知到智慧樹網(wǎng)課答案
- 內(nèi)科人衛(wèi)一類模擬考試題(含答案)
- 我國化工新材料發(fā)展趨勢及展望
- 24秋國家開放大學《計算機系統(tǒng)與維護》實驗1-13參考答案
- 2022年廣東省深圳市南山區(qū)小升初數(shù)學試卷
評論
0/150
提交評論