微機原理1-4章習題答案_第1頁
微機原理1-4章習題答案_第2頁
微機原理1-4章習題答案_第3頁
微機原理1-4章習題答案_第4頁
微機原理1-4章習題答案_第5頁
已閱讀5頁,還剩14頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第1-4章

習題解答1.6將下列十進制數轉換成二進制數。256D=100000000B 237.135D=11101101.0010001B12.58D=1100.100101B 0.374D=0.0101B1.8填空:

10101.001B=(21.125)D=(25.1)Q=(15.2)H2DE.6H=(1011011110.011)B=(1336.3)Q=(734.375)D1.7寫出下列二進制數對應的十進制數、八進制數、十六進制數。1101110B=110D=156Q=6EH111011000B=472D=730Q=1D8H1101111.1001B=111.5625D=157.44Q=6F.9H1.9試寫出下列用補碼表示的二進制數的真值。00111010→00111010→+58

10000000→-12810000101→11111011→-12311111110→10000010→-201111110→01111110→+1261.10已知X=35,Y=-89,試用補碼運算法則,求出:X+Y=?

[X]補=00100011[Y]原=11011001[Y]補=10100111[X+Y]補=[X]補+[Y]補=00100011+10100111=11001010X+Y=10110110B=-541.11已知[X]補=10011011,[X+Y]補=10111001,試求: ①[X-Y]補=? (有溢出,結果出錯。) 因為[X+Y]補=[X]補+[Y]補=10111001

所以[Y]補=[X+Y]補-[X]補=00011110

[-Y]補=11100010

[X-Y]補=[X]補+[-Y]補=10011011+11100010=01111101(有溢出,結果出錯。) ②X、Y的真值各為多少? [X]原=11100101,X的真值為-101;[Y]原=00011110,Y的真值為303.5已知某個系統的ROM容量為6K字節,首地址為2800H,求其最后一個單元的地址。最后一個單元的地址=2800H+17FFH=3FFFH3.6采用Intel2114(1K×4位)RAM芯片,組成64K×8位的存儲器,需要多少片2114?需要128塊。擴展時需要的芯片數量可以這樣計算:要構成一個容量為M×N位的存儲器,若使用p×k位的芯片(p<M,k<N),則構成這個存儲器需要(M/p)×(N/k)個這樣的存儲器芯片3.7某RAM芯片的存儲容量為4096×8位,則該芯片的引腳中有幾條數據線和幾條地址線?已知某RAM芯片引腳中有8條數據線,12條地址線,那么該芯片的存儲容量是多少?該芯片的外部引腳應有8條數據線,12條地址線。RAM芯片引腳中有8條數據線,12條地址線,那么該芯片的存儲容量是4K×8位。3.8在8086存儲器系統的最高地址區組成32KB的ROM,要求采用2764芯片(8K×8的EPROM),以及利用74LS138譯碼器進行全譯碼,請畫出這些芯片與系統總線連接的示意圖。74LS138G1G2AG2B&OA19A18A17A16A15A14A13ABCA12~A0Y4Y5Y6Y7OM/IO其余線條參照P63頁圖3.1574LS138G1G2AG2B&OA19A18A17A0A16A15A14ABCA13~A1Y4Y5Y6Y7M/IO其余線條參照P64頁圖3.164.1試出指令MOVBX,3040H和MOVBX,[3040H]有什么不同?1、尋址方式不同:立即數尋址和直接尋址。2、運行結果不同:MOVBX,3040H ;BX=3040HMOVBX,[3040H] ;將DS段3040H和3041H的內容送BX4.2指出下列指令是否有錯,并說明理由。(1)MOV[DI],[SI] ;錯,內存單元之間不能直接進行數據傳送(2)MOVCS,AX ;錯,CS不能做目的操作數(3)MOV1200,AX ;錯,立即數不能做目的操作數(4)MOVDS,CS ;錯,段寄存器之間不能互相傳送(5)POPCS ;錯,CS不能做目的操作數(6)MOVCL,AX ;錯,源、目的操作數長度不一致(7)MOV[5000H],[1000H];錯,內存單元之間不能直接進行數據傳送4.3在8086中,堆棧操作是字操作還是字節操作?已知SS=1050H,SP=0006H,AX=1234H,若對AX執行壓棧操作(即執行PUSHAX);試問AX的內容存放在何處?4.4假如要從200中減去AL中的內容,用SUB200,AL對嗎?如果不對,應采用什么方法?堆棧操作是字操作。入棧時“先減后壓”(SP先減2,再壓入操作數),執行壓棧操作后AL的內容存放在10504H,AH的內容存放在10505H。不對,立即數不能作為目的操作數。先把立即數傳送到一個存儲器或寄存器當中。 例如:MOVBL,200 SUBBL,AL 或:NEGAL ADDAL,2004.5編程求AX累加器和BX寄存器中兩個無符號數之差的絕對值,結果放內存(2800H)單元中。方法一:CMPAX,BXJAPT1XCHGAX,BXPT1:SUBAX,BXMOV[2800H],AXHLT方法二:SUBAX,BXJNCOKNEGAXOK:MOV[2800H],AXHLT方法三:CMPAX,BXJBPT1SUBAX,BXMOV[2800H],AX

HLTPT1:SUBBX,AXMOV[2800H],BX方法一:MOV DI, 2000HLEA SI, [3000H]MOV AX, [DI]MOV DX, [DI+2]ADD AX, [SI]ADC DX, [SI+2]MOV [DI],AXMOV [DI+2],DX方法二:

MOVBX,3000HMOVDI,2000HMOVAX,[BX]MOVDX,[BX+2]

ADD[DI],AXADC[DI+2],DX方法三:MOVAX,[3000H]MOVDX,[3002H]ADD[2000H],AXADC[2002H],DX4.6若有兩個4字節的無符號數相加,這兩個數分別存放在2000H和3000H開始的存儲單元,將所求的和存放在2000H開始的內存單元中,試編制程序。4.7用兩種方法寫出從88H端口讀入信息的指令,再用兩種方法寫出從44H端口輸出數據56H的指令。4.19指出以下四條指令的作用(HEX為數據段的一個變量名)⑴MOVBX,HEX ;將變量HEX的內容傳送到BX寄存器⑵LEABX,HEX ;取變量HEX的偏移地址送BX⑶MOVBX,OFFSEGHEX;BX指向變量HEX的偏移地址⑷MOVBX,SEGHEX ;將變量HEX所在段的段地址傳送到BX方法一:INAL,88H方法二:MOVDX,0088H INAX,DX方法一:MOVAL,56HOUT44H,AL方法二:MOVAL,56H MOVDX,0044H OUTDX,AL4.20下面是變量定義偽指令DATASEGMENTBUFDW3DUP(5,2DUP(8))CEDDB‘Welcometoyou’,ODH,OAH,‘$’ADDRDWBUFCOUNTEQU$-CEDDATAENDS問:⑴按內存單元存放的先后次序,按字節寫出數據段中的數據。

⑵說明對BUF,CED,ADDR等變量施行TYPE,LENGTHSIZE運算符后,其結果分別為多少?

⑶COUNT的值為多少?

⑴按內存單元存放的先后次序,按字節寫出數據段中的數據。05H,00H,08H,00H,08H,00H,05H,00H,08H,00H,08H,00H,05H,00H,08H,00H,08H,00H,57H,65H,6CH,63H,6FH,6DH,65H,20H,74H,6FH,20H,79H,6FH,75H,0DH,0AH,24H,00H,00H⑵說明對BUF,CED,ADDR等變量施行TYPE,LENGTHSIZE運算符后,其結果分別為多少?TYPEBUF=2 LENGTHBUF=3 SIZEBUF=6TYPECED=1 LENGTHCED=1 SIZECED=1TYPEADDR=2 LENGTHADDR=1 SIZEADDR=2⑶COUNT的值為多少?194.22編寫一個將16位二進制數轉換成BCD碼數的程序。DATA SEGMENT BIN DB 5C0EH;待轉換數為23567 ADEC DB 5DUP(?) TAB DW 10000,1000,100,10,1DATA ENDSCODE SEGMENT ASSUME CS:CODE, DS:DATA,BXEDC PROC FARSTART: MOV AX, DATA MOV DS, AX LEA SI, TAB LEA DI, ADEC MOV AX, BIN分析:1個16位二進制數的范圍是0000H-FFFFH(即0-65535),題目的要求就是要分離出這個數的萬位、千位、百位、十位、個位。既可以用除法,也可以用減法來實現。LOP0: XOR CL, CL MOV BX, [SI]LOP1: SUB AX, BX JB NEXT INC CL JMP LOP1NEXT: ADD AX, BX MOV [DI], CL INC SI INC SI INC DI CMP BX, 1 JNZ LOP0 RETBXEDC ENDPCODE ENDS END START4.23編寫一個將5位BCD碼數(小于65536)轉換成二進制數的程序。DATASEGMENTBCDDB7,4,3,0,5;BCD=50347HEXDW0DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AX LEABX,BCDMOVAL,[BX+4];萬位數MOVAH,0MOVCX,10000MULCX;AX*CX→DX:AX,DX必為0ADDHEX,AX;HEX+AX→AX,CF必為0分析:1個5位BCD碼數如果小于65536,那么轉換成二進制數后的最大值為FFFFH(即65535),用2個字節可以放下。可以用乘法來實現。MOVAL,[BX+3];千位數 MOVAH,0 MOVCX,1000

MULCX ADDHEX,AX MOVAL,[BX+2];百位數 MOVCL,100

MULCL;AL*CL→AX ADDHEX,AX MOVAL,[BX+1];十位數 MOVCL,10

MULCL ADDHEX,AXMOVAL,[BX];個位數 ADDHEX,AX HLTCODEENDSENDSTART4.26從BUF單元開始有10個帶符號數:-1,3,248,90,42,9042,-4539,0,-28792。試找出它們的最大值、最小值和平均值,并分別送MAX、MIN和AVG單元。試編寫完整的匯編語言程序。DATASEGMENTBUFDW-1,3,248,90,42,9042,-4539,0,-28,792MXADW-32768MINDW

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論