




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第1章答案練習(xí)題11.1-1從第一代到第四代計(jì)算機(jī)的體系結(jié)構(gòu)都是相同的,都是由運(yùn)算器、控制器、存儲器以及輸入設(shè)備和輸出設(shè)備組成的,稱為()結(jié)構(gòu)。A.艾倫·圖靈 B.馮·諾依曼 C.比爾·蓋茨 D.羅伯特·諾伊斯答案:B1.1-2通常所說的32位機(jī),指的是這種計(jì)算機(jī)的CPU()。A.是由32個(gè)運(yùn)算器組成的 B.能夠一次處理32位二進(jìn)制數(shù)C.包含有32個(gè)寄存器 D.一共有32個(gè)運(yùn)算器和控制器答案:B1.1-3一般在CPU中包含有()。A.算術(shù)邏輯單元 B.主存 C.I/O單元 D.?dāng)?shù)據(jù)總線答案:A1.1-4完整的計(jì)算機(jī)系統(tǒng)應(yīng)該包括()。A.系統(tǒng)軟件和應(yīng)用軟件 B.計(jì)算機(jī)及其外部設(shè)備 C. D.答案:C1.1-5構(gòu)成微機(jī)的主要部件除CPU、系統(tǒng)總線、I/O接口外,還有()。A.CRT B.鍵盤 C.磁盤 主存儲器答案:D1.1-6計(jì)算機(jī)實(shí)際上是執(zhí)行()。A.用戶編制的高級語言程序 B.用戶編制的匯編語言程序 C.系統(tǒng)程序 D.機(jī)器指令答案:D1.1-7計(jì)算機(jī)之所以能連續(xù)自動進(jìn)行數(shù)據(jù)處理,其主要原因是()。A.采用了開關(guān)電路 B.采用了半導(dǎo)體器件 C.D.采用了二進(jìn)制答案:C1.1-8運(yùn)算器的主要功能是()。A.算術(shù)運(yùn)算 B.邏輯運(yùn)算 C.算術(shù)運(yùn)算和邏輯運(yùn)算 D.函數(shù)運(yùn)算答案:C1.1-9判斷題(1)所謂三總線就是數(shù)據(jù)總線、控制總線、地址總線。()(2)無論什么微型計(jì)算機(jī),其CPU都具有相同的機(jī)器指令。()(3)匯編語言就是機(jī)器語言。()答案:(1)對,(2)錯(cuò),(3)錯(cuò)1.1-10答案:練習(xí)題21.2-1選擇題(1)二進(jìn)制數(shù)011001011110B對應(yīng)的十六進(jìn)制數(shù)為()A.4EH B.75FH C.54FH D.65EH答案:D(2)11110000B對應(yīng)的十進(jìn)制數(shù)是()A.360 B.480 C.240 D.120答案:C1.2-2完成下列數(shù)制的轉(zhuǎn)換。(1)201D =
H=O=B(2)123.45D =
H=O=B(3)1ACDH =
D=O=B(4)10110101B =H=D=O答案:(1)C9H=311O=11001001B(2)7B.733H=173.343O=1111011.01110B(3)
6861D=15135O=1101011001101B(4)181D=265O=B5H練習(xí)題31.3-1判斷題:(1)若[X]原=[X]反=[X]補(bǔ),則該數(shù)為正數(shù)。()(2)補(bǔ)碼的求法是:正數(shù)的補(bǔ)碼等于原碼,負(fù)數(shù)的補(bǔ)碼是原碼連同符號位一起求反后加1。()(3)如果二進(jìn)制數(shù)00000H~11111H的最高位為符號位,其能表示31個(gè)十進(jìn)制數(shù)。()答案:(1)(對)(2)(錯(cuò))(3)(錯(cuò))1.3-2用補(bǔ)碼表示的二進(jìn)制數(shù)10001000B轉(zhuǎn)換為對應(yīng)的十進(jìn)制數(shù)真值為。答案:1201.3-3假設(shè)某微機(jī)的字長是8位,給出?52碼、反碼、補(bǔ)碼。答案:[?52]原=10110100B[?52]反=11001011B[?52]補(bǔ)=11001100B1.3-4計(jì)算機(jī)的內(nèi)存“溢出”是指其運(yùn)算結(jié)果()。A.為無窮大B.超出了計(jì)算機(jī)存儲單元所能存儲的數(shù)值范圍C.超出了該指令所指定存放結(jié)果的存儲單元所能存儲的數(shù)值范圍D.超出了一個(gè)字所能表示數(shù)的范圍答案:C1.3-5已知X=58,Y=67,設(shè)字長為8,求[?58]補(bǔ),[?67]補(bǔ)。并利用補(bǔ)碼的加/減法運(yùn)算規(guī)則計(jì)算[X?Y]補(bǔ),[?X+Y]補(bǔ),[?X?Y]補(bǔ),要求寫出計(jì)算過程,并判斷是否溢出。答案:[58]補(bǔ)=00111010B[58]補(bǔ)=11000110B[67]補(bǔ)=01000011B[67]補(bǔ)=10111101B[X?Y]補(bǔ)=[X]補(bǔ)+[?Y]補(bǔ)=[58]補(bǔ)+[?67]補(bǔ)00111010B+10111101BOF=00=011110111B[?X+Y]補(bǔ)=[?X]補(bǔ)+[Y]補(bǔ)=[?58]補(bǔ)+[67]補(bǔ)11000110B+01000011BOF=11=0100001001B[?X?Y]補(bǔ)=[?X]補(bǔ)+[?Y]補(bǔ)=[?58]補(bǔ)+[?67]補(bǔ)11000110B+10111101BOF=11=0110000011B練習(xí)題41.4-1十進(jìn)制數(shù)255的ASCII碼可以表示為;用壓縮BCD碼表示為;其對應(yīng)的十六進(jìn)制數(shù)表示為。答案:32H35H35H;001001010101B;0FFH1.4-2判斷:與二進(jìn)制數(shù)11001011B等值的壓縮BCD碼是11001011B。()答案:錯(cuò)壓縮BCD碼不會出現(xiàn)1010~1111,應(yīng)該先求出11001011B對應(yīng)的十進(jìn)制數(shù),即203,然后再求BCD碼,001000000011B1.4-3用壓縮BCD碼求下列各數(shù),要求結(jié)果為壓縮BCD碼。(1)38+49 (2)33+34 (3)91-66 (4)87-15答案:(1)00111000B38+01001001B4910000001B個(gè)位(D3向D4)有進(jìn)位+00000110B加06H10000111B87(2)00110011B33+00110100B3401100111B67結(jié)果正確不需要修正(3)10010001B91?01100110B6600101011B個(gè)位超過計(jì)數(shù)符號9(1001)?00000110B減06H00100101B25(4)10000111B87?00010101B1501110010B72結(jié)果正確不需要修正本章習(xí)題1-1下面是4個(gè)無符號數(shù)的大小順序,正確的排列是()。A.0FEH>250D>371Q>0111111B B.250D>0FEH>371Q>0111111B C.371Q>0FEH>250D> 0111111B D.0111111B>0FEH>250D>371Q答案:A1-21個(gè)8位二進(jìn)制數(shù),若采用補(bǔ)碼表示,且由4個(gè)1和4個(gè)0組成,則最小值為()。A.?120 B.?7 C.?112 D.?121答案:D1-3兩個(gè)壓縮BCD碼相加,結(jié)果為壓縮BCD碼,為得到正確結(jié)果,對高4位和低4位都要修正的是()。A.38+49 B.33+34 C.91+56 D.87+15答案:D1-4完成下列無符號數(shù)的加法、減法運(yùn)算。(1)24A5H和0033H (2)62FCH和0004H (3)7889H和0777H(4)7BCDH和35B5H (5)5CBEH和0BAFH【解答:】(1)24A5H(2)62FCH(3)7889H+0033H+0004H+0777H24D8H6300H8000H24A5H62FCH7889H0033H0004H0777H2472H62F8H7112H(4)7BCDH(5)5CBEH+35B5H+0BAFHB182H686DH7BCDH5CBEH35B5H0BAFH4618H510FH1-5試指出十六進(jìn)制數(shù)的數(shù)碼0~9及A~F對應(yīng)字符的ASCII碼,并說明數(shù)碼與ASCII碼之間的數(shù)值關(guān)系?!窘獯穑骸俊?’~’9’的ASCII碼分別為30H~39H,而’A’~’F’的ASCII碼分別為41H~46H。0~9和A~F作為數(shù)值,它們是連續(xù)的,而作為符號(在屏幕上顯示的字符)從9到A的ASCII碼值相差7。
1-6設(shè)計(jì)算機(jī)字長為8位,對下列有符號數(shù)進(jìn)行計(jì)算,并用雙高位判別法判斷是否產(chǎn)生溢出。(1)(+90)+(+107) (2)(110)+(92) (3)(+45)+(+30)(4)(14)+(16) (5)(117)+(+121) (6)(12)+(+9)【解答:】(1)01011010[+90]補(bǔ)+01101011[+107]補(bǔ)011000101→59Cs=0,Cp=1,OF=CsCp=1,溢出(2)10010010[110]補(bǔ)+10100100[92]補(bǔ)100110110→+54Cs=1,Cp=0,OF=CsCp=1,溢出(3)00101101[+45]補(bǔ)+00011110[+30]補(bǔ)001001011→+75Cs=0,Cp=0,OF=CsCp=0,未溢出(4)11110010[14]補(bǔ)+11110000[16]補(bǔ)111110010→30Cs=1,Cp=1,OF=CsCp=0,未溢出(5)10001011[117]補(bǔ)+01111001[+121]補(bǔ)100000100→4Cs=1,Cp=1,OF=CsCp=0,未溢出(6)11110100[12]補(bǔ)+00001001[+9]補(bǔ)011111101→3Cs=0,Cp=0,OF=CsCp=0,未溢出1-7完成下列邏輯運(yùn)算。(1)11001100B10101010B (2)11001100B10101010B (3)11001100B10101010B(4)10101100B10101100B (5)10101100B10101100B (6)10101100B10101100B (7) (1)11001100B10101010B10001000B(2)11001100B10101010B11101110B(3)11001100B10101010B01100110B(4)10101100B10101100B10101100B(5)10101100B10101100B10101100B(6)10101100B10101100B00000000B(7)=01010011B第2章習(xí)題答案練習(xí)題12.1-18086在功能結(jié)構(gòu)上由和構(gòu)成。答案:總線接口單元(BIU)執(zhí)行單元(EU)2.1-2將62A0H和4321H相加,則AF=,SF=,ZF=,CF=,OF=,PF=。答案:AF=0;SF=1;ZF=0;CF=0;OF=01=1,PF=02.1-38086的段寄存器的功能是()。A.用于計(jì)算偏移地址 B.執(zhí)行各種數(shù)據(jù)傳送操作 C.答案:C2.1-4微機(jī)的地址總線主要功能是()。A.只用于選擇存儲器單元 B.只用于選擇進(jìn)行信息傳輸?shù)脑O(shè)備C.用于傳送要訪問的存儲器單元或I/O端口的地址 D.只用于選擇I/O端口答案:C2.1-5在堆棧段中,存放棧頂?shù)刂返募拇嫫魇牵ǎ?。A.IP B.SP C.BX D.BP答案:B練習(xí)題22.2-18086中地址/數(shù)據(jù)線分時(shí)復(fù)用,為保證總線周期內(nèi)地址穩(wěn)定,應(yīng)配置___________,為提高總線驅(qū)動能力,應(yīng)配置__________。答案:地址鎖存器(如74LS373)、雙向數(shù)據(jù)總線收發(fā)器(如74LS245)2.2-28086最小工作模式下的總線控制信號由 產(chǎn)生,最大工作模式下由 產(chǎn)生。答案:CPU,總線控制器82882.2-38086有兩種工作模式,當(dāng)8086處于最小工作模式時(shí),接()。A.+12V B.12V C.+5V D.地答案:C2.2-48086的INTR信號()有效。A.上升沿 B.下降沿 C.高電平 D.低電平答案:C2.2-5下列說法中屬于8086最小工作模式特點(diǎn)的是()。A.CPU提供全部的控制信號 B.由編程進(jìn)行模式設(shè)定 C.不需要地址鎖存器 D.需要總線控制器8288答案:A練習(xí)題32.3-1若存儲器的讀出時(shí)間大于CPU所要求的時(shí)間,為保證CPU與存儲器的周期配合,就需要用______信號,使CPU插入1個(gè)______狀態(tài)。答案:READY、Tw2.3-2對存儲器訪問時(shí),地址線有效和數(shù)據(jù)線有效的時(shí)間關(guān)系應(yīng)該是()。A.?dāng)?shù)據(jù)線較先有效 B.二者同時(shí)有效 C.地址線較先有效 D.同時(shí)高電平答案:C2.3-38086的時(shí)序中,不加等待的一個(gè)總線周期需時(shí)鐘周期數(shù)為()。A.1 B.2 C.3 D.4答案:D2.3-48086執(zhí)行1個(gè)總線周期最多可傳輸()個(gè)字節(jié)。A.1 B.2 C.3 D.4答案:B2.3-5RESET信號有效后,8086執(zhí)行的第一條指令地址為()。A.00000H B.FFFFFH C.FFFF0H D.0FFFFH答案:C練習(xí)題42.4-1已知CS=1800H,IP=1500H,則指令所處的物理地址為,給定某個(gè)數(shù)據(jù)的偏移地址是2359H,且DS=49B0H,該數(shù)據(jù)的實(shí)際物理地址為H。答案:19500H,4BE59H2.4-2判斷:8086訪問1個(gè)字節(jié)單元和訪問1個(gè)字單元,都只需要1個(gè)總線周期。()答案:錯(cuò)誤2.4-3設(shè)存儲器的數(shù)據(jù)段存放了2個(gè)字?jǐn)?shù)據(jù)2FE5H和3EA8H,已知DS=2500H,數(shù)據(jù)的偏移地址分別為1201H和305AH,畫圖說明2個(gè)字在存儲器中的存放情況。如要讀取這2個(gè)字,8086需要對存儲器進(jìn)行幾次讀操作?答案:字?jǐn)?shù)據(jù)2FE5H的物理地址=2500H16+1201H=25000H+1201H=26201H;字?jǐn)?shù)據(jù)3EA8H的物理地址=2500H16+1201H=25000H+305AH=2805AH;……26201HE5H←奇地址字?jǐn)?shù)據(jù)26202H2FH……2805AHA8H←偶地址字?jǐn)?shù)據(jù)2805BH3EH2FE5H存放在奇地址,所以8086訪問需要讀2次存儲器;3EA8H存放在偶地址,所以8086訪問只需要讀1次存儲器。練習(xí)題52.5-1現(xiàn)有8個(gè)字節(jié)的數(shù)據(jù)為34H、45H、56H、67H、78H、89H、9AH和ABH,假設(shè)它們分別在物理地址為400A6H~400ADH的存儲單元中,若當(dāng)前DS=4002H:(1)試求各存儲單元的偏移地址,并畫出數(shù)據(jù)存放示意圖。(2)(3)請寫出讀出的字?jǐn)?shù)據(jù)。答案:(1)有效地址
=
物理地址?段基值×16,所以第1個(gè)單元的有效地址
=400A6H?40020H=0086H,以此類推,各存儲單元的有效地址是0086H~008DH。
……400A6H34HDS:0086H400A7H45HDS:0087H400A8H56HDS:0088H400A9H67HDS:0089H400AAH89HDS:008AH400ABH89HDS:008BH400ACH9AHDS:008CH400ADHABHDS:008DH……(2)因?yàn)槭菑呐嫉刂烽_始讀取數(shù)據(jù),所以8086只需要訪問存儲器4次;因?yàn)?088只有8根數(shù)據(jù)總線,所以8088只需要訪問存儲器8次;(3)8086/8088讀出的數(shù)據(jù)相同,是:4534H,6756H,8978H,0AB9AH.練習(xí)題6略,見教材資源中的文件夾“源碼與仿真電路”本章習(xí)題2-18086的存儲器采用什么結(jié)構(gòu)?用什么信號來選擇存儲體?答案:8086的存儲器采用奇偶存儲體交叉編址結(jié)構(gòu),通過和地址總線A0配合來選擇存儲體,=0奇地址存儲體被選通、高8位數(shù)據(jù)總線有效,A0=0偶地址存儲體被選通、低8位數(shù)據(jù)總線有效。2-28086由哪兩部分組成?它們的主要功能是什么?8086與8088的主要區(qū)別是什么?答案:8086微處理器由總線接口單元(BIU)和執(zhí)行單元(EU)組成。BIU負(fù)責(zé)在CPU與存儲器、I/O端口之間傳送數(shù)據(jù),其主要功能是保持當(dāng)前要執(zhí)行的指令、分析指令、向執(zhí)行部件提供穩(wěn)定的指令特征狀態(tài);計(jì)算下條指令的地址,以便控制程序的走向,保證正確地執(zhí)行程序;控制存儲器、輸入/輸出設(shè)備之間的數(shù)據(jù)交換。EU負(fù)責(zé)指令的執(zhí)行,其主要任務(wù)是執(zhí)行指令,進(jìn)行全部算術(shù)邏輯運(yùn)算,完成偏移地址的計(jì)算,向總線接口單元(BIU)提供指令執(zhí)行結(jié)果的數(shù)據(jù)和偏移地址,并對通用寄存器和標(biāo)志寄存器進(jìn)行管理。8086和8088的主要區(qū)別是:(1)8086的外部數(shù)據(jù)總線為16位,而8088的外部數(shù)據(jù)總線為8位,因此,稱8086為16位微處理器,而8088為準(zhǔn)16位微處理器;(2)8086的存儲器采用分體結(jié)構(gòu),而8088不是;(3)8086中指令隊(duì)列緩沖器長度為6個(gè)字節(jié),而8088的是4個(gè)字節(jié);(4)部分控制信號不同,8086的存儲器、I/O端口選擇信號使用M/,而8088使用IO/;因?yàn)?088沒有引腳,對應(yīng)引腳定義為狀態(tài)信號。2-38086的指令隊(duì)列緩沖器有什么好處?8086內(nèi)部的并行操作體現(xiàn)在哪里?答案:8086在指令譯碼和執(zhí)行指令的同時(shí),總線接口部件從存儲器中取下面一條或幾條指令,取來的指令就放在指令隊(duì)列中排隊(duì)。這樣,CPU執(zhí)行完一條指令就可以立即執(zhí)行下一條指令,從而提高了CPU執(zhí)行指令的速度。在8086中,由于BIU和EU是分開的,所以,其并行操作體現(xiàn)在取指令和執(zhí)行指令可以重疊進(jìn)行,于是就大大減少了等待取指令所需的時(shí)間,提高了CPU的利用率。2-48086CPU中有哪些寄存器?各有什么用途?答案:(1)通用寄存器組包括4個(gè)16位的寄存器:AX(累加器)、BX(基地址寄存器)、CX(計(jì)數(shù)器)和DX(數(shù)據(jù)寄存器)。在指令執(zhí)行的過程中,既可用來寄存操作數(shù),也可用于寄存操作的結(jié)果。它們中每一個(gè)又分成獨(dú)立的兩個(gè)8位寄存器,分別對應(yīng)高8位(AH,BH,CH和DH)與低8位(AL,BL,CL和DL)。8位寄存器只能用來存放數(shù)據(jù);16位寄存器主要用來存放數(shù)據(jù),也可用來存放地址。(2)指針寄存器和變址寄存器包括SP、BP、SI和DI,也是4個(gè)16位的寄存器,用于存放段內(nèi)偏移地址的全部或一部分。它們也可以用來存放一個(gè)16位數(shù)據(jù),作為一般的16位寄存器使用。但更多的是用它們提供段內(nèi)尋址的偏移地址。①堆棧指示器(SP):主要用于指示堆棧的棧頂位置,與段寄存器SS一起形成堆棧的頂部地址,進(jìn)行堆棧操作。SP始終指向棧頂位置。②基址指示器(BP):用做堆棧的一個(gè)附加指針,與SS聯(lián)用,確定堆棧中某一存儲單元的物理地址,用于對棧區(qū)的數(shù)據(jù)進(jìn)行操作。它與SP的區(qū)別為,它不具有SP始終指向棧頂位置的功能,但它可以作為棧區(qū)內(nèi)的一個(gè)偏移地址,訪問棧區(qū)內(nèi)任意位置的存儲單元。③源變址寄存器(SI)和目標(biāo)變址寄存器(DI):SI和DI寄存器具有自動增量和自動減量的功能,因此常與DS、ES聯(lián)用,用于數(shù)據(jù)區(qū)中的數(shù)據(jù)塊或字符串傳送操作。在這類操作指令中,SI指示源地址,而DI指示目標(biāo)地址。(3)段寄存器①代碼段寄存器(CS):用于存放程序段的地址,在取指令時(shí)用此寄存器的內(nèi)容左移4位以后的值加上指令計(jì)數(shù)器(指令指針I(yè)P)中的偏移值,結(jié)果就是當(dāng)前要取的指令的物理地址。②數(shù)據(jù)段寄存器(DS):它存放當(dāng)前數(shù)據(jù)段地址。執(zhí)行指令時(shí),根據(jù)指令尋址方式中段的指定,在執(zhí)行部件中獲得偏移地址,這一地址加上數(shù)據(jù)段寄存器左移4位后的值,結(jié)果就是實(shí)際要用的操作數(shù)的物理地址。③堆棧段寄存器(SS):棧操作時(shí)堆棧指示器(SP)提供偏移地址,將堆棧段寄存器的內(nèi)容左移4位后和偏移地址相加,即獲得堆棧操作的物理地址。④附加段寄存器(ES):用于字符串操作。當(dāng)進(jìn)行字符串操作時(shí),附加段作為目的區(qū)地址使用,ES存放附加段的段地址,DI存放目的區(qū)的偏移地址。(4)標(biāo)志寄存器8086/8088內(nèi)部有一個(gè)16位的標(biāo)志寄存器FLAGS,設(shè)置了9位標(biāo)志。其中3位是控制標(biāo)志,它是用專門的置1或清除指令人為設(shè)置的,以此來控制CPU的操作;6位是狀態(tài)標(biāo)志,它們反映了執(zhí)行操作后算術(shù)或邏輯運(yùn)算結(jié)果的特征,8086/8088可以根據(jù)這些標(biāo)志位的狀態(tài)決定其后續(xù)動作。2-5要完成下述運(yùn)算或控制,用FR中的什么標(biāo)志判別?(1)比較兩數(shù)是否相等 (2)兩數(shù)運(yùn)算后結(jié)果是正數(shù)還是負(fù)數(shù)(3)兩數(shù)相加后是否溢出 (4)采用偶校驗(yàn)方式,判定是否要補(bǔ)“1”答案:(1)兩數(shù)相減后,觀察ZF,如ZF=1,說明相等,反之不相等;(2)觀察SF的狀態(tài),如SF=1,說明結(jié)果是負(fù)數(shù),反之非負(fù)(可能是正數(shù)也可能是0),進(jìn)一步觀察ZF,此時(shí)如果ZF=0,那么結(jié)果為正數(shù)(SF=0且ZF=0);(3)觀察OF,如OF=1,說明結(jié)果溢出(4)觀察PF,如果PF=1,說明結(jié)果中有偶數(shù)個(gè)1,此時(shí)不用補(bǔ)“1”;反之要補(bǔ)“1”。2-68086/8088的引腳是怎樣的?請將地址線、數(shù)據(jù)線、控制信號線及電源信號線分類,思考為什么要設(shè)置這些信號線?答案:8086微處理器采用雙列直插式封裝結(jié)構(gòu),共有40個(gè)引腳1.地址線:AD19~AD02.數(shù)據(jù)線:AD15~AD03.控制信號線:(1)(輸出,三態(tài))—高8位數(shù)據(jù)總線允許/狀態(tài)復(fù)用引腳,低電平有效。(2)—最大/最小模式控制引腳。(3)(輸出,三態(tài))—讀選通信號,低電平有效。(4)READY(輸入)—準(zhǔn)備就緒信號。(5)INTR(輸入)—可屏蔽中斷請求信號。(6)(輸入)—等待測試控制信號,低電平有效。(7)NMI(輸入)—非屏蔽中斷信號。4.電源線和地線電源線VCC接入電壓為5V10%。地線GND接地。這些線用于數(shù)據(jù)、地址、控制信息的傳輸,以及為CPU供電。2-7什么是8086的最大工作模式和最小工作模式?將8086/8088下列方式的特點(diǎn)填入表中。特點(diǎn)方式引腳處理器個(gè)數(shù)總線控制信號的產(chǎn)生最小工作模式最大工作模式答案:當(dāng)引腳接+5V時(shí),CPU處于最小工作模式,微處理器系統(tǒng)中只有一個(gè)CPU,所有的控制信號由CPU產(chǎn)生。當(dāng)引腳接地時(shí),8086/8088微處理器處于最大組態(tài)工作方式下,最大工作模式系統(tǒng)中會出現(xiàn)兩個(gè)以上的微處理器,由總線控制器發(fā)出控制信號。特點(diǎn)方式引腳處理器個(gè)數(shù)總線控制信號的產(chǎn)生最小模式1CPU最大模式接地多個(gè)總線控制器2-8RESET信號來到后,8086/8088的各寄存器內(nèi)容和總線狀態(tài)是怎樣的?結(jié)合操作系統(tǒng)引導(dǎo)過程,思考BIOS執(zhí)行ROM的首地址是多少?答案:復(fù)位后寄存器的狀態(tài)CPU中的部分內(nèi)容標(biāo)志位清除指令指針I(yè)P0000HCSFFFFHDS0000HSS0000HES0000H指令隊(duì)列空8086復(fù)位時(shí)的總線狀態(tài)信號8086復(fù)位時(shí)的總線狀態(tài)信號狀態(tài)AD15~AD0、A19/S6~A16/S3、、、、、、、高阻、三態(tài)ALE、HLDA、、、QS0、QS1無效2-9試說明在圖2.2-2中的8284、74LS245、74LS373的作用;能否不用74LS373?為什么?答案:8284為微機(jī)系統(tǒng)提供時(shí)鐘信號,還有復(fù)位信號RESET和準(zhǔn)備好信號READY。74LS373是8位三態(tài)輸出鎖存器,對其輸入使能端G是鎖存控制信號,連接到CPU的地址鎖存信號ALE上,由ALE信號對其進(jìn)行鎖存控制,當(dāng)ALE信號有效時(shí),表示在地址鎖存時(shí)段,數(shù)據(jù)/地址復(fù)用信號線AD15~AD0用做地址線,地址被鎖存在74LS373的輸出端,該鎖存著的地址就是訪問存儲器單元地址或操作輸入/輸出端口地址。當(dāng)ALE為低時(shí),表示進(jìn)入數(shù)據(jù)交換時(shí)段,數(shù)據(jù)/地址復(fù)用信號線AD15~AD0用做數(shù)據(jù)線??梢?4LS373的作用是對分時(shí)復(fù)用的地址/數(shù)據(jù)線、地址/狀態(tài)線在T1周期送出的地址信息以及進(jìn)行鎖存。74LS245是8位三態(tài)雙向數(shù)據(jù)緩沖器,作用是增加數(shù)據(jù)總線驅(qū)動能。該電路中必須使用鎖存器(74LS373以外的其他鎖存器也可以),因?yàn)榈刂泛蛿?shù)據(jù)總線是分時(shí)復(fù)用的,CPU在T1時(shí)刻輸出地址后,如果不鎖存,則總線在傳輸數(shù)據(jù)時(shí)將會丟失地址信息。2-10答案:時(shí)鐘周期就是系統(tǒng)時(shí)鐘信號CLK的周期,是微機(jī)系統(tǒng)的所有操作的最小基準(zhǔn)。CPU通過總線操作與外界(存儲器和I/O端口)進(jìn)行一次數(shù)據(jù)交換的過程(時(shí)間)稱為總線周期。一條指令經(jīng)取指、譯碼、讀寫操作數(shù)到執(zhí)行完成的過程稱為指令周期。1個(gè)基本總線周期包含4個(gè)時(shí)鐘周期;1個(gè)指令周期包含若干個(gè)總線周期。CPU的主時(shí)鐘頻率為25MHz,一個(gè)時(shí)鐘周期是1/25MHz=1/25μs=40ns;一個(gè)基本總線周期是4/25μs=160ns2-11現(xiàn)有8個(gè)字節(jié)的數(shù)據(jù)為12H、23H、34H、45H、56H、67H、78H、89H,假設(shè)它們在存儲器中的物理地址為34205H~3420CH,若當(dāng)前DS=3402H:(1)試求以上數(shù)據(jù)所在存儲單元的偏移地址,畫出數(shù)據(jù)存放示意圖。(2)若從8086的存儲器中按字的方式讀出這些數(shù)據(jù),需要訪問幾次存儲器?寫出讀出的字?jǐn)?shù)據(jù)。答案:(1)偏移地址
=
物理地址?段地址×16,所以第1個(gè)單元的偏移地址
=34205H?12000H=01E5H,以此類推,各存儲單元的偏移地址依次是01E5~01E5H。
……34205H12HDS:01E5H34206H23HDS:01E6H34207H34HDS:01E7H34208H45HDS:01E8H34209H56HDS:01E9H3420AH67HDS:01EAH3420BH78HDS:01EBH3420CH89HDS:01ECH……(2)若均以字的方式讀出,由于存放的格式為非對準(zhǔn)字,每讀出一個(gè)非對準(zhǔn)字需要訪問存儲器2次,共需8次。讀出的數(shù)據(jù)分別為:3412H,4534H,6756H,8978H第3章習(xí)題答案練習(xí)題13.1-1指出下列指令中源操作數(shù)和目的操作數(shù)的尋址方式。(1)MOVBX,20H (2)MOVAX,[1245H] (3)MOVDX,[SI](4)MOV100[BX],AL (5)MOV[BP][SI],AX (6)MOV[BX+100][SI],AX(7)MOV[1800H],AL (8)MOV[SI],AX答案:目的操作數(shù)源操作數(shù)(1)寄存器尋址立即尋址(2)寄存器尋址直接尋址(3)寄存器尋址寄存器間接尋址(4)寄存器相對尋址寄存器尋址(5)基址加變址尋址寄存器尋址(6)相對基址加變址尋址寄存器尋址(7)直接尋址寄存器尋址(8)寄存器間接尋址寄存器尋址3.1-2(1)[AX] (2)[SI+DI] (3)BP (4)BH(5)DS (6)[BL+44] (7)[BX+BP+32] (8)[DX](9)[CX+90] (10)[BX*4] (11)BX+90H (12)SI[100H]答案:(1)錯(cuò)誤,AX不能用于寄存器間接尋址(2)錯(cuò)誤,兩個(gè)變址寄存器SI和DI不能同時(shí)用于表示內(nèi)存單元的偏移地址(3)正確,寄存器尋址方式(4)正確,寄存器尋址方式(5)正確,寄存器尋址方式(6)錯(cuò)誤,寄存器BL不能用于表示內(nèi)存單元的偏移地址(7)錯(cuò)誤,BX和BP都是基址寄存器,不能同時(shí)用于表示內(nèi)存單元的偏移地址(8)錯(cuò)誤,DX不能用于寄存器間接尋址(9)錯(cuò)誤,CX不能用于表示內(nèi)存單元的偏移地址(10)錯(cuò)誤,16位寄存器不能乘以比例因子(11)錯(cuò)誤,沒有這樣的尋址方式(12)錯(cuò)誤,書寫方式不對,應(yīng)該寫成100H[SI]3.1-3(1)MOVAL,[2500H] (2)MOVAX,[BP] (3)MOVAX,ES:[BP+10] (4)MOVAL,[BX+SI+20]答案:源操作數(shù)屬于直接尋址,物理地址=DS16+2500H=20000H+2500H=22500H;源操作數(shù)屬于寄存器間接尋址,物理地址=SS16+BP=10100H+0200H=10300H源操作數(shù)屬于寄存器相對尋址,物理地址=ES16+BP+10=10000H+0200H+0AH=1020AH源操作數(shù)屬于基址加變址尋址,物理地址=DS16+BX+SI+20=20000H+0500H+1100H+14H=21614H練習(xí)題23.2-1判斷下列指令的對錯(cuò),如果錯(cuò)誤請說明原因。(1)MOVCS,BX (2)MOVCH,SI (3)PUSHAL (4)MOVDX,[BX][BP](5)MOVCH,100H (6)XCHGBX,3 (7)PUSHCS (8)MOVAL,[BX][SI](9)PUSHCL (10)OUT3EBH,AL答案:(1)CS不能賦值 (2)操作數(shù)類型/長度不匹配(3)PUSH指令的操作數(shù)必須是字 (4)尋址方式錯(cuò)誤,BP需要與SS配合使用(5)100H超出了CH表示的范圍 (6)交換指令的操作數(shù)不能是立即數(shù)(7)正確 (8)正確(9)錯(cuò)誤,PUSH指令的操作數(shù)應(yīng)該是字類型的 (10)錯(cuò)誤,端口地址大于0FFH時(shí),應(yīng)用DX間接尋址3.2-2給出MOV指令執(zhí)行后的結(jié)果,設(shè)有關(guān)寄存器及存儲單元內(nèi)容如下:DS
=
2000H,78H,(22104H)
=
9AH,(22105H)
=
BCH,(20100H)
=
1AH,(20101H)
=
2BH,(20103H)
=
3CH,(20104H)
=4DH,(20105H)
=
5EH,(20106H)
=
6FH。(1)MOVAX,ES:[BX][SI] (2)MOVAX,BX (3)MOVAX,[BX](4)MOVAX,[BX+SI] (5)MOVAX,[BX+SI+1]答案:(1)物理地址=2200H16+0100H+0004H=22104H,所以AX=0BC9AH;(2)AX=BX=0100H;(3)物理地址=2000H16+0100H=20100H,所以AX=2B1AH;(4)物理地址=2000H16+0100H+0004H=20104H,所以AX=5E4DH;(5)物理地址=2000H16+0100H+0004H+01=20105H,所以AX=6F5EH;3.2-3假定SS=1000H,SP=0100H,AX=2107H,執(zhí)行指令“PUSHAX”后,存放數(shù)據(jù)07H的存儲單元物理地址是。答案:100FEH執(zhí)行“PUSHAX”指令后SP=00FEH,其中偏移地址為00FFH的單元存放的是21H,偏移地址為00FEH的單元存放的是07H,其物理地址為SP16+00FFH=100FEH。3.2-4已知AX=1020H,DX=3080H,端口地址PORT=41H,設(shè)有關(guān)端口內(nèi)容如下:(40H)=6EH,(41H)=22H,指出下列各條指令執(zhí)行的結(jié)果。(1)INAL,PORT;AL
=
______ (2)INAX,40H;AX
=
______(3)OUTDX,AL;(DX)
=
______ (4)OUTDX,AX;(DX)
=
_______答案:(1)AL=22H; (2)AX=226EH; (3)(DX)=6EH; (4)(DX)=226EH(如果4條指令有先后順序)(1)AL=22H; (2)AX=226EH; (3)(DX)=20H; (4)(DX)=1020H(如果4條指令各自獨(dú)立)3.2-5用一條指令實(shí)現(xiàn)把BX和SI之和傳送給CX。答案:LEACX,[BX+SI]3.2-6試比較下列3組指令的功能(1)LDS SI,[DI] (2)MOVSI,[DI] (3)MOVDS,[DI+2] MOVDS,[DI+2]
MOVSI,[DI]答案:(1)相當(dāng)于MOVSI,[DI]MOVDS,[DI+2](2)與(1)功能相同(3)第一條指令修改了DS的值,因此執(zhí)行第二條指令后結(jié)果可能與(1)(2)不同。3.2-7指令“LDSSI,ES:[1000H]”的功能是()。A.把地址1000H送SIB.把地址為ES:[1000H]的字單元內(nèi)容送SIC.把地址為ES:[1000H]的字單元內(nèi)容送SI,把地址為ES:[1002H]的字單元內(nèi)容送DSD.把地址為ES:[1000H]的字單元內(nèi)容送DS,把地址為ES:[1002H]的字單元內(nèi)容送SI答案:C3.2-8在指令“POP[BX]”中,目的操作數(shù)的段地址和偏移地址分別在()。A.沒有段地址和偏移地址 B.DS和BX中 C.ES和BX中 D.SS和BP中答案:B練習(xí)題33.3-1判斷下列指令的對錯(cuò),如果錯(cuò)誤請說明原因。(1)ADCAX,0ABH (2)MULAL,CL (3)MULAX,25(4)INC[SI] (5)ADD[BX],456H (6)DIVAX,BX(7)DEC
[BP] (8)ADDCX+1 (9)DAACX答案:(1)正確(2)錯(cuò)誤,MUL指令后面應(yīng)該只有1個(gè)操作數(shù)(3)MUL指令后面應(yīng)該只有1個(gè)操作數(shù),且不能是立即數(shù)(4)錯(cuò)誤,操作數(shù)[SI]的類型不明確,匯編程序不能確定其是8位還是16位的??梢愿臑椋篒NCBYTEPTR[SI](5)錯(cuò)誤,操作數(shù)[BX]的類型不明確,匯編程序不能確定其是8位還是16位的??梢愿臑椋篈DD WORDPTR[BX],456H(6)錯(cuò)誤,除法指令和乘法指令類似,AX或DX,AX作為被除數(shù)是隱含的,指令中出現(xiàn)。改為DIVBX(7)錯(cuò)誤,與第4題錯(cuò)誤原因類似,還要注意BP寄存器間接尋址形成物理地址時(shí),段寄存器是SS而不是DS,修改為:DECWORDPTR[BP]或者DECWORDPTRDS:[BP](8)錯(cuò)誤,CX+1是完全錯(cuò)誤的,因?yàn)椋篒NCCX或ADDCX,1(9)錯(cuò)誤,DAA指令的操作數(shù)是隱含的,不需要寫出。3.3-2求出以下各十六進(jìn)制數(shù)與62A0H之和,并根據(jù)結(jié)果判斷標(biāo)志SF,ZF和OF的值。(1)1234H (2)4321 H (3)CFA0H (4)9D60H答案:(1)0110001010100000B(62A0H)+0001001000110100B(1234H)0111010011010100B(74D4H)SF=0,ZF=0,OF=00=0(2)0110001010100000B(62A0H)+0100001100100001B(4321H)1010010111000001B(A5C1H)SF=1,ZF=0,OF=01=1(3)0110001010100000B(62A0H)+1100111110100000B(CFA0H)10011001001000000B(3240H)SF=0,ZF=0,OF=11=0(4)0110001010100000B(62A0H)+1001110101100000B(9D60H)10000000000000000B(0000H)SF=0,ZF=1,OF=11=03.3-3無符號數(shù)擴(kuò)展是否可以使用如下指令?為什么?(1)CBW指令 (2)CWD指令答案:不可以,因?yàn)檫@兩條指令都是針對帶符號數(shù)的。CBW把AL的符號擴(kuò)展到AH,CWD把AX的符號擴(kuò)展到DX。如果AL=80H,執(zhí)行CBW后,AX=0FF80H,顯然不對。3.3-4若AL、BL中是壓縮BCD碼,且在執(zhí)行“ADDAL,BL”之后,AL=0CH,CF=1,AF=0。再執(zhí)行DAA后,AL的值為多少?答案:AL=72H。執(zhí)行“ADDAL,BL”之后,AL=0CH,CF=1,因此執(zhí)行DAA應(yīng)該加上66H進(jìn)行調(diào)整,AL為72H,實(shí)際的BCD碼相加結(jié)果是172(百位的1來自于CF中的進(jìn)位)。3.3-5判斷題(1)INC和DEC指令不影響狀態(tài)標(biāo)志。()(2)壓縮BCD碼和非壓縮BCD碼均有加法和減法調(diào)整指令。()(3)壓縮BCD碼和非壓縮BCD碼均有乘法和除法調(diào)整指令。()(4)DIV指令在執(zhí)行8位除法時(shí),運(yùn)算后的商存放在AH中,余數(shù)存放在AL中。()答案:(1)(錯(cuò));(2)(對);(3)(錯(cuò));(4)(錯(cuò))。練習(xí)題43.4-1AND、OR、XOR、NOT為邏輯運(yùn)算指令,下面解釋有誤的是()A.它們都是按位操作的B.“XORAX,AX”執(zhí)行后,結(jié)果不變,但是影響狀態(tài)標(biāo)志C.“ANDAL,0FH”執(zhí)行后,使AL的高4位清零,低4位不變D.若DL=09H,CH=30H,執(zhí)行“ORDL,CL”后,結(jié)果為DL=39H答案:B3.4-2將寄存器BX的內(nèi)容求反,不正確的操作是()A.NOTBX B.XORBX,0FFFFH C.ANDBX,0FFFFH答案:C3.4-3邏輯運(yùn)算指令A(yù)ND、OR、XOR、NOT中,指令對狀態(tài)標(biāo)志均沒有影響,而其他3條指令除對標(biāo)志SF、ZF、PF有影響外,還使和總是清零,AF不確定。答案:NOT,CF,OF3.4-4如果要對一個(gè)字節(jié)或一個(gè)字?jǐn)?shù)據(jù)求反,可以用指令,要對寄存器或存儲單元內(nèi)容中指定位求反則可以用指令。答案:NOT,XOR3.4-5按要求編寫下列指令序列(設(shè)最低位為第0位)。(1)把DL中的最低2位清零而不改變其他位;(2)把SI的最高3位置1而不改變其他位;(3)把AX中的第0~3位清零,第7~9位置1,第13~15位取反;(4)檢查CX中的第1、3和5位中是否有一位為1;(5)檢查BX中的第2、6和10位是否同時(shí)為1;(6)檢查CX中的第1、3、5和7位中是否有一位為0;(7)檢查BX中的第2、6、10和12位是否同時(shí)為0。答案:(1)AND DL,0FCH ;11111100B(2)OR SI,0E000H ;1110000000000000B(3)AND AX,0FFF0H ;1111111111110000BOR AX,0380H ;0000001110000000BXOR AX,0E000H ;1110000000000000B(4)MOV AX,CXAND AX,002AH ;0000000000101010B如果運(yùn)算結(jié)果不為0,表示第1、3、5位至少有一位為1(5)MOV AX,BXAND AX,0444H ;0000010001000100BXOR AX,0444H如果運(yùn)算結(jié)果為0,表示第2、6、10位均為1或者ORAX,1111101110111011B如果運(yùn)算結(jié)果為FFFFH,則表示第2、6、10位均為1(6)MOV AX,CXOR AX,0FF55H;1111111101010101B如果運(yùn)算結(jié)果不為0FFFFH,表示第1、3、5、7中至少有一位為0(7)MOV AX,BXAND AX,1444H;0001010001000100B;如果運(yùn)算結(jié)果為0,表示第2、6、10、12位均為0練習(xí)題53.5-18086的移位指令若需移位多位時(shí),應(yīng)該先將移位位數(shù)置于()中。A.AL B.AH C.CL D.CH答案:C3.5-2對于算術(shù)左移指令“SALAL,1”,若AL中的有符號數(shù)在執(zhí)行指令后符號有變化,可以通過()來確認(rèn)。A.OF=1 B.OF=0 C.CF=1 D.CF=0答案:A3.5-3AL的內(nèi)容實(shí)現(xiàn)算術(shù)右移4位的正確指令是()。A.SHRAL,4 B.MOVCL,4 C.SARAL,4 D.MOVCL,4 SHRAL,CL SARAL,CL答案:D3.5-4將BUF字節(jié)單元內(nèi)容算術(shù)左移1位,以下指令不正確的是()。A.MOVBX,OFFSETBUF B.MOVBL,BUF
SAL
BX,1 SAL
BL,1C.SALBUF,1 D.LEABX,BUF SALBYTEPTR[BX],1答案:A3.5-5選擇適合的移位指令把十進(jìn)制數(shù)+35和?41分別乘以2和除以2,結(jié)果分別是多少?答案:;乘以2MOV AL,35 ;AL=00100011B/23HSHL AL,1 ;AL=46HMOV AL,-41 ;AL=0D7HSHL AL,1 ;AL=0AEH;除以2MOV AL,35SAR AL,1 ;AL=11HMOV AL,-41SAR AL,1 ;AL=0EBH本章習(xí)題3-1出以下指令序列中每條指令的執(zhí)行結(jié)果,在DEBUG環(huán)境下進(jìn)行驗(yàn)證,并注意各狀態(tài)標(biāo)志的變化情況。MOVBX,23ABHADDBL,0ACHMOVAX,23F5HADDBH,ALSUBBX,AXADCAX,12HSUBBH,?9答案:3-2編寫計(jì)算多項(xiàng)式4A2
?
B
+
10值的程序段。說明:多項(xiàng)式值存于AX中,A、B是無符號字節(jié)數(shù)。數(shù)據(jù)說明:ADB0AHBDB10H答案:MOVAL,AMULAMOVBL,4MULBLSUBAL,BSBBAH,0ADDAL,10ADCAH,03-3編寫計(jì)算CL的3次方的指令序列,假設(shè)冪不超過16位二進(jìn)制數(shù)答案:有符號數(shù):MOVAL,CL IMULCL MOVCX,AX MOVAL,CL CBW IMULCX無符號數(shù):MOVAL,CL MULCL MOVCX,AX MOVAL,CL MOVAH,0 MULCX3-4假設(shè)DX、AX中存放一個(gè)雙字:NEGDXNEGAXSBBDX,0請問:設(shè)執(zhí)行前,DX
=
0001H,AX
=
FFFFH,上述程序段執(zhí)行后,DX、AX的值是什么?上述程序段完成什么功能?答案:功能是求DX,AX存放的雙字的相反數(shù)。執(zhí)行前兩條語句后DX=0FFFFH,AX=0001H,CF=1;執(zhí)行第三條語句后,DX=0FFFEH,DX:AX=0FFFE0001H。3-5列出2種以上實(shí)現(xiàn)下列要求的指令或指令序列。(1)把累加器AX清零 (2)把進(jìn)位標(biāo)志CF清零(3)將累加器AX的內(nèi)容乘以2(不考慮溢出) (4)將累加器AX的內(nèi)容除以2(不考慮余數(shù))答案:(1)a.XOR AX,AXb. SUB AX,AXc. AND AX,0d. MOV AX,0(2)a.SUB AX,AXb. AND AX,AXc. OR AX,AXd. XOR AX,AXe. TEST AX,AXf. CLC(3)a. MOV CX,2 MUL CXb. ADD AX,AXc. SHL AX,1d. SAL AX,1e. CLCRCL AX,1(4)a. MOV CX,2;無符號數(shù) DIV CX MOV CX,2;帶符號數(shù) IDIV CXb. SHR AX,1;無符號數(shù) SAR AX,1;帶符號數(shù)c. CLCRCR AX,13-6寫出下列程序段執(zhí)行后AX的值為多少?MOVAX,1234HMOVCL,4ANDAL,0FHADDAL,30HSHLAH,CLANDAH,0F3H答案:MOVAX,1234H ;AX=1234HMOVCL,4ANDAL,0FH ;AX=1204HADDAL,30H ;AX=1234HSHLAH,CL ;AX=2034HANDAH,0F3H ;AX=2034H3-7分析下列程序段,執(zhí)行之后AX和CF的值為多少?MOVAX,0099HMOVBL,88HADDAL,BLDAAADCAH,0答案:AX=0187H,CF=03-8試完成下面程序段,將存儲單元DA1中的壓縮BCD碼,拆成兩個(gè)非壓縮BCD碼,低位放入DA2單元,高位放入DA3單元,并分別轉(zhuǎn)換為ASCII碼。START: MOVAL,DA1 MOVCL,4 (1) ORAL,30H MOVDA3,AL MOVAL,DA1 (2) ORAL,30H MOVDA2,AL答案:(1)SHRAL,CL(2)ANDAL,0FH第4章習(xí)題答案練習(xí)題14.1-1設(shè)A=10,B=20,Q=30,D=2,執(zhí)行下列指令后,AL的值為多少?(1)MOVAL,A5-B+D (2)MOVAL,QMOD(A?D)(3)MOVAL,AAND7 (4)MOVAL,QLEB(5) (6)M答案:(1)32(2)6(3)1010AND0111=0010B,2(4)0(5)0(6)1604.1-2有如下數(shù)據(jù)定義:DA1DB4DUP(5),2COUNTEQU10DA2 DDCOUNTDUP(?)問:(1)上述數(shù)據(jù)定義為變量DA1分配多少字節(jié)存儲空間?(2)為變量DA2分配多少字節(jié)存儲空間?答案:(1)為DA1分配5字節(jié);(2)為DA1分配40字節(jié)4.1-3畫出以下偽指令所定義的數(shù)據(jù)在存儲器中的存放示意圖。DATA1DB66H,33HDATA2DW12ABH,99H,?DATA3DB05H,3DUP(1,2)答案:66HDATA133HABHDATA212H99H00H??55HDATA31212124.1-4有如下數(shù)據(jù)定義:D1 DB 20 DUP(?)D2 DW 01H請寫出用一條指令實(shí)現(xiàn)取D1的偏移地址到SI的2種方法答案:LEA SI,D1或者M(jìn)OVSI,OFFSETD14.1-5寫出具有下列功能的偽指令語句:(1)在DATA為首地址的存儲單元中連續(xù)存放字節(jié)數(shù)據(jù):4個(gè)18,5個(gè)‘B’,10個(gè)(2,4,6);(2)答案:(1)DATADBDUP4(18),5DUP(‘B’),10DUP(2,4,6)(2)VAR DB34H,12H,0BCH,0AH4.1-6假設(shè)程序中的數(shù)據(jù)定義如下:LNAME DB 30DUP(?)ADDRESS DB 30DUP(?)CODE_LIST DB 1,7,8,3,2CITY DB 15DUP(?)(1)用一條MOV指令將LNAME的偏移地址存入AX。(2)用一條指令將CODE_LIST的頭兩個(gè)字節(jié)存入SI。(3)寫一條偽指令使CODE_LENGTH的值等于CODE_LIST的實(shí)際長度。答案:(1)MOVAX,OFFSETLNAME(2)MOV SI,WORDPTRCODE_LIST(3)CODE_LENGTH=CITYCODE_LIST練習(xí)題24.2-1判斷:匯編語言程序通常由幾個(gè)段組成,可以沒有數(shù)據(jù)段,沒有堆棧段,但不能沒有代碼段。()答案:(對)4.2-2完整的段定義是由偽指令SEGMENT定義段的開始,用偽指令ENDS作為段的結(jié)束。而段的性質(zhì)可以由段的名字來決定嗎?答案::在完整段定義結(jié)構(gòu)中,段的性質(zhì)(也就是說改段是代碼段、還是數(shù)據(jù)段、堆棧段)不能由段的名字決定,必須由偽指令A(yù)SSUME指明。4.2-3閱讀下列程序,找出其中不符合匯編語言規(guī)范之處,并修改。DATA SEGMENTA: DB 35,01000111B,24H,‘XYZ’B: DB N DUP(0)N: EQU $-A ENDSCODE SEGMENTSTART: MOVAX,DATA MOVDS,AX LEA SI,A LEA DI,B MOVCX,NLOP MOVAL,[SI] MOV[DI],AL INC SI INC DI LOOPLOP ;跳轉(zhuǎn)到標(biāo)號LOP處構(gòu)成循環(huán)結(jié)構(gòu) MOVAH,4CH INT 21H ENDS END START答案:存在以下錯(cuò)誤:=1\*GB3①變量定義時(shí)變量名后不要加“:”=2\*GB3②DATA段定義結(jié)束時(shí)ENDS前少了段名DATA=3\*GB3③少了ASSUME語句=4\*GB3④標(biāo)號LOP后少了“:”修改如下DATA SEGMENTA DB 35,01000111B,24H,‘XYZ’N EQU $-AB DB N DUP(0) ENDSCODE ENDSCODE SEGMENT ASSUMECS:CODE,DS:DATASTART: MOVAX,DATA MOVDS,AX LEA SI,A LEA DI,B MOVCX,NLOP: MOVAL,[SI] MOV[DI],AL INC SI INC DI LOOPLOP ;跳轉(zhuǎn)到標(biāo)號LOP處構(gòu)成循環(huán)結(jié)構(gòu) MOVAH,4CH INT 21HCODE ENDS END START4.2-4答案:DATA SEGMENT BCD DB18H ;待轉(zhuǎn)換的壓縮BCD碼 RESULT DB2DUP(?) ;存放轉(zhuǎn)換得到的2個(gè)字節(jié)的ASCII碼 ASCTAB DB'0123456789' ;ASCII碼表DATA ENDSCODE SEGMENT ASSUMECS:CODE,DS:DATASTART: MOVAX,DATA MOVDS,AX MOVAL,BCD LEABX,ASCTAB MOVCL,4 SHRAL,CL ;取出壓縮BCD碼的高位 XLAT ;轉(zhuǎn)換成ASCII碼 MOVRESULT,AL ;存入RESULT MOVAL,BCD ANDAL,0FH ;取出壓縮BCD碼的低位 XLAT ;轉(zhuǎn)換成ASCII碼 MOVRESULT+1,AL ;存入RESULT+1 MOVAH,4CH INT21HCODE ENDS ENDSTART4.2-5編寫程序,求出Z=[(X+Y)8X]2中的Z值,結(jié)果存放在RESULT單元中(設(shè)X、Y和Z均為16位)。答案:假設(shè)X、Y、Z都是有符號數(shù),不考慮計(jì)算溢出的情況DATA SEGMENT VARX DW6 ;變量X VARY DW7 ;變量Y RESULT DW? ;結(jié)果ZDATA ENDSCODE SEGMENT ASSUMECS:CODE,DS:DATASTART: MOVAX,DATA MOVDS,AX MOVAX,VARX ADDAX,VARY ;X+Y ADCDX,0 SALAX,1 ;(X+Y)2 RCL DX,1 SALAX,1 ;(X+Y)4 RCL DX,1 SALAX,1 ;(X+Y)8 RCL DX,1 SUBAX,VARX ;X SBB DX,0 SAR DX,1 ;/2 RCRAX,1 MOVRESULT,AX ;因?yàn)閆不超過16位MOVAH,4CH INT21HCODE ENDS ENDSTART4.2-6編寫程序,將內(nèi)存中4位壓縮BCD碼數(shù)據(jù)DATA1和DATA2相加,結(jié)果仍然為BCD碼并保存在SUM中答案:DATA SEGMENT DATA1 DB 34H,67H ;低位在前高位在后 DATA2 DB 78H,12H SUM DB3DUP(?)DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOVAX,DATA MOVDS,AX CLC MOVAX,0 MOVAL,DATA1 ADDAL,DATA2 DAA MOVSUM,AL MOVAL,DATA1+1 ADCAL,DATA2+1 DAA MOVSUM+1,AL ADCAH,0 MOVSUM+2,AH MOVAH,4CH INT21HCODE ENDS END START練習(xí)題34.3-1判斷:段內(nèi)轉(zhuǎn)移要改變IP、CS的值。()4.3-2判斷:條件轉(zhuǎn)移指令只能進(jìn)行段內(nèi)短轉(zhuǎn)移。()4.3-3條件轉(zhuǎn)移指令的目的地址應(yīng)該在本條件轉(zhuǎn)移指令的下一條指令地址的字節(jié)范圍內(nèi)。4.3-4段內(nèi)和段間的轉(zhuǎn)移指令的尋址方式有和兩種。4.3-5計(jì)算以下指令中轉(zhuǎn)移目的地址中的偏移地址。設(shè)DS
=
1200H,AX
=
200H,BX
=
0080H,SI
=
0002H,位移量DISP
=
0600H,(12680H)
=
18H,(12681H)
=
98H,(12082H)
=
9AH,(12083H)
=
22H,(12600H)
=
10H,(12601H)=
20H。(1)JMPBX (2)JMPWORDPTRDISP[BX](3)JMPWORDPTR[BX][SI] (4)JMPWORDPTR[DISP]答案:(1)IP=BX=0080H(2)IP=(DS16+BX+DISP)=(12000H+0080H+0600H)=(12680H)=9818H(3)IP=(DS16+BX+SI)=(12000H+0080H+0002H)=(12082H)=229AH(4)IP=(DS16+DISP)=(12000H+0600H)=(12600H)=2010H4.3-6閱讀下面的程序段,分析AL滿足什么條件時(shí),程序轉(zhuǎn)移到標(biāo)號LOP處執(zhí)行。 CMP AL,0FFH JNL LOP LOP:答案:4.3-7根據(jù)下列要求,寫出程序段。(1)判斷AL為負(fù),則跳轉(zhuǎn)至NEXT。(2)判斷字節(jié)變量DA為0,則跳轉(zhuǎn)至NEXT。(3)判斷AL的D0位為1,則跳轉(zhuǎn)至NEXT。(4)判斷字變量DA的D7位為0,則跳轉(zhuǎn)至NEXT。(5)比較AH與字節(jié)變量DA的值,若不相等,則跳轉(zhuǎn)至NEXT。(6)比較字節(jié)變量DA與字符‘A’,若DA≥‘A’,則跳轉(zhuǎn)至NEXT。4.3-8閱讀程序段,說明程序執(zhí)行后轉(zhuǎn)移到哪里? MOVAX,8756H MOVBX,1234H SUB AX,BX JNO L1 JNCL2 JMP L3答案:本題意為AXBX無溢出則程序轉(zhuǎn)移到L1,有溢出但沒有進(jìn)位程序?qū)⑥D(zhuǎn)移到L2,否則程序轉(zhuǎn)移到L3.由于AXBX=8756H1234H=7522H,OF=1,CF=0,則轉(zhuǎn)L2.4.3-9假設(shè)內(nèi)存單元中存儲了3個(gè)字節(jié)變量A、B和C,編寫程序判斷它們能否構(gòu)成三角形。如果可以,將CF設(shè)為1,否則將CF設(shè)為0。練習(xí)題4--閱讀下面的程序段,分析其功能 START: LEA BX,CHAR ;CHAR是已定義的變量 MOVAL,‘A’ MOVCX,26 LOP1: MOV[BX],AL INC AL INCBX LOOPLOP1 HLT‘A’~‘Z’--編寫程序段,將從地址2B000H開始的256個(gè)存儲單元中的內(nèi)容均減去1,如果發(fā)現(xiàn)某個(gè)存儲單元的內(nèi)容減為0,則立即退出循環(huán),其后的存儲單元不再減1。2B000H是一個(gè)物理地址,可以設(shè)置DS=2B00H,偏移地址則為0。程序如下: MOV AX,2B00H MOV DS,AX ;給DS賦初值 MOV DI,0 ;DI指向內(nèi)存數(shù)據(jù)區(qū) MOV CX,256 ;設(shè)置循環(huán)次數(shù)AGN: DEC BYTEPTR[DI] ;由DI指向的內(nèi)存單元內(nèi)容減1 MOV AL,BYTEPTR[DI] ;減1后的值保存與AL INC DI ;DI加1指向下一個(gè)單元 CMP AL,0 ;減1后的值與0比較 LOOPNZAGN ;不為0,則跳轉(zhuǎn)至AGN繼續(xù)處理下一個(gè)數(shù)據(jù) HLT ;為0,則退出循環(huán)練習(xí)題54.5-1閱讀程序并完成填空,從BUFFER單元開始放置一個(gè)數(shù)據(jù)塊,其中BUFFER單元存放的是預(yù)計(jì)的數(shù)據(jù)塊長度20H,BUFFER+1單元存放的是實(shí)際從鍵盤輸入的字符串的長度,從BUFFER+2單元開始存放的是從鍵盤上接收的字符,請將這些從鍵盤上接收的字符再在屏幕上顯示出來。MOVDX,OFFSETBUFFERMOV AH,(1)INT 21H ;讀入字符串LEA DX,(2)MOV BX,DXMOV AL,(3) ;讀入字符串的字符個(gè)數(shù)MOV AH,0ADD BX,AXMOV AL,(4) MOV [BX+1],ALMOV AH,(5) INC DX ;確定顯示字符串的首地址INT 21HMOV AH,(6) INT 21H答案:(1)0AH;(2)BUFFER+1;(3)[BX];(4)‘$’;(5)9;(6)4CH4.5-2閱讀下列程序段,說明程序段的功能。AGAIN: MOVAH,01H INT 21H CMP AL,41H JB AGAIN CMP AL,5AH JA AGAIN MOVDL,AL ADDDL,20H MOVAH,02H INT21H答案:因?yàn)椤瓵’的ASCII碼是41H,‘Z’的ASCII碼是5AH,對應(yīng)大小寫字母的ASCII碼相差20H,所以本程序段的功能是:從鍵盤上輸入一個(gè)字符,如果是大寫的26個(gè)英文字母,就將其轉(zhuǎn)換成對應(yīng)的小寫字母顯示在屏幕上,否則重新輸入,直到輸入一個(gè)大寫的英文字母為止。練習(xí)題64.6-1子程序設(shè)計(jì)中,常用的參數(shù)傳遞方式有、和。答案:寄存器傳遞參數(shù)、內(nèi)存單元傳遞參數(shù)、堆棧傳遞參數(shù)4.6-2在如下子程序中,已知AL的值為0~F中的一位十六進(jìn)制數(shù),問:HEAC PROCFAR CMPAL,10 JC KK ADDAL,7KK: ADDAL,30H MOVDL,AL MOVAH,2 INT 21H RETFHEAC ENDP(1)如果調(diào)用子程序時(shí)AL=2,子程序執(zhí)行后,DL=?(2)如果調(diào)用子程序時(shí)AL=0AH,子程序執(zhí)行后,DL=?(3)該子程序完成什么功能?答案:(1)DL=32H;(2)DL=41H;(3)將十六進(jìn)制數(shù)轉(zhuǎn)換成對應(yīng)的ASCII碼,并輸出顯示。如果是0~9的數(shù)字,則求ASCII碼時(shí)在數(shù)值的基礎(chǔ)上加上30H即可,如果是A~F則相應(yīng)的加上37H。4.6-3假設(shè)程序段執(zhí)行前DS=3000H、SS=2000H、SP=3000H、AX=4567H、BX=1234H、CX=6789H,完成下列填空。ANDBX,00FFHCALLMYSUBNOP ;SP=___________ ;AX=___________;BX=___________ HLTMYSUB PROC PUSH AX PUSH BX PUSH CX SUB AX,BX ;SP=___________ POP CX POP AX POP BX ;SP=___________ RETMYSUB ENDP答案:SP=3000HAX=0034HBX=4567H SP=2FF8H SP=2FFEH練習(xí)題74.7-1字符串操作指令的兩個(gè)隱含指針寄存器是和。答案:SI、DI4.7-2有如下程序段:DATA SEGMENT ORG 20H BUF DB‘ABCDEFGH’ FLAGDB?DATA ENDS LEA DI,BUF MOVAL,‘E’ CLD MOVCX,8 REPNZSCANS JZ OK MOVFLAG,-1 JMP DONEOK: DEC DI MOVFLAG,1DONE: 問:上述程序段執(zhí)行后,DI和FLAG的值是多少?答案:上述程序的作用是在BUF為首地址的字符串中查找給定字符’E’。能夠找到’E’,DI的值是’E’的偏移地址,即24H,F(xiàn)LAG的值為1時(shí)表示找到了給定字符,如果為-1則表示沒有找到給定字符,這里找到了,所以FLAG的值是1。4.7-3下列程序?qū)崿F(xiàn)把含有20個(gè)字符‘A’的字符串從源緩沖區(qū)傳送到目的緩沖區(qū)的功能,試在程序中的空白處填上適當(dāng)?shù)闹噶?每空只填一條指令)。DATA SEGMENT SOURCE_STRINGDB20DUP(‘A’)DATA ENDSEXTRA SEGMENT DEST_STRINGDB 20DUP(?)EXTRA ENDSCODE SEGMENT ASSUMECS:CODE,DS:DATA,ES:EXTRASTART: MOVAX,DATA MOV
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 代理合同范例6
- 公司經(jīng)理崗位合同范例
- 保產(chǎn)合同范例
- 肺癌護(hù)理觀察要點(diǎn)
- 眼科術(shù)后疼痛護(hù)理
- 倉庫員工雇傭合同范例
- 腎惡性腫瘤病人的護(hù)理查房
- 2025年甲方爸爸面試試題及答案
- 口腔醫(yī)學(xué)專業(yè)畢業(yè)論文
- 如何看待年輕人回鄉(xiāng)創(chuàng)業(yè)
- 上海浦東新區(qū)2024-2025高三上學(xué)期期末教學(xué)質(zhì)量檢測(一模)物理試卷(解析版)
- 2023年中小學(xué)心理健康教育課程標(biāo)準(zhǔn)
- 2025河南中煙工業(yè)限責(zé)任公司一線崗位招聘128人易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 2025年中國中壓變頻器行業(yè)深度調(diào)研與投資戰(zhàn)略規(guī)劃分析報(bào)告
- 2025年上半年遼寧省盤錦市大洼區(qū)招聘招商人員30人易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 2025年度旅游車租賃及景區(qū)門票代理服務(wù)協(xié)議
- 2024年湖南高速鐵路職業(yè)技術(shù)學(xué)院高職單招數(shù)學(xué)歷年參考題庫含答案解析
- 人教版音樂教材培訓(xùn)
- 2025安徽合肥市軌道交通集團(tuán)限公司社會招聘50人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 《淺談李賀詩歌中的色彩藝術(shù)》3700字(論文)
- 銀行卡借給別人的授權(quán)委托書
評論
0/150
提交評論