




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
[鍵入文字] [鍵入文字][鍵入文字]PAGEPAGE48第1章微型計算機基礎知識填空題將10110.10111B的十六進制數是_______________,34.97H的十進制數是_______________,將114.35轉換為二進制為______________。解答:10110.10111B的十六進制數是16.B8H,34.97H的十進制數是52.6055,將114.35轉換二進制為1110010.01011B。100101.11B+(110101.1)BCD+5A.18H=___________D解答:100101.11B+(110101.1)BCD+5A.18H=163.6438D3.每個漢字的編碼有字節(jié)組成,ASCII的最高位B7=,而漢字的內碼的最高位B7=。計算機根據字節(jié)的最高位來區(qū)分ASCII碼和漢字內碼。解答:每個漢字的編碼有2個字節(jié)組成,ASCII的最高位B7=0,而漢字的內碼的最高位B7=1。計算機根據字節(jié)的最高位來區(qū)分ASCII碼和漢字內碼。[X]補=0A8H,則X=_______D.解答:X=_-88_D5.已知[X]補=00010111B,則[-4X]補=B解答:[-4X]補=10100100B6.若[X]原=[Y]反=[Z]補=90H,試用十進制數分別寫出其大小,X=;Y=;Z=。解答:X=-16;Y=-111;Z=-1127.計算機的主機由、控制器、主存儲器組成。解答:計算機的主機由運算器、控制器、主存儲器組成。8.__________確定了計算機的5個基本部件:輸入器、_________、運算器和__________和控制器,程序和數據存放在__________中,并采用了二進制。解答:馮·諾依曼結構計算機確定了計算機的5個基本部件:輸入器、輸出器、運算器和存儲器和控制器。數據和程序都是存放在存儲器中,并采用了二進制。9.將下列十六進制數的ASCII碼轉換為十進制數。(1)313035H(2)374341H(3)32303030H(4)38413543H解答:(1)313035H=105H=100H+5H=256+5=261(2)374341H=7CAH=800H-36H=2048-(40H-10)=2048-(64-10)=1994(3)32303030H=2000H=8192(4)38413543H=8A5CH=8000H+800H+200H+50H+0CH=32768+2048+512+80+12=3542010.一個8位的二進制補碼數,它的十六進制表示為A9H,它的十進制數值為_________。解答:-87D選擇題1.用BCD碼進行相加,結果為BCD碼,為得到正確的結果對高4位和低4為都進行加6修正的是。A.38+49B.33+34C.91+66D.87+15答:D2.補碼減法運算是指()。A.操作數用補碼表示,符號位單獨處理B.操作數用補碼表示,連同符號位一起相加C.操作數用補碼表示,將減數變?yōu)闄C器負數然后連同符號位相加D.操作數用補碼表示,將被減數變?yōu)闄C器負數補,然后相加答:C3.0A7H表示成二進制為___________,如果是無符號數它表示的十進制數為___________;如果為有符號數它表示的十進制數是___________。A.10100111B;167;-167B.10100111B;167;-59C.10100111B;167;-89D.10100111B;89;-89答:C4.10位二進制補碼表示的十進制整數范圍為:+511—-512,后者補碼為:()A.0000000000B.1000000000C.1111111110D.1111111111答:B5.十六進制數88H,可表示成下面幾種形式,請找出錯誤的表示()。A.無符號十進制136B.帶符號十進制數-120C.壓縮型BCD碼十進制數88D.8位二進制-8的補碼表示答:D6.設機器字長為8位,最高位為符號位,下述各補碼運算可能產生負溢出的是_______。A.48H+64HB.0B4H-63HC.2AH-53HD.37H+0C7H答:B7.在計算機內部,一切信息的存取、處理和傳送都是以_______形式進行的。A.EBCDIC碼B.ASCII碼C.十六進制編碼D.二進制編碼答:D8.十進制正數38的八位二進制補碼是______。A.00011001B.10100110C.10011001D.00100110答:D三.是非判斷題1、在第三代計算機期間出現了操作系統(tǒng)。(√)2、對于種類不同的計算機,其機器指令系統(tǒng)都是相同的。(×)3、在計算機中,數據單位bit的意思是字節(jié)。(×)4、八進制數的基數為8,因此在八進制數中可以使用的數字符號是0、1、2、3、4、5、6、7、8。(×)5、在漢字國標碼GB2312-80的字符集中,共收集了6763個常用漢字。(√)四.問答題1.微處理器、微機和微機系統(tǒng)之間有什么不同?2.設當兩個正數相加時,補碼溢出意味著什么?兩個負數相加能溢出嗎?試舉例說明。3.在計算機中為什么都采用二進制而不采用十進制數?二進制數由哪兩種縮寫形式?4.什么是進制的基和權?四種進制之間怎樣轉換?5.典型的微型計算機中有哪幾種總線?它們各自傳送什么類型的信息?
第2章微處理器一.填空題1.8086/8088CPU在結構上面由兩個獨立的處理單元__________和_________構成,這兩個單元可以____________工作,從而加快了程序的運行速度。解答:8086/8088CPU在結構上面由兩個獨立的處理單元____BIU______和___EU____構成,這兩個單元可以___并行____工作,從而加快了程序的運行速度。2.8086是Intel系列的16位微處理器,從功能上,它分為兩部分即總線接口部件和執(zhí)行部件。其中,總線接口部件由、、、、等寄存器及20位地址加法器和6字節(jié)指令隊列構成。執(zhí)行部件由4個通用寄存器,即;4個專用寄存器,即、、、等寄存器和算術邏輯單元組成。解答:8086是Intel系列的16位微處理器,從功能上,它分為兩部分即總線接口部件和執(zhí)行部件。其中,總線接口部件由代碼段寄存器CS、數據段寄存器DS、堆棧段寄存器SS、附加段寄存器ES、指令指針寄存器IP等寄存器及20位地址加法器和6字節(jié)指令隊列構成。執(zhí)行部件由4個通用寄存器,即AX、BX、CX和DX;4個專用寄存器,即SP、BP、DI、SI等寄存器和算術邏輯單元組成。3.8086中的BIU由個位段寄存器、一個位指令指針、字節(jié)指令隊列、位地址加法器和控制電路組成。解答:8088/8086中的BIU由4個16位段寄存器、一個16位指令指針、6字節(jié)指令隊列、20位地址加法器和總線控制電路組成。4.指令隊列位于,它存放內存中取出的,8086的指令隊列有個字節(jié),而8088的指令隊列有個字節(jié)。解答:指令隊列位于BIU,它存放內存中取出的將被執(zhí)行的下一條或下幾條指令,8086的指令隊列有6個字節(jié),而8088的指令隊列有4個字節(jié)。5.決定計算機指令執(zhí)行順序的寄存器是,它總是指向。解答:決定計算機指令執(zhí)行順序的寄存器是IP,它總是指向指向下一條指令所在的內存單元的偏移地址。6.用于反映指令執(zhí)行結果或控制指令執(zhí)行的寄存器稱為寄存器。解答:用于反映指令執(zhí)行結果或控制指令執(zhí)行的寄存器稱為控制寄存器。7.任何CPU都有一個寄存器存放程序運行狀態(tài)標志信息,在8086中,該寄存器是。其中,根據運算結果是否為零決定程序分支走向的位分別是。解答:任何CPU都有一個寄存器存放程序運行狀態(tài)標志信息,在8086中,該寄存器是FR。其中,根據運算結果是否為零決定程序分支走向的位分別是ZF。8.已知[X]補=00010111B,[Y]補=01101101B,則結果[X-Y]補=B,且運算結果使6個狀態(tài)標志位CF=SF=ZF=AF=PFOF=。解答:[X-Y]補=[X]補-[Y]補=[X]補+[-Y]補[Y]補=01101101B[-Y]真值=-1101101B[-Y]原=11101101B[-Y]反=10010010B[-Y]補=10010011B[X-Y]補=[X]補-[Y]補=[X]補+[-Y]補=00010111B+10010011B運算結果沒用進位CF=0運算結果的最高位為1,結果為負數,則SF=1運算結果的各位不全為0,則ZF=0運算結果的低4位沒用向高位產生進位,則AF=0運算結果的這8位中1的個數為4個,為偶數個PF=1運算結果的最高位和次高位都無進位,D7C=0,D6C=0因此OF=D7CD6C=0,無溢出。本題的正確答案為:[X]補=00010111B,[Y]補=01101101B,則結果[X-Y]補=10101010B,且運算結果使6個狀態(tài)標志位CF=0SF=1ZF=0AF=0PF1OF=0。9在8088/8086存儲空間中,要求各個邏輯段從節(jié)的整數開始,即段首址的低4位必須是。解答:在8088/8086存儲空間中,要求各個邏輯段從節(jié)的整數開始,即段首址的低4位必須是012.8086/8088CPU的BIU單元中共有4個段寄存器:CS、DS、ES、SS。其中,用來存放當前代碼段的基地址,用來存放當前數據段的基地址。解答:8086/8088CPU的BIU單元中共有4個段寄存器:CS、DS、ES、SS。其中,CS用來存放當前代碼段的基地址,DS用來存放當前數據段的基地址。13只能隱含使用某個段寄存器,而不能用其它段寄存器代替。操作隱含使用某個段寄存器,使用其它段寄存器。解答:計算程序的堆棧只能隱含使用段寄存器CS,而不能用其它段寄存器代替。有堆棧操作隱含使用某個段寄存器SS,對數據的存取隱含使用DS或ES段寄存器。15.邏輯地址由段基值和組成。將邏輯地址轉換為物理地址的公式是。其中的段基值是由存儲。解答:邏輯地址由段基值和偏移量組成。將邏輯地址轉換為物理地址的公式是物理地址=段基址×10H+偏移量。其中的段基值是由段寄存器存儲。16.邏輯地址9B50H:2C00H對應的物理地址是H。解答:物理地址=段基址×10H+偏移量9B50H:2C00H對應的物理地址=9B50H×10H+2C00H=9E100H本題的正確答案為:邏輯地址9B50H:2C00H對應的物理地址是9E100H。17.如果一個30個字的數據區(qū),它的起始地址是2000H:3000H,則這個數據區(qū)的首字單元物理地址是,末字單元物理地址是。解答:該數據區(qū)的首字單元物理地址是=2000H×10H+3000H=23000H該數據區(qū)的空間是30個字,末字單元物理地址的偏移量離首字單元物理地址的偏移量是30個字,那么末字單元物理地址在首字單元物理地址上增加了(30-1=29)個字,就是58個字節(jié),因此末字單元物理地址=首字單元物理地址+58D=23000H+3AH=2303AH。本題的正確答案為:如果一個30個字的數據區(qū),它的起始地址是2000H:3000H,則這個數據區(qū)的首字單元物理地址是23000H,末字單元物理地址是2303AH。19.8088CPU內的堆棧是一種特殊的數據存儲區(qū),堆棧操作是________操作(字/字節(jié)?)其存取采用________________的原則,它由_______________作地址指針管理。解答:8088CPU內的堆棧是一種特殊的數據存儲區(qū),堆棧操作是____字____操作(字/字節(jié)?)其存取采用___后進先出___的原則,它由____SP_____作地址指針管理。21.若8086系統(tǒng)中SS=1050H,SP=0008H,此時堆棧頂的物理地址為。8086在執(zhí)行PUSH指令后,操作數存放的的理地址為,指令執(zhí)行后的堆棧指針寄存器SP的內容。解答::若8086系統(tǒng)中SS=1050H,SP=0008H,此時堆棧頂的物理地址為10508H。8086在執(zhí)行PUSH指令后,操作數存放的的理地址為10506H,指令執(zhí)行后的堆棧指針寄存器SP的內容0006H。22.8086微機中寄存器中存放的是當前棧區(qū)的的基地址。堆棧區(qū)的存取原則為。在8086/8088系統(tǒng)中,棧區(qū)最大容量為。若CS=2000H,DS=2500H,SS=3000H,ES=3500H,SP=0100H,AX=2FA6H,則這個棧區(qū)的物理地址范圍為,CPU執(zhí)行PUSHAX指令后,棧頂地址為,該棧頂單元存放的內容為。解答:8086微機中SS寄存器中存放的是當前棧區(qū)的的基地址。堆棧區(qū)的存取原則為先進后出。在8086/8088系統(tǒng)中,棧區(qū)最大容量為64KB。若CS=2000H,DS=2500H,SS=3000H,ES=3500H,SP=0100H,AX=2FA6H,則這個棧區(qū)的物理地址范圍為30000H~30100H,CPU執(zhí)行PUSHAX指令后,棧頂地址為300FEH,該棧頂單元存放的內容為A6H。23.在8086系統(tǒng)中,已知當前(SS)=2360H,(SP)=0800H,該堆棧段在存儲器中的物理地址范圍為__________。若往堆棧中存入20個字數據,那么SP的內容為__________,其物理地址為_________。解答:在8086系統(tǒng)中,已知當前(SS)=2360H,(SP)=0800H,該堆棧段在存儲器中的物理地址范圍為23600H~23E00H。若往堆棧中存入20個字數據,那么SP的內容為07D8H,其物理地址為23DD8H。24.8086系統(tǒng)中一個基本的總線周期由個時鐘周期組成,主頻若為30MHz,一個時鐘周期為,一個基本的總線周期為秒。解答:8086系統(tǒng)中一個基本的總線周期由4個時鐘周期組成,主頻若為30MHz,一個時鐘周期為0.0333s,一個基本的總線周期為0.1333s。25.當存儲器的讀出時間大于CPU所要求的時間時,為了保證CPU與存儲器的周期配合,就要利用信號,使CPU插入一個狀態(tài)。解答:當存儲器的讀出時間大于CPU所要求的時間時,為了保證CPU與存儲器的周期配合,就要利用READY信號,使CPU插入一個Tw狀態(tài)。27.8086CPU運用其,AD0兩個引用配合,執(zhí)行讀/寫操作,若=1,A0=0,其執(zhí)行相應的操作為若=0,A0=1,其執(zhí)行相應的操作為。解答::8086CPU運用其,AD0兩個引用配合,執(zhí)行讀/寫操作,若=1,A0=0,其執(zhí)行相應的操作為從偶地址單元讀/寫一個字節(jié)。若=0,A0=1,其執(zhí)行相應的操作為從奇地址單元讀/寫一個字節(jié)。28.8086向內存地址1200BH寫一個字節(jié)的數據時,需要一個總線周期,在該總線周期的T1狀態(tài),為,A0為。解答:8086向內存地址1200BH寫一個字節(jié)的數據時,需要一個總線周期,在該總線周期的T1狀態(tài),為0,A0為1。29.8086CPU的存儲器分為奇地址庫和偶地址庫兩個存儲體,對于奇地址庫選擇信號是,對于偶地址庫的選擇信號是,對于每個存儲體內存儲單元的選擇信號是。解答:8086CPU的存儲器分為奇地址庫和偶地址庫兩個存儲體,對于奇地址庫選擇信號是,對于偶地址庫的選擇信號是A0,對于每個存儲體內存儲單元的選擇信號是READY。30.8086向存儲器的奇地址寫一個字節(jié)的數據時,需要一個總線周期,在該總線周期的第一個時鐘周期中,為,A0為,將數據送到。解答:8086向存儲器的奇地址寫一個字節(jié)的數據時,需要一個總線周期,在該總線周期的第一個時鐘周期中,為0,A0為1,將數據送到AD15~AD8。31.8086CPU上電復位后,CS=,IP=,DS=,標志寄存器F=。解答:所以本題的正確答案為:8086CPU上電復位后,CS=0FFFFH,IP=0,DS=0,標志寄存器F=0。32.8086/8088CPU復位后,CS的值為H,IP的值為H。解答:8086/8088CPU在復位啟動后,指令指針寄存器IP=0、代碼段寄存器CS=0FFFFH。33.決定8086/8088CPU工作模式的引腳是。解答:決定8086/8088CPU工作模式的引腳是MN/。選擇題1.為了提高程序的執(zhí)行速度,充分使用總線,8086微處理器被設計為兩個獨立的功能部件:___C_______。A、運算器和控制器B、運算器和寄存器組C、總線接口部件BIU和執(zhí)行部件EUD、總線接口部件BIU和控制器2.運算器的主要功能是進行___C_______。A、邏輯運算
B、算術運算C、邏輯運算和算術運算
D、以上均不對3.指令寄存器是___A_______A、IPB、SPC、BPD、PSW4.CPU內的指令指針寄存器IP的作用是:CA、用于存放某特定程序的地址指針。B、用于存放某條指令的地址。C、總是跟蹤記憶當前要執(zhí)行的指令的地址。D、CPU總是根據IP所指明的物理地址中取指令執(zhí)行,與CS無關。5.8086/8088CPU內部有一個始終指示下條指令偏移地址的部件是(C)A、SPB、CSC、IPD、BP6.在補碼運算時,如果運算結果為負,則標志寄存器中為1的標志位是(B)。A、CFB、SFC、PFD、IF7.控制字符串操作指令步進方向的標志是(B)。A、CFB、DFC、ZFD、OF8.微型計算機中各部件之間是用(D)連接起來的.A.ABB.CDC.DBD.系統(tǒng)總線9.8086CPU外部的地址總線和數據總線分別為(B)位。A、16,16;B、20,16;C、16,8;D、20,2010.I/O設備與CPU之間交換信息,其狀態(tài)信息是通過(C)總線傳送給CPU的A.地址B.數據C.控制D.三者均可11.用8088CPU組成的PC機數據線是(C)A.8條單向線B.16條單向線C.8條雙向線D.16條雙向線12.若總線地址為26位,則最大地址空間為(C)A、6MB、24MC、64MD、128M13.下列哪種表述正確(B)A、有效地址確定內存單元在整個尋址范圍內的位置。B、物理地址確定內存單元在整個尋址范圍內的位置。C、偏移地址確定內存單元在整個尋址范圍內的位置。D、有效地址就是物理地址。14.DS=3000H,SS=3100H,CS==3500H,IP==0100H,SP=0050H,BX=0300H,則當前代碼段的物理地址為(D)。A、30300HB、31050HC、35300HD、35100H15.當8086CPU采樣到READY=0,則CPU將(B)。A.執(zhí)行停機指令B.插入等待周期C.執(zhí)行空操作D.重新發(fā)送地址16.8086總線周期是在(C)之后插入Tw。A、T1B、T2C、T3D、T417.因為8086CPU的字數據既可以存放在內存的偶地址,也可以安排在奇地址單元,所以其堆棧指針SP(C)。A、最好是指向偶地址單元;B、可以指向任何地址單元;C、只能指向偶地址單元;D、只能指向奇地址單元。18.8088CPU在進行對外設輸出操作時,控制信號/IO和DT/必須是D。A、0,0B、0,1C、1,0D、1,119.8086CPU響應HOLD請求是在(D)A、每一指令周期后B、每一個機器周期后C、可以響應HOLD請求的每一機器周期后D、在總線周期的T4狀態(tài)或空閑狀態(tài)TI之后的下一個時鐘周期20.當8086/8088CPU響應DMA設備的HOLD請求后,CPU將(D)。A、轉入特殊中斷服務程序B、進入等待周期C、接受外部數據D、放棄對總線的控制權21.選擇題:請將下列左邊的項與右邊的解釋聯(lián)系起來。(1)CPU()A、保存當前的棧頂地址的寄存器。(2)存儲器()B、指示下一條要執(zhí)行的指令的地址。(3)堆棧()C、存儲程序、數據等信息的記憶裝置,PC機有ROM和RAM兩種。(4)IP()D、以后進先出方式工作的存儲空間。(5)SP()E、惟一代表存儲空間中每個字節(jié)單元的地址。(6)狀態(tài)標志()F、保存各邏輯段起始地址的寄存器,PC機有四個:CS、DS、SS、ES。(7)控制標志()G、控制操作的標志,PC機有三位:DF、IF、TF。(8)段寄存器()H、記錄指令操作結果的標志,PC機有6位:OF、SF、ZF、AF、CF、PF。(9)物理地址()I、分析、控制并執(zhí)行指令的部件,由ALU和寄存器組組成。解答:本題的正確答案為:(1)CPU()A、保存當前的棧頂地址的寄存器。(2)存儲器()B、指示下一條要執(zhí)行的指令的地址。(3)堆棧()C、存儲程序、數據等信息的記憶裝置,PC機有ROM和RAM兩種。(4)IP()D、以后進先出方式工作的存儲空間。(5)SP()E、惟一代表存儲空間中每個字節(jié)單元的地址。(6)狀態(tài)標志()F、保存各邏輯段起始地址的寄存器,PC機有四個:CS、DS、SS、ES。(7)控制標志()G、控制操作的標志,PC機有三位:DF、IF、TF。(8)段寄存器()H、記錄指令操作結果的標志,PC機有6位:OF、SF、ZF、AF、CF、PF。(9)物理地址()I、分析、控制并執(zhí)行指令的部件,由ALU和寄存器組組成。三.問答題8086/8088CPU的地址總線有多少位?其尋址范圍是多少?答:8086/8088CPU的地址總線共20位,最大可尋址1MB空間。什么是總線?一般微計算機中有哪些總線?答:總線是微機系統(tǒng)之間、系統(tǒng)各模塊之間或模塊內部以及芯片內部各部分之間用來傳送信息的公共信息通路,是計算機傳送信息的一組導線,它將各部件連接成一個整體??偩€有多種分類方法,按總線在微機中所處位置的不同(或按總線上信息傳送范圍的不同)來看,微機中包括片內總線、片間總線、系統(tǒng)內總線和系統(tǒng)外總線四級總線。8086/8088CPU分為哪兩個部分?各部分主要由什么組成?答:8086/8088CPU分為總線接口部件(BIU)和執(zhí)行部件(EU)兩個部分。其中:BIU包括:4個16位的段地址寄存器(CS、DS、SS、ES);1個16位的指令指針寄存器IP;1個20位的地址加法器;指令隊列寄存器;內部寄存器;輸入輸出總線控制邏輯;EU包括:4個16位的通用數據寄存器(AX、BX、CX、DX);4個16位的專用寄存器(BP、SP、SI、DI);1個16位的標志寄存器FR;什么叫指令隊列?8086/8088CPU中指令隊列有什么作用?其長度分別是多少字節(jié)?答:指令隊列是用來暫存指令的一組寄存器,按“先進先出”原則讀寫。在8086/8088CPU中,只要指令隊列未填滿,BIU就從外部存儲器取指令并放入指令隊列中;另一方面,只要指令隊列中不空,EU就可將指令隊列中已有的指令取出執(zhí)行,這樣BIU和EU按并行方式重疊操作,大大提高了CPU的利用率,也降低了CPU對存儲器、I/O端口存取速度的要求。8086CPU中的指令隊列緩沖器長度為6個字節(jié),而8088CPU只有4個字節(jié)。8086/8088CPU中有幾個通用寄存器?有幾個變址寄存器?有幾個指針寄存器?通常哪幾個寄存器亦可作為地址寄存器使用?答:8086/8088CPU中共有:8個16位的通用寄存器AX、BX、CX、DX、BP、SP、SI、DI;2個變址寄存器SI、DI;2個指針寄存器BP、SP;其中BX、BP、SI、DI亦可作地址寄存器。8086/8088CPU中有哪些標志位?它們的含義和作用如何?答:8086/8088CPU中共有9個標志位,其中DF、IF和TF為控制標志位,其余6個為狀態(tài)標志位。它們的含義和作用如下所示:CF(CarryFlag)進位標志:若算術運算的結果產生了進位或借位(對字節(jié)操作最高位是D7位;對字操作最高位是D15位),則CF=1,否則CF=0。PF(Parity/EvenFlag)奇偶標志:如果運算結果中含有偶數個1,則PF=1,否則PF=0。此標志位主要用于數據通信中,檢測數據傳送有無出錯。AF(AuxiliaryCarryFlag)輔助進位標志:用于反映一個字節(jié)(字的低字節(jié))的低4位向高4位有無進位(借位)的情況,有進(借)位時,AF=1,否則AF=0。這個標志位主要用于實現BCD碼算術運算所需的二-十進制調整之用。ZF(ZeroFlag)零標志:若運算結果為0,此標志為1;否則ZF=0。SF(SignFlag)符號標志:因為補碼運算的最高位是符號位,所以它和運算結果的最高位(字節(jié)操作是D7位,字操作是D15位)狀態(tài)相同。當運算結果為負時,SF=1;否則SF=0。OF(OverflowFlag)溢出標志:在帶符號數的加或減運算中結果超出8位或16位符號數所能表示的數值范圍(-128~127或-32768~+32767)時,產生溢出使OF=1,否則OF=0。DF(DirectionFlag)方向標志位:此標志位用以控制串操作指令地址指針的步進方向。每執(zhí)行一條串操作指令,對地址要進行一次調整(對字節(jié)操作為加1或減1,對字操作為加2或減2)。方向標志DF決定地址是增量還是減量。若DF=1,串地址為減量;DF=0,則為增量。IF(InterruptEnableFlag)中斷允許標志位:也稱為開中斷標志位。若使IF=1,則CPU允許接受外部來的可屏蔽中斷源發(fā)出的中斷請求;若使IF=0,則表示CPU不響應此中所請求。IF對非屏蔽中斷及CPU內部中斷請求均不起作用。TF(TrapFlag)陷阱標志位:也稱為跟蹤標志位。若TF=1,則CPU處于單步執(zhí)行指令的工作方式。在這種工作方式下,CPU每執(zhí)行完一條指令就自動地產生一次類型為1的內部中斷,可以借此檢查這條指令的執(zhí)行情況。例1:1278H+3469H答:CF=0AF=1ZF=0SF=0OF=0PF=1例2:54E3H-27A0H答:CF=0AF=0ZF=0SF=0OF=0PF=0例3:3881H+3597H答:CF=0AF=0ZF=0SF=0OF=0PF=1例4:01E3H-01E3H答:CF=0AF=0ZF=1SF=0 OF=0PF=1什么是堆棧?它有什么用途?堆棧指針的作用是什么?舉例說明堆棧的操作。答:堆棧是一個按照后進先出(LIFO)的原則存取數據的存儲區(qū)域。堆棧的作用是為了在調用子程序(或轉向中斷服務程序)時,把斷點及有關的寄存器、標志位及時正確地保存下來,并保證逐次正確返回。利用堆棧指針SP可以實現對棧區(qū)的自動管理。例如:要把AX寄存器中的內容壓入堆棧,用入棧指令PUSHAX(設SP原值為1000H),其操作過程如下所示:第一步:先把SP-l→SP,然后把AH(高位字節(jié))送入SP所指單元(即SP=1FFFH);第二步:再次使SP-1→SP,把AL(低位字節(jié))送至SP所指單元(此時SP=1FFEH);數據出棧操作與入棧過程正相反:彈出時,先把AL內容彈出,然后修改SP+1→SP;再把AH內容彈出,再修改SP+1→SP。對于由8086/8088CPU組成的系統(tǒng),堆棧的位置如何確立?堆棧的首址(即SS中的值)是不是棧底?為什么?答:8086/8088系統(tǒng)中堆棧的位置由SS和SP初始化后確立:其中(SS)*16決定了堆棧段起始單元的地址,即堆棧段首址;(SS)*16+(SP初值)決定了堆棧段最后一個單元的地址,即棧底;(SS)*16+(SP現值)決定了堆棧段當前可用單元的地址,即棧頂。顯然,堆棧首址并不是棧低。一般來說,在堆棧所在的內存區(qū)內,棧底為高地址端。堆棧初始化后,未壓入數據時,棧底與棧頂是重合的。當堆棧壓入數據后,棧頂地址總是小于棧底地址,位于低地址端。Intel8086與8088有何區(qū)別?答:8086與8088的區(qū)別主要表現在以下幾個方面:第一、8086的指令隊列可以容納6個字節(jié),每個總線周期在存儲器中取出2個字節(jié)指令代碼填入隊列。而8088只能容納4個字節(jié),且每個總線周期只能取出1個字節(jié)指令代碼。第二、8086外部數據總線寬度為16位,8088外部數據總線寬度只有8位。注意:8086和8088外部數據總線的寬度不同將導致擴展主存儲器及輸入/輸出接口時系統(tǒng)地址線和數據線連接方式的不同。第三、其他不同的引腳定義:(1)AD15~AD0,在8086中為地址/數據復用,而在8088中AD15~AD8改為A15~A8只作地址線用;(2)34、28號引腳定義不同。試指出下列運算后的各個狀態(tài)標志,并說明進位標志和溢出標志的區(qū)別:其中,進位標志CF用于判別無符號數運算是否超出數的表示范圍,而溢出標志OF用于判別帶符號數運算是否超出數的表示范圍。奇偶標志PF只能判斷結果低8位中“1”的個數為奇數還是偶數。什么是邏輯地址?什么是物理地址?它們之間有什么聯(lián)系?各用在何處?答:邏輯地址由兩個16位的部分即段基址和偏移量組成,一般在程序中出現的地址都表示為邏輯地址形式;物理地址是一個20位的地址,它是唯一能代表存儲空間每個字節(jié)單元的地址,一般只出現在地址總線上。由于8086/8088CPU中的寄存器只有16位長,所以程序不能直接存放20位的物理地址,而必須借助邏輯地址,即用兩個16位的寄存器來表示物理地址。他們之間的關系是:物理地址=段基址*16+偏移量;另外,一個物理地址可對應多個邏輯地址。什么是段基值?什么是位移量?它們之間有何聯(lián)系?答:段基址即段起始地址,它的高16位地址存放在段寄存器中,稱之為段基值(低4位一般為0)。存儲器單元所在的位置距離段起始地址的偏移量稱之為位移量。程序中一個存儲單元的實際地址(即物理地址)是由這兩部分共同表示的。若CS為0A000H,試說明現行代碼段可尋址物理空間的范圍。答:因為8086系統(tǒng)中可尋址的最大邏輯段長度為64K,所以當CS為0A000H,即段基址為CS*16=0A0000H時,現行代碼段可尋址物理空間的范圍為:0A0000H~0AFFFFH。設現行數據段位于存儲器0B0000H~0BFFFFH單元,DS段寄存器內容為多少?答:DS段寄存器內容為0B000H。8086/8088CPU使用的存儲器為什么要分段?怎么分段?答:在8086/8088CPU中,ALU的運算是16位的,有關的地址寄存器如SP、IP以及BP、SI、DI等都是16位的,因而對地址的運算也只能是16位。也就是說對8086/8088而言,各種尋址方式下尋找操作數的范圍被限制在64KB以內。而8086/8088有20條地址線,它的直接尋址能力為1MB。這就產生了一個矛盾,即16位的地址寄存器如何去尋址20位的存儲器物理地址。解決這個問題是靠存儲器分段實現的:將整個1MB的內存儲器以64KB為單位分為若干段。尋址一個具體物理地址時,必須要由一個段地址(基地址)左移4位(即乘16)再加上由SP(或IP、BP、SI、DI)等寄存器之值表示的、可由CPU處理的16位偏移量來形成實際的20位物理地址;其中段地址(或基地址)是由8086/8088中的段寄存器形成的。
第3章匯編語言一.填空題1.指令MOV[BX+SI],AL中的目的操作數使用______段寄存器,屬于______尋址方式。解答:指令MOV[BX+SI],AL中的目的操作數使用___DS___段寄存器,屬于__基址變址____尋址方式。2.指令MOVBX,NUM[SI]的源操作數使用的是______尋址方式,SUBAX,[BX+SI]使用的是______尋址方式。解答:指令MOVBX,NUM[SI]源操作數使用了變址寄存器和一個位移量,因此是變址尋址方式。指令SUBAX,[BX+SI]中源操作數指定的一個基址寄存器BX和一變址寄存器SI,因此屬于基址變址尋址方式。3.指令LEABX,[BP+SI]的源操作數位于,執(zhí)行后BX的內容是。解答:指令LEABX,[BP+SI]的源操作數位于堆棧段,執(zhí)行后BX的內容是BP和SI的內容之和。4.堆棧指針SP的初值為2000H,AX=3000H,BX=5000H,CX=1000H,問(1)執(zhí)行PUSHAX,PUSHBX后,SP=。(2)再執(zhí)行PUSHCX,POPBX,POPAX后,……③1FFAH00H10H②1FFCH④00H50H①1FFEH⑤00H30H2000H……SP=AX=,BX=AXBX解答:(1)執(zhí)行AXBXSP-2=1FFEH→SP,指針在位置1處,棧頂為AX的內容執(zhí)行PUSHBXSP-2=1FFCH→SP,指針在位置2處,棧頂為BX的內容(2)再執(zhí)行PUSHCX,POPBX,POPAX后,執(zhí)行PUSHCXSP-2=1FFAH→SP,指針在位置3處,棧頂為CX的內容執(zhí)行POPBX將棧頂內容1000H彈出到BX中,SP+2=1FFCH→SP,指針在位置4處,BX=1000H執(zhí)行POPAX將棧頂內容5000H彈出到AX中,SP+2=1FFEH→SP,指針在位置5處,AX=5000H本題的正確答案為:(1)執(zhí)行PUSHAX,PUSHBX后,SP=1FFCH。(2)再執(zhí)行PUSHCX,POPBX,POPAX后,SP=1FFEHAX=5000H,BX=1000H5.若(AX)=7531H,(BX)=42DAH,則下列指令段SAHFPUSHBXPOPF指令執(zhí)行完畢后(AX)=,(SF,ZF,CF,OF)=(,,,)。解答:指令執(zhí)行完畢后(AX)=7531H,(SF,ZF,CF,OF)=(1,1,0,0)6.已知AL=2EH,BL=6CH,執(zhí)行指令ADDAL,BL之后,AL=,BL=,ZF=AF=OF=PF=CF=。解答:已知AL=2EH,BL=6CH,執(zhí)行指令ADDAL,BL之后,AL=9AH,BL=6CH,ZF=0AF=1OF=1PF=1CF=0。7.對兩個無符號8位二進制數進行加法運算后,結果為0EH,且標志位CF=1,OF=1,SF=0,其結果應為十進制數。解答:CPU對兩個無符號8位二進制數進行加法運算后,結果為0EH,且標志位CF=1,OF=1,SF=0,其結果應為十進制數270。8.設(AL)=10100000B,則執(zhí)行NEGAL后,(AL)=,設(AL)=10000000B,則執(zhí)行NEGAL后,(AL)=。解答:基址變址尋址在計算機中的減法運算可以將減數求補,(AL)=10100000B是一個負數,求它的真值,就對其求補(AL)=10100000B=-1100000B=-60H執(zhí)行NEGAL后,(AL)=01100000B=60H9.已知:(AL)=7AH,題(1),(2)相互獨立,求AL的值。(1)SUBAL,20H(AL)=()(2)CMPAL,20H(AL)=()解答:(1)SUBAL,20H這條是減法指令,7AH-20H=5AH,將結果回送到AL中因此(AL)=5AH(2)CMPAL,20H這是比較指令,將目的操作數與源操作數相減,但不送回結果,只根據結果置標志位,即(DST)-(SRC)。指令執(zhí)行后,兩個操作數均不發(fā)生變化。因此(AL)=7AH10.設DS=1000H、ES=2000H、SS=3000H、SI=00C0H、DI=0170H、BX=01B0H、AX=5657H,(10370H)=3AH,(10371H)=67H數據段中的變量NUM的偏移地址值為0050H。①求下條指令源操作數的物理地址為ADDAX,NUM[BX][DI]②指令執(zhí)行完成后OF=,CF=解答:①ADDAX,NUM[BX][DI]的源操作數是相對的基址變址尋址,處于數據段中,有效地址為:EA=0050H+01B0H+0170H=0370HPA=DS×10H+EA=10370H源操作數為10370H單元和10371H單元的內容=673AH②指令執(zhí)行完成后,AX=673AH+5657H=0BD91H,OF=1(有溢出),CF=0(無進位)11.將DL中的內容循環(huán)右移,已知移位前CL=9,要使其移位前后內容保持不變,應選用的指令是。解答:將DL中的內容循環(huán)右移,已知移位前CL=9,要使其移位前后內容保持不變,應選用的指令是RCL或RCR。12.串操作指令的兩個隱含的指針寄存器是。解答:串操作指令的兩個隱含的指針寄存器是SI和DI寄存器。13.指令REPMOVSB重復執(zhí)行的條件為。解答:指令REPMOVSB重復執(zhí)行的條件為CX≠0。14.串操作指令在內存中可以實現信息串的搬家,如果DS=ES且SI>DI,不能引起信息串的覆蓋,應設置。解答:串操作指令在內存中可以實現信息串的搬家,如果DS=ES且SI>DI,不能引起信息串的覆蓋,應設置DF=0。15.將下列程序補充完整:程序的功能是在數據段ADDR1地址處有200個字節(jié),要傳送到數據段地址ADDR2處。MOVAX,SEGADDR1MOVDS,AXMOVES,MOVSI,MOVDI,OFFSETADDR2MOV,200CLDREP解答:在存儲器中實現信息塊的搬家,使用重復前綴,必須先給CX賦值重復的次數。如果信息塊的長度是多少個字節(jié),用MOVSB傳送時,則將此字節(jié)數賦給CX作重復次數;若用MOVSW傳送時,則將此字節(jié)數÷2賦給CX作重復次數。程序要求200個字節(jié)搬移,指令中使用的重復次數為200,由此使用REPMOVSB指令,完整的程序如下:MOVAX,SEGADDR1MOVDS,AXMOVES,AXMOVSI,OFFSETADDR1MOVDI,OFFSETADDR2MOVCX,200CLDREPMOVSB16.若指令JMPADDR1的機器碼為E93512H,此指令的CS=1500H,IP=2400H,則目標ADDR1與本指令之間的位移量為,執(zhí)行本指令時,IP的當前值為,本指令執(zhí)行后,CPU轉移至CS:IP為。解答:JMP指令是無條件轉移指令,JMPADDR1的機器碼為E93512H,這是三字節(jié)指令,E9H表示操作碼,8086系統(tǒng)中,高地址存放的是高字節(jié),低地址則是低字節(jié),因此1235H是操作數,表示本指令與ADDR1之間的位移量為1235H。該指令是三字節(jié)指令,執(zhí)行指令時,當前IP=2400H+3=2403H。由目標偏移地址=當前IP值+指令中的位移量=2403H+1235H=3638H。因此,執(zhí)行該指令后,CPU轉移至1500H:3638H處。本題的正確答案為:若指令JMPADDR1的機器碼為E93512H,此指令的CS=1500H,IP=2400H,則目標ADDR1與本指令之間的位移量為1235H,執(zhí)行本指令時,IP的當前值為2403H,本指令執(zhí)行后,CPU轉移至CS:IP為1500H:3638H。17.閱讀程序并補充完整:以TAB為首地址的100個ASCII碼字符添加奇偶校驗位(bit7),使每個字節(jié)中的“1”的個數為偶數,再順序輸出到10H號端口。MOVSI,OFFSETTABMOVCX,①L2:MOVAL,[SI]ANDAL,②③L1ORAL,④L1:OUT10H,ALINC⑤LOOPL2解答:傳送類指令不影響標志位,可以使用ANDAL,AL或ANDAL,0FFH指令,它對AL的內容無影響,但影響標志位。為使每個字節(jié)中的“1”的個數為偶數,,用使用進行JP條件判斷,如果PF=1,則轉到L2出,否則在最高位加1,可湊成偶數。完整的程序如下:MOVSI,OFFSETTABMOVCX,100L2:MOVAL,[SI]ANDAL,0FFH或ALJPL1ORAL,80HL1:OUT10,HALINCSILOOPL218.設AX=8000H,BX=0FFFFH,執(zhí)行CMPAX,BX后,寫出兩條能引起轉移的條件轉移指令①、②。解答:AX=8000H,BX=0FFFFH,執(zhí)行CMPAX,BX后CF=1(有借位),OF=0(沒有溢出),ZF=0(結果不為0),SF=1(結果為負數,最高位為1),PF=0(第8位有1個1)。因此能引起只要的條件指令有JC、JNO、JNZ等。本題的正確答案為:設AX=8000H,BX=0FFFFH,執(zhí)行CMPAX,BX后,寫出兩條能引起轉移的條件轉移指令JC、JNZ。19.匯編語言的調試過程如下:建立______以為擴展名的源文件;生成以______為擴展名的目標文件;生成以______為擴展名的可執(zhí)行文件;使用DYBUG調試程序,調試可執(zhí)行目標程序。解答:匯編語言的調試過程如下:建立.ASM以為擴展名的源文件;生成以.OBJ為擴展名的目標文件;生成以.EXE為擴展名的可執(zhí)行文件;使用DYBUG調試程序,調試可執(zhí)行目標程序。20.宏匯編語言程序被匯編時,_____語句產生代碼指令,______語句不產生代碼指令,______語句可能產生也可能不產生代碼指令。解答:宏匯編語言程序被匯編時,指令性語句產生代碼指令,偽指令語句不產生代碼指令,宏指令語句可能產生也可能不產生代碼指令。21.已知VAR1是字變量,指令MOVAX,VAR1的功能是將送到AX中;指令MOVAX,OFFSETVAR1的是將送到AX,其功能和指令AX,VAR1是相同的。解答:已知VAR1是字變量,指令MOVAX,VAR1的功能是將VAR1的內容送到AX中;指令MOVAX,OFFSETVAR1的是將VAR1的偏移量送到AX,其功能和指令LEAAX,VAR1是相同的。22.假設VDT1和VDT2為字變量,TAL1和TAL2為標號,說明下列指令是否正確,說明其尋址方式;若有錯誤指出錯誤所在。(1)JMPVDT1(2)JMPNEARTAL1(3)JNZVDT2(4)JETAL2(5)JMPFARPTRTAL1(6)JMPFAL1[SI]解答:(1)JMPVDT1非法指令,跳轉指令應為標號不能是變量,VDT1是變量(2)JMPNEARTAL1非法指令,標號的類型屬性指在轉移指令中標號可轉移的距離,也稱距離屬性。類型NEAR,表示此標號只能實現本代碼段內轉移或調用;類型FAR,表示可以作為其它代碼段中的目標地址,實現段間轉移或調用。使用時,在屬性后加PTR,應該改為:JMPNEARPTRTAL1(3)JNZVDT2非法指令,跳轉指令應為標號不能是變量,VDT2是變量(4)JETAL2合法指令。(5)JMPFARPTRTAL1合法指令(6)JMPFAL1[SI]非法指令,FAL1為標號,表示指令語言的符號地址,SI是源變址寄存器,它存放的是地址。這條指令的錯誤之處在于兩個地址表達式不能相加。二.選擇題1.尋址方式指出了操作數的位置,一般來說(D)。A、立即尋址給出了操作數地址;B、寄存器直接尋址的操作數在寄存器內,而指令給出了存儲器;C、直接尋址直接給出了操作數本身;D、寄存器直接尋址的操作數包含在寄存器內中,由指令指定寄存器的名稱。2.寄存器尋址方式中,操作數在(A)中。A、通用寄存器B、堆棧C、內存單元D、段寄存器3.寄存器間接尋址方式中,操作數在(C)中。A、通用寄存器B、代碼段C、內存單元D、段寄存器4.8088變址尋址方式中,操作數的物理地址等于(B)A、段寄存器左移四位加上變址寄存器的內容;B、段寄存器左移四位加上變址寄存器的內容再加給定的偏移量;C、段寄存器左移四位加上變址寄存器的內容再加基址寄存器內容;D、段寄存器左移四位加上基址寄存器的內容再加給定的偏移量;5.下列指令中非法指令是(B)A.MOV[SI+BX],AXB.MOVCL,280C.MOV[0260H],2346HD.MOVBX,[BX]6.下列指令中,正確的是(D)A、MOVAL,1000B、MOV100,ALC、MOVAL,100HD、MOVAL,1007.在指令ADDAX,00H執(zhí)行后,CPU狀態(tài)標志位ZF的取值為(C)a.為0b.為1c.不確定d.沒有影響8..8086CPU在進行無符號數比較時,是根據(C)標志來判別大小的。A.CF和OFB.CF和SF C.CF和ZFD.OF和ZF9.設AL=0B4H,BL=11H,指令“MULBL”和指令“IMULBL”分別執(zhí)行后OF,CF的值為(B)。A、OF=1,CF=0B、OF=1,CF=1C、OF=0,CF=0D、OF=0,CF=110.下面指令中影響狀態(tài)標志位CF的指令是(D)。A、INCAX;B、DECAX;C、NOTAX;D、NEGAX11.已知AL=A8H,BL=62H,執(zhí)行ANDAL,BL指令后,AL中的數為(B)A.32B.20HC.00HD.+2012.AX中有一負數,欲求其絕對值,若該數為補碼,則用指令;若該數為原碼,則用指令。解答:AX中有一負數,欲求其絕對值,若該數為補碼,則用指令NEGAX;若該數為原碼,則用指令ANDAX,7FFFH。13.以下可以使寄存器AX和CF同時清零的指令為(A)A.SUBAX,AXB.XCHGAX,BXC.PUSHAXD.XORAX,BX14.完成將累加器AL清零,并將進位標志CF清零,下面錯誤的指令是(A)。A、MOVAL,00HB、ANDAL,00HC、XORAL,ALD、SUBAL,AL15.假設AL=3,要使得AL=0CH,應執(zhí)行的指令是(C)A、NOTALB、ANDAL,0FHC、XORAL,0FHD、ORAL,0FH16.測試BL寄存器內容是否與數據4FH相等,若相等則轉NEXT處執(zhí)行,可實現的方法是(B)。A、TESTBL,4FHJZNEXTB、XORBL,4FHJZNEXTC、ANDBL,4FHJZNEXTD、ORBL,4FHJZNEXT17.下面指令序列測試BH中的數是否為奇數,若為奇數則轉移至K1處,橫線處的指令應為()。TESTBH,01HK1A、JNEB、JZC、JNPD、JC解答:TESTBH,01H指令執(zhí)行結束后,如果BH為奇數,其“與”后的結果都為最低位為1,則ZF=0,那么ZF=0則轉移到K1處,使用的指令應該為JNZ/JNE。正確答案為A。18.執(zhí)行INTn指令或響應中斷時,CPU完成的操作次序是(A)A、FLAGS寄存器(FR)先入棧,其次CS,最后IPB、CS在先,其次IP,最后FR入棧C、FR在先,其后依次是IP,CSD、IP在先,其次CS,最后FR19.用匯編語言編寫的源程序,其后綴名為();其可執(zhí)行程序的后綴名為()。A、exeB、objC、asmD、c解答:用匯編語言編寫的源程序,其后綴名為(.asm);其可執(zhí)行程序的后綴名為(.exe),選擇C、A。20.下列描述正確的是B。A.匯編語言源程序可發(fā)直接運行B.匯編語言屬低級語言C.匯編語言是匯編語言編寫的程序,運行速度高,閱讀方便,屬于面向用戶的程序語言D.匯編語言可以在可以移植。21.列偽指令哪些是正確的:CERR1:DW99ERR2DB25×60COUNTEQU20ONEDBONE三.判斷題1.是非判定題:立即數尋址方式的操作數是在代碼段中的,因此在執(zhí)行指令的過程中也要執(zhí)行總線周期。(f)2.8086指令系統(tǒng)尋址方式中,直接尋址直接給出了操作數本身。(f)3.立即尋址方式的操作數一定放在代碼段中,而直接尋址方式的操作數一定放在數據段中。(f)4.判斷下列指令是否正確?(1)ADDAL,BL(2)ADDDS,CX(3)ADD〔SI〕,〔BP+100H〕(4)ADD〔BX〕,AX(5)ADDAX,CL解答:(1)ADDAL,BL;合法指令,源操作數和目的操作數都是8位寄存器(2)ADDDS,CX;非法指令,目的操作數不能是段寄存器(3)ADD〔SI〕,〔BP+100H〕;非法指令,源操作數和目的操作數都是存儲區(qū)操作數(4)ADD〔BX〕,AX;合法指令,源操作數是寄存器,目的操作數是存儲器操作數(5)ADDAX,CL;非法指令,源操作數和目的操作數類型不匹配5.CPU用指令SUBAX,AX可以是零標志位置位,進位標志清零。(t)6.x與Y進行異或運算后再與Y的反進行異或運算,結果是求x的反。(t)四.編程題1.對數據段中4300H單元內的8位帶符號數判斷,若為正數,加1放回原單元;為負數,則減1放回原單元,編寫程序。解答:MOVAL,[4300H]ADDAL,0JNSPOSIINCALMOV[4300H],ALJMPEXITPOSI:DECALMOV[4300H],ALEXIT:HLT2.編寫程序:給1A000H開始的256個內存單元均減去1,若發(fā)現某個單元減為0則立即退出循環(huán),其后的單元不再減1。解答:1A000H是物理地址,我們可以設DS=1A00H,偏移地址則為0。程序如下:MOVAX,1A00HMOVDS,AX;給段寄存器DS賦值1A00HMOVDI,0;DI指向內存數據區(qū)MOVCX,256;共循環(huán)256次GOON:DECBYTEPTR[DI];由DI指向的內存單元的內容減1INCDI;指針加1,指向下一個單元CMPBYTEPTR[DI-1],0;上一個單元的內容和0進行比較LOOPNZGOON;不為0,則繼續(xù)轉向GOON處,同時CX內容自動減1HLT;為0,退出循環(huán)3.編程實現將存儲單元BLOCK中的N個字節(jié)的數據按正數、負數分開,分別送到兩個緩沖區(qū)PLUS_DATA和MINUS_DATA。解答:設置三個指針,SI指向BLOCK存儲單元,DI指向PLUS_DATA存儲區(qū),BX指向MINUS_DATA存儲區(qū)。在程序中使用串操作指令,設置傳送方向從低到高即CLD。先從BLOCK中取一個字節(jié),用測試指令TESTAL,80H指令測試其最高位,再用JZ判斷正負,正數轉到PLUS_DATA數據區(qū),負數轉到MINUS_DATA數據區(qū)。程序如下:LEASI,BLOCK;S指向內存數據區(qū)LEADI,PLUS_DATA;DI指向存放正數的緩沖區(qū)LEABX,MINUS_DATA;BX指向存放負數的緩沖區(qū)CLD;由低到高MOVCX,N;置循環(huán)次數AGAIN:LODSB;從DS:SI(內存數據區(qū))取一個字節(jié)到AL中TESTAL,80H;測試AL中的最高位JNZMIUS;若ZF=0,表示最高位為1是負數,轉移到MIUS處理STOSB;為正數,將AL中的內容存到ES:DI處,修改指針DIJMPNEXT_N;轉下一個MIUS:XCHGBX,DI;BX與DI交換,是DI指向存負數的緩沖區(qū)STOSB;存負數,同時修改指針DIXCHGBX,DI;將修改后的指針與BX交換NEXT_N:LOOPAGAIN;未完成,繼續(xù)4.在8000H開始的長度為1000字節(jié)的字符串中查找‘S’,若找到,把其偏移地址記錄在ADDR中,否則ADDR單元置為0FFFFH。分析:考查8086的指令系統(tǒng)解答:在8000H開始的長度為1000字節(jié)的字符串中查找‘S’,可以使用信息串的掃描指令SCASB,將字符‘S’放在AL中,將DI設置為8000H。MOVDI,8000HMOVCX,1000MOVAL,‘S’MOVADDR,0FFFFHGOON:SCASBLOOPNZGOONJNZDONEDECDIMOVADDR,DIDONE:HLT也可使用帶條件重復前綴REP指令,前四條指令相同,后續(xù)指令如下:CLDREPNESCASB;CX≠0(沒查完)和ZF=0(不相等)重復JNZDONE;若ZF=0,表示沒有找到,轉出DECDI;若ZF=1,則DI指向上個單元即字符‘S’的偏移地址MOVADDR,DI;將偏移地址送到ADDR單元中DONE:HLT5.編程將BUF單元中的一個8位數乘以10,乘積放在ANS單元及其下的一個單元中(至少用3種方法)。解答:(1)利用乘法指令,這是最直接的方法MOVAL,BUFMOVBL,10MULBLMOVANS,AXHLT(2)一個數乘以10就是對該數連續(xù)加10次,因此可以利用連續(xù)加法實現。MOVAL,BUFMOVCX,10MOVAH,0MOVDX,0GOON:ADDDX,AXDECCXJNZGOONMOVANS,DXHLT(3)用左移指令來實現,因為左移1次就是是乘以2,左移3次是乘以8,那么2+2=10,所以可用移位實現乘10操作。MOVAL,BUFMOVCL,3SALAL,1;左移1位就是乘以2MOVAH,AL;將乘以2的結果存放在AH中SALAL,1;再左移1位是乘以4SALAL,1;ADDAL,AH,;HLT6.將內存中DATA單元起始的100個單元中的字節(jié)數據排序。解答:100個單元中的字節(jié)數據由大到小排序,有多種方法,常用的方法為“冒泡法”排序。首先,所有相鄰兩單元的數依次兩兩比較,若下面的數大則不交換;若下面的數打,則兩數交換位置??梢钥闯?,第一輪共進行100-1=99次比較,最小的數排到了最后面。第二輪在前99個數中比較交換,共進行100-2=98次比較,次小的數排到了倒數第二位。如此進行,經過100-1=99輪比較,已經排好了次序。程序如下:MOVBX,OFFSETDATAMOVCX,100DECCXLOOP1:MOVDI,CXLOOP2:MOVAX,[BX]CMPAX,[BX+1]JGENEXTXCHGAX,[BX+2]MOV[BX],AXNEXT:INCBXLOOPLOOP2MOVCX,DILOOPLOOP1INT7.若在內存某一緩沖區(qū)中存放著若干個單元的用BCD碼表示的十進制數。每—個單元中放兩位BCD碼,要求把它們分別轉換為ASCII碼。高位的BCD碼轉換完后放在地址較高的單元。解答:轉換公式:ASCII=BCD+30H,其算法是將源串和目的串的表首分別設兩個指針。取BCD轉ASCII后存入(先低位,后高位)MOV SI,OFFSETBCDBUFF;設置源地址指針MOV CX,COUNT;設計數初值MOV DI,OFFSETASCBUF;設置目的地址指針AGAIN:MOV AL,[SI]MOV BL,ALAND AL,0FH;取低位BCD碼OR AL,30H;轉換成ASCII碼MOV [DI],AL;存入INC DI;修改指針MOV AL,BLPUSH CXMOV CL,4SHR AL,CLOR AL,30H;高位轉換成ASCII碼MOV [DI],AL;存入POP CXINC DIINC SI
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)生綜合練習試題及答案
- 未來執(zhí)業(yè)藥師的職業(yè)角色轉變試題及答案
- 見解深刻無人機駕駛員考試試題及答案
- 高級會計考試方法策略試題及答案
- 夫妻忠誠協(xié)議書見證及婚姻關系維護責任合同
- 培訓不止是讀
- 探索未知宇宙:課件中的星辰大海
- 高級審計師職業(yè)路徑規(guī)劃試題及答案
- 高級審計師備考中的有效方法試題及答案
- 2025年多功能抑塵車項目發(fā)展計劃
- 《養(yǎng)老護理員》-課件:自然災害的應對處理知識
- 新思想引領新征程新青年建功新時代 (修改版)
- 跨部門協(xié)調與部門間合作
- 鋼結構工程施工組織設計完整版
- 飼料添加劑(全)課件
- 《田間藥效試驗》課件
- 勞務外包服務方案(技術方案)
- 電鍍有限公司雙體系資料之風險分級管控體系實施手冊
- 材料力學第4版單輝祖習題答案
- 【醫(yī)院管理案例學習】-床單位終末消毒標準的執(zhí)行
- EMS概要設計說明書計費模塊
評論
0/150
提交評論