李伯成《微機(jī)原理》習(xí)題 第一章 本章作業(yè)參考書目: ① 薛鈞義主編 《微型計(jì)算機(jī)原理與應(yīng)用——Intel 80X86系列》 機(jī)械工業(yè)出版社 2002年2月第一版 ② 陸一倩 編 《微型計(jì)算機(jī)原理及其應(yīng)用(十六位微型機(jī))》 哈爾濱工業(yè)大學(xué)出版社 1994年8月第四版 ③ 王永山等 編 《微型計(jì)算機(jī)原理與應(yīng)用》 西安電子科技大學(xué)出版社 2000年9月 1.1將下列二進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù): X=10010110B= 1*27+0*26+0*25+1*24+0*23+1*22+1*21 +0*21 =128D+0D+0D+16D+0D+0D+4D+2D=150D X=101101100B =1*28+0*27+1*26+1*25+0*24+1*23+1*22+ 0*21+0*20 =256D+0D+64D+32D+0D+16D+4D+0D=364D X=1101101B= 1*26+1*25+0*24+1*23+1*22+0*21 +1*20 =64D+32D+0D+8D+4D+0D+1D=109D 1.2 將下列二進(jìn)制小數(shù)轉(zhuǎn)換成十進(jìn)制數(shù): (1) X=0.00111B= 0*2-1+0*2-2+1*2-3+1*2-4+1*2-5= 0D+0D+0.125D+0.0625D+0.03125D=0.21875D (2) X=0.11011B= 1*2-1+1*2-2+0*2-3+1*2-4+1*2-5= 0.5D+0.25D+0D+0.0625D+0.03125D=0.84375D (3) X=0.101101B= 1*2-1+0*2-2+1*2-3+1*2-4+0*2-5+1*2-6= 0.5D+0D+0.125D+0.0625D+0D+0.015625D=0.703125D 1.3 將下列十進(jìn)制整數(shù)轉(zhuǎn)換成二進(jìn)制數(shù): (1)X=254D=11111110B (2)X=1039D=10000001111B (3)X=141D=10001101B 1.4 將下列十進(jìn)制小數(shù)轉(zhuǎn)換成二進(jìn)制數(shù): (1) X=0.75D=0.11B (2) X=0.102 D=0.0001101B (3) X=0.6667D=0.101010101B 1.5 將下列十進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù) (1) 100.25D= 0110 0100.01H (2) 680.75D= 0010 1010 1000.11B 1.6 將下列二進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù) (1) X=1001101.1011B =77.6875D (2) X=111010.00101B= 58.15625D 1.7 將下列二進(jìn)制數(shù)轉(zhuǎn)換成八進(jìn)制數(shù) (1) X=101011101B=101‘011‘101B=535Q (2) X=1101111010010B=1‘101‘111‘010‘010B=15722Q (3) X=110B=6Q 1.8 將下列八進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù): (1) X=760Q=111'110'000B (2) X=32415Q=11'010'100'001'101B 1.9 將下列二進(jìn)制數(shù)轉(zhuǎn)換成十六進(jìn)制數(shù): X=101 0101 1110 1101B= 5 5 E D H X= 1100110101'1001B= 11 0011 0101 1001B= 3 3 5 9H X= 1000110001B= 10 0011 0001 B= 2 3 1 H 1.10 將下列十六進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù): X= ABCH= 1010 1011 1100 B X=3A6F.FFH = 0011 1010 0110 1111.1111 1111B X= F1C3.4B =1111 0001 1100 0011 . 0100 1011B 1.11 將下列二進(jìn)制數(shù)轉(zhuǎn)換成BCD碼: (1) X= 1011011.101B= 1'011'011.101B= 91.625d=1001 0001.0110BCD (2) X=1010110.001B= 1‘010‘110.001 =126.1 BCD 1.12 將下列十進(jìn)制數(shù)轉(zhuǎn)換成BCD碼: (1) X=1024D=0001 0000 0010 0100 BCD (2) X=632 = 0110 0011 0010 BCD (3) X= 103 = 0001 0000 0011 BCD 1.13 寫出下列字符的ASCI I碼: A 41H 65D 0100 0001B 9 39H 47D * 2AH 42D = 3DH 45D ,! 21H 33D 1.14 若加上偶校驗(yàn)碼,,下列字符的ASCII碼是什么,? 字符 原碼 加上偶校驗(yàn)碼之后 B 42H, 0100 0010B 42H,,0100 0010B 4 34H,, 0011 0100B B4H,1011 0100B 7 37H,, 0011 0111B B7H,,1011 0111B = 3DH,0011 1101B BDH,,1011 1101B ,! 21H,0010 0001B 21H,,0010 0001B ,? 3FH 0011 1111B 3FH,0011 1111B 1.15 加上奇校驗(yàn),,上面的結(jié)果如何,? 字符 原碼 加上奇校驗(yàn)碼之后 B 42H, 0100 0010B C2H,,1100 0010B 4 34H,, 0011 0100B 34H,0011 0100B 7 37H,, 0011 0111B 37H,,0011 0111B = 3DH,0011 1101B 3DH,,0011 1101B ,! 21H,0010 0001B A1H,,1010 0001B ,? 3FH 0011 1111B BFH,1011 1111B 1.16 計(jì)算下式: (1)[?B‘/2+ABH-11011001B]*0.0101BCD=(42H/2+ABH-D9H)*0.21 BCD = = F3H*0.21 BCD =(-DH) *0.21 BCD= -2.73D (2) 3CH – [(84D)/(16Q)+‘8‘/8D]= 60D-[84D/14D+(56/8)]=60D-[13]D= =47D 1.17 對(duì)下列十進(jìn)制數(shù),,用八位二進(jìn)制數(shù)寫出其原碼,、反碼和補(bǔ)碼: (正數(shù)的反碼與原碼相同,負(fù)數(shù)的反碼除符號(hào)位之外其余各位按位取反,。正數(shù)的補(bǔ)碼與原碼相同,;負(fù)數(shù)的補(bǔ)碼除符號(hào)位以外,其余各位按位取反之后再加一,。) 數(shù)據(jù) 原碼 反碼 補(bǔ)碼 +99 0110 0011 0110 0011 0110 0011 -99 1110 0011 1001 1100 1001 1101 +127 0111 1111 0111 1111 0111 1111 -127 1111 1111 1000 0000 1000 0001 +0 0000 0000 0000 0000 0000 0000 -0 1000 0000 1111 1111 0000 0000 1.18 8位二進(jìn)制數(shù)原碼可表示數(shù)的范圍是 +127~-128,; 8位二進(jìn)制數(shù)補(bǔ)碼可表示的數(shù)的范圍是 +127~-127; 8位二進(jìn)制數(shù)反碼可表示的數(shù)的范圍是:+127~-128,; 1.19 16位二進(jìn)制數(shù)的原碼,、補(bǔ)碼,、反碼可表示的數(shù)的范圍是多少? +32767~-32768,、+32767~-32768,、+32767~-32768; 1.20 至少寫出3種用二進(jìn)制編碼狀態(tài)表示十進(jìn)制數(shù)字的編碼方式,。 8421碼,、 5421碼 2421碼 余3碼 十進(jìn)制數(shù) 0000 0000 0000 0011 0 0001 0001 0001 0100 1 0010 0010 1000 0101 2 0011 0011 1001 0110 3 0100 0100 1010 0111 4 0101 1000 1011 1000 5 0110 1001 1100 1001 6 0111 1010 1101 1010 7 1000 1011 1110 1011 8 1001 1100 1111 1100 9 李伯成《微機(jī)原理》習(xí)題 第二章 ① 薛鈞義主編 《微型計(jì)算機(jī)原理與應(yīng)用——Intel 80X86系列》 機(jī)械工業(yè)出版社 2002年2月第一版 ② 陸一倩 編 《微型計(jì)算機(jī)原理及其應(yīng)用(十六位微型機(jī))》 哈爾濱工業(yè)大學(xué)出版社 1994年8月第四 版 ③ 王永山等 編 《微型計(jì)算機(jī)原理與應(yīng)用》 西安電子科技大學(xué)出版社 2000年9月 ④洪志全等 編 《現(xiàn)代計(jì)算機(jī)接口技術(shù)》 電子工業(yè)出版社 2002年4月 ⑤仇玉章主編 《32位微型計(jì)算機(jī)原理與接口技術(shù)》 清華大學(xué)出版社 2000年9月 2.1 8086CPU的RESET引腳的功能是什么? 答:RESET引腳稱為復(fù)位引腳,,輸入,、三態(tài)、高電平有效,;RESET引腳將使CPU立即結(jié)束當(dāng)前操作,,處理器要求RESET信號(hào)至少要保持4個(gè)時(shí)鐘周期的高電平,才能結(jié)束它正在進(jìn)行的操作,。CPU復(fù)位以后,,除了代碼段寄存器CS的值為FFFFH外,其余所有寄存器的值均為零,,指令隊(duì)列為空,。 當(dāng)RESET回到低電平時(shí),CPU開始執(zhí)行―熱啟動(dòng)‖程序,,由于此時(shí)CS的值為FFFFH,,IP的值為0000H,所以CPU復(fù)位以后執(zhí)行的第一條指令的物理地址為 FFFF0H,,該單元通常放置一條段間直接轉(zhuǎn)移指令JMP SS:OO,,SS:OO即為系統(tǒng)程序的實(shí)際起始地址。 2.2 在8086 CPU 工作在最小模式時(shí),, (1) 當(dāng)CPU 訪問存儲(chǔ)器時(shí),,要利用哪些信號(hào)? 當(dāng)CPU訪問存儲(chǔ)器時(shí),,要利用AD0~AD15,、WR*、RD*,、IO/M*以及A16~A19,; (2) 當(dāng)CPU訪問外設(shè)接口時(shí),要利用哪些信號(hào),? 當(dāng)CPU訪問外設(shè)接口時(shí),,同樣要利用AD0---AD15、WR*、RD*以及IO/M*,,但不使用高端地址線A16---A19,; (3)當(dāng)HOLD有效并得到響應(yīng)時(shí),,CPU哪些引腳置高阻,? 當(dāng)HOLD有效并得到響應(yīng)時(shí),CPU除HOLD,、HOLDA引腳外其余所有的信號(hào)引腳均為高阻態(tài),。 2.3 略 2.4 說明8086 CPU READY 信號(hào)的功能。 見 P23 2.5 8086 CPU 的NMI和INTR引腳的不同有幾點(diǎn),? 兩點(diǎn): (1) INTR是可以由用戶用指令禁止的,,(通 過中斷允許標(biāo)志IF的開---STI和關(guān)CLI進(jìn)行);而NMI不能由用戶禁止,; (2) INTR是可以區(qū)分優(yōu)先級(jí)別的,,NMI是最高級(jí) 的,沒有中斷優(yōu)先級(jí)的排隊(duì),。 2.6 說明8086CPU內(nèi)部標(biāo)志寄存器各位的含義,。 8086 CPU的標(biāo)志寄存器(PSW或FLAG)共有9個(gè) 標(biāo)志位,分別是: CF (Carry Flag)--- 進(jìn)位或借位標(biāo)志,; PF (Parity Flag)--- 奇偶標(biāo)志,; AF (auxiliary Flag)----半進(jìn)位標(biāo)志; ZF (Zero Flag) -----結(jié)果為零標(biāo)志,; SF (Sign Flag) ----- 符號(hào)標(biāo)志,; OF (Overflow Flag)-----溢出標(biāo)志; IF (Interrupt Enable Flag)-----中斷允許標(biāo)志,; DF (Direction Flag) ---- 方向標(biāo)志,; TF (Trap Flag) ----- 陷阱標(biāo)志。 2.7 說明8086CPU內(nèi)部14個(gè)寄存器的作用,。 8086內(nèi)部的寄存器可以分為3類: 第一類:通用寄存器: AX,、BX、CX,、DX,、SI、DI,、SP,、BP,共8個(gè)可以存儲(chǔ)數(shù)據(jù)或者地址的低16位,;AX,、BX、CX和DX可以分成8個(gè)8位的寄存器使用;SI,、DI又稱變址寄存器,,用于存儲(chǔ)變址地址;SP和BP存放指針變量值,。 第二類:段寄存器: CS,、DS、SS,、ES,,共4個(gè)寄存器,只能存放對(duì)應(yīng)段的段地址,; 第三類為IP和FLAG,,IP在通常情況下不允許用戶訪問,而FLAG是用以向用戶提供了解ALU工作狀態(tài)或者控制CPU工作方式的標(biāo)志寄存器,。 2.8 試畫出8086CPU工作在最小模式時(shí)的總線形成示意圖,。 (注:BHE*引腳為34腳---即SS0,參見P25狀態(tài)編碼表) 四點(diǎn)說明: A,、MN/MX端接+5V,,決定了8086工作在最小模式。 B,、有一片8234A,,作為 時(shí)鐘發(fā)生器。 C,、有三片8282或74LS373,,用來作為 地址鎖存器。 D,、當(dāng)系統(tǒng)中所連接的存儲(chǔ)器和外設(shè)比較多時(shí),,需要增加系統(tǒng)數(shù)據(jù)總線的驅(qū)動(dòng)能力, 這時(shí),,要用兩片 8286/8287(74LS244或74LS245)作為 總線收發(fā)器,。 2.9 8086/8088為什么采用地址/數(shù)據(jù)引線復(fù)用技術(shù)? 答:考慮到芯片成本,,8086/8088采用40條引線的封裝結(jié)構(gòu),。40條引線引出8086/8088的所有信號(hào)是不夠用的,采用地址/數(shù)據(jù)線復(fù)用引線方法可以解決這一矛盾,,從時(shí)序邏輯的角度,,地址與數(shù)據(jù)信號(hào)不會(huì)同時(shí)出現(xiàn),二者可以分時(shí)復(fù)用同一組引線,。 2.10 怎樣確定8086的最大或最小工作模式,?最大、最小模式產(chǎn)生控制信號(hào)的方法有何不同? 答:引線MN/MX*的邏輯狀態(tài)決定8086的工作模式,,MN/MX*引線接高電平,,8086被設(shè)定為最小模式;MN/MX*引線接低電平,,8086被設(shè)定為最大模式,。最小模式下所有的控制信號(hào)由CPU相關(guān)引線直接提供;最大模式下控制信號(hào)由8288專用芯片譯碼后提供,,8288的輸入由8086的S2─S0三條狀態(tài)信號(hào)引線提供,。 李伯成《微機(jī)原理》習(xí)題 第三章 本章作業(yè)參考書目: 1.周明德: 微型計(jì)算機(jī)IBM-PC系統(tǒng)原理與應(yīng)用 清華大學(xué)出版社 1991 2.王永山等: 微型計(jì)算機(jī)原理與應(yīng)用 西安電子科大出版社 1998 3.張懷蓮: IBMPC匯編語言程序設(shè)計(jì) 電子工業(yè)出版社 1990 3.1 MOV AX,,00H,; SUB AX,AX,; MOV AX,,[BX]; MOV AX,,TABLE,; MOV AL,ARAY1[SI],; MOV AX,,[BX+6]; 立即尋址 寄存器尋址 寄存器間接尋址 直接尋址 寄存器相對(duì)尋址 寄存器相對(duì)尋址 3.2 若1KB的數(shù)據(jù)存放在TABLE以下,,試編寫程序?qū)⒃摂?shù)據(jù)拌到NEXT之下,。 程序片段如下: ORG 100h MOV CX,03FFH;數(shù)據(jù)個(gè)數(shù) LEA SI,TABLE,;源區(qū)首地址 LEA DI,NEXT,; 目的區(qū)首地址 AGAIN: MOV AL,[SI]; MOV [DI],AL,; 搬移 INC SI INC DI,; 移動(dòng)地址指針 DEC CX; 循環(huán)計(jì)數(shù)器遞減 JNZ AGAIN,; 循環(huán)未結(jié)束轉(zhuǎn) HLT,; 暫停 TABLE DB 1024 dup ('A'); 源數(shù)據(jù)區(qū) NEXT DB 1024 dup (0),; 目的數(shù)據(jù)區(qū) 3.3 編寫10個(gè)字(16位二進(jìn)制數(shù))之和的程序 ORG 100h LEA SI,ADD1; LEA DI,ADD2; LEA BX,SUM; MOV CL,CONT; MOV CH,0; 循環(huán)初始化 CLC,; 進(jìn)位清零 MADD1: MOV AX,[SI]; 讀加數(shù)1 ADC ADD ADD MOV ADD LOOP HLT,; AX,[DI] SI,2,; DI,2; [BX],AX; BX,2,; MADD1,; 移動(dòng)源區(qū)地址指針 移動(dòng)目的區(qū)地址指針 回存計(jì)算結(jié)果 移動(dòng)―和‖存儲(chǔ)區(qū)地址指針 循環(huán)控制 暫停 ADD1 ADD2 SUM CONT DB 0FEH,86H,7CH,44h,56H,1FH,24H,,01H,,02H,33H,;加數(shù)1 DB 56H,49H,4EH,0FH,9CH,22H,,45H,11H,,45H,,21H; 加數(shù)2 DB 10 DUP (0),; 和存儲(chǔ)單元 DB 5 ,; 循環(huán)次數(shù) 3.4 某16位二進(jìn)制數(shù),放在DATA連續(xù)的兩個(gè)單元中,,試編程求其平方根和余數(shù),,將其分別存放在ANS和REMAIN中。 ORG 100h MOV BL,2; 除數(shù)初值 AGAIN: MOV CX,NUM; 預(yù)計(jì)最大循環(huán)次數(shù) MOV AL,BL; 0,、1的平方根除外 MUL BL; 得到2的平方 CMP AX,CX; 大于原始數(shù)據(jù)么,? JG EXIT; 若原始數(shù)據(jù)小于4轉(zhuǎn)EXIT MOV AX,CX; 讀數(shù) DIV BL; 試除 INC BL; 除數(shù)遞增 JMP AGAIN; 繼續(xù)除 EXIT: DEC BL; 去除除數(shù)自加 MOV ANS,BL; 存商 MOV AL,BL; 恢復(fù)余數(shù) MUL BL; SUB CX,AX; MOV REMAIN,CL; HLT NUM DW 7; ANSDB ?; REMAIN DB ?; 3.5 在DATA1之下順序存放著以ASCII碼表示的千位數(shù),將其轉(zhuǎn)換成二進(jìn)制數(shù),。 MOV MOV CL,4; 移位次數(shù) CH,CL; 循環(huán)次數(shù) SI,OFFSET ASCBIN AX,AX DX,DX AL,7FH AL,'0' MOV CLD XOR XOR ASCB1: LODSB AND CMP ;不大于?0‘結(jié)束轉(zhuǎn)換 JL ERR CMP AL,'9' JG ASCB2 ;大于?9‘轉(zhuǎn)ASCB2 SUB AL,30H ; 數(shù)字形式二進(jìn)制數(shù)減30H JMP ASCB3 ASCB2: CMP AL,'A' ;大于?9‘又小于?A‘結(jié)束轉(zhuǎn)換 JL ERR CMP AL,'F' JG ERR SUB AL,37H ;大于?F‘為不合理數(shù),,結(jié)束轉(zhuǎn)換 ;字符形式ASCII數(shù)減37H ASCB3: OR DL,AL ROL DX,CL DEC CH JNZ ASCB1 ROL DX,CL MOV BIN,DX;存儲(chǔ)轉(zhuǎn)換結(jié)果 ERR: NOP HLT ASCBIN DB '1','B,'4','3' BIN DW ? 3.7 編寫程序?qū)OLT中的一個(gè)8位數(shù)乘以20,,乘積放在ANS中(用3種方式),。 解:第一種方法:常規(guī)乘法運(yùn)算 ORG 100h MOV AL,MOLT MOV BL,20 MUL BL MOV ANS,AX HLT MOLT DB 2 ANSDW ? 第二種方法,將MOLT連加20次 第三種方法,,將―20‖連加MOLT次 ORG 100h MOV CX,MOLT MOV BX,20 XOR AX,AX CLC ADD1:ADC AX,BX LOOP ADD1 MOV ANS,AX HLT MOLT DW 5 ANSDW ? 在DATA之下存放100個(gè)無符號(hào)的8位數(shù),,找出其最大者并將其存放在KVFF單ORG 100h MOV CX,20 MOV BX,MOLT XOR AX,AX CLC ADD1:ADC AX,BX LOOP ADD1 MOV ANS,AX HLT MOLT DW 5 ANSDW ? 3.8 元。 ORG 100h XOR DL,DL LEA DI,KVFF; NEXT0: LEA SI,BUFFER; MOV CL,99; 比較次數(shù)為N-1次 NEXT1: MOV AL,[SI]; INC SI; CMP DL,AL; JNC NEXT2; MOV DL,AL; DL中始終存目前最大值 NEXT2: DEC CL; JNZ NEXT1; MOV [DI],DL; 最大值存儲(chǔ) HLT BUFFER DB ,;自行定義100個(gè)數(shù)據(jù) KVFF DB ? 3.9 若將數(shù)據(jù)按大小順序排序,試編寫程序.. 解:此處采用 ―冒泡法‖予以處理: ORG 100h LEA MOV DI,BUFFER; 數(shù)據(jù)區(qū) BL,99; 外循環(huán)次數(shù) NEXT0: NEXT3: NEXT5: MOV SI,DI; MOV CL,BL; 內(nèi)循環(huán)次數(shù) MOV AL,[SI]; 讀數(shù) INC SI; 移動(dòng)指針 CMP AL,[SI]; 比較 JNC NEXT5; 大于轉(zhuǎn)NEXT5 MOV DL,[SI]; MOV [SI-1],DL; MOV [SI],AL; 不大于互換 DEC CL; 內(nèi)循環(huán)次數(shù)減一 JNZ DEC NEXT3; BL; 外循環(huán)次數(shù)減一 JNZ NEXT0 HLT BUFFER DB 自行定義100個(gè)字節(jié)型數(shù)據(jù) 3.10 在BVFF單元中有一個(gè)BCD數(shù)A,試根據(jù)下列關(guān)系編寫程序,計(jì)算結(jié)果存在DES中. A<20,Y=3*A; A<60,Y=A-20; A>=60,Y=80. ORG 100h MOV AL,BVFF CMP AL,20 JL EX1 CMP AL,60 JL EX2 MOV AL,80 JMP STOP EX1: MOV BL,3 MUL BL JMP STOP EX2: SUB AL,20 STOP: MOV DES,AL HLT BVFF DB 8 DES DB ? 3.11址為DATAB開始的80個(gè)單元中,存放某班80個(gè)學(xué)生的某課程成績(jī),要求: 統(tǒng)計(jì)>=90分,、80~89分、70~79分,、60~69分,、60分以下的人數(shù),結(jié)果存放在 BTRX開始的5個(gè)單元中 求平均成績(jī),,結(jié)果存放在LEVEL中,。 解:寄存器使用分配:90分以上在DH,,80分以上在DL,70分以上在BH,,60分以上在BL,,60分以下在AH,總分,、均分都在[DI],。 ORG 100h XOR AH,AH XOR DX,DX XOR BX,BX ;統(tǒng)計(jì)結(jié)果清零 ;統(tǒng)計(jì)結(jié)果清零 LEA SI,DATA LEA DI,LEVEL MOV CL,CONT; 總?cè)藬?shù)送循環(huán)計(jì)數(shù)器 CX goon: MOV AL,[SI] ;讀原始數(shù)據(jù) ADC [DI], AL;累加總分 ADC [DI+1],0 ;計(jì)算進(jìn)位 CMP AL,90 JL PP8 ; 不高于90分者轉(zhuǎn)PP8 INC DH ; 90--100分的人數(shù)加一 JMP STOR PP8: PP7: PP6: CMP AL,80 JL PP7 ;不高于80分轉(zhuǎn)PP7 INC DL ;80----89分的人數(shù)加一 JMP STOR CMP AL,70 JL PP6 ;不高于70分者轉(zhuǎn)PP6 INC BH ;70---79分的人數(shù)加一 JMP STOR CMP AL,60 JL PP5 ;不高于60分者轉(zhuǎn)PP5 INC BL ;60---69分的人數(shù)加一 JMP STOR PP5: INC AH ;低于60分的人數(shù)加一 STOR: INC SI ;讀下一個(gè)分?jǐn)?shù) LOOP GOON ;CX=CX-1,CX不為零轉(zhuǎn)GOON,繼續(xù)統(tǒng)計(jì) LEA SI,BUFFER ;回存統(tǒng)計(jì)結(jié)果 MOV INC SI MOV INC SI MOV INC SI MOV INC SI MOV MOV [SI],DH [SI],DL [SI],BH [SI],BL [SI],AH AX,WORD PTR [DI] ;計(jì)算平均成績(jī) MOV CL,CONT DIV CL MOV LEVEL,AL ;回存平均成績(jī) HLT CONT DB 10 DATA DB 30,65,99,80,75, 89,100,45,60,70 BUFFER DB ?,?,?,?,? LEVEL DB ? ,? 3.12 求兩個(gè)有符號(hào)數(shù)(DATA1,DATA2)差的絕對(duì)值,結(jié)果存入DATA3. ORG 100h MOV AL,DATA1;讀入被減數(shù) SUB AL,DATA2,;減去減數(shù) JC CHANGE,; JMP STOR CHANGE: NEG AL STOR: MOV DATA3,AL HLT DATA1 DB 3 DATA2 DB 5 DATA3 DB ? 3.13 存從40000H到4BFFH的個(gè)單元均寫入55H,并再逐個(gè)讀出,驗(yàn)證是否一致,若一致,置AL為7EH,否則置AL為81H. ORG 100h MOV AX,4000H; MOV DS,AX; MOV SI,0 START: MOV CX,0BFFFH BEGIN: MOV [SI],55H MOV AL,[SI] INC SI CMP AL,55H JNZ ERR LOOP BEGIN MOV AL,7EH JMP STOP ERR: MOV AL,81H STOP: HLT 3.14~3.15 端口03FBH的BIT5為狀態(tài)標(biāo)志,當(dāng)該位為1時(shí),表示外設(shè)忙,不能接收數(shù)據(jù);當(dāng)為0時(shí),表示外設(shè)閑,可以接收數(shù)據(jù);當(dāng)CPU向端口03F8H寫入一個(gè)字節(jié)的數(shù)據(jù)時(shí),03FBH的BIT5置1,當(dāng)它變?yōu)?狀態(tài)時(shí),又可以寫入下一個(gè)數(shù)據(jù)。據(jù)此編寫將起始地址為SEDAT的50個(gè)數(shù)據(jù)輸出到03F8H端口的程序,。 WAIT: MOV DX,,03FBH IN AL,DX TEST AL,,0010 0000B,;(20H) JZ SEND JMP WAIT SEND:MOV DX,,3F8H MOV AL,,[SI]; CMP AL,,0AH,;輸出字串結(jié)束標(biāo)志符 JZ STOP OUT DX,AL WAIT JMP STOP:HLT 3.16 口02E0H的BIT2和BIT5同時(shí)為1,,表示端口02E7H有一個(gè)字節(jié)型數(shù)據(jù)準(zhǔn)備好可以 用以輸入,,當(dāng)CPU從該端口讀入數(shù)據(jù)后,02E0端口的BIT2和BIT5就不再同時(shí)為1,;只有當(dāng)02E7H端口的數(shù)據(jù)再次準(zhǔn)備好時(shí),,它們才會(huì)再次同時(shí)為1,據(jù)此編寫從02E7H端口輸入32個(gè)數(shù)據(jù)然后存入A1000H單元開始的區(qū)域,。 MOV AX,,0A000H MOV DS,AX MOV SI,,1000H,; 設(shè)置存儲(chǔ)區(qū)地址 MOV CL,20H,; 輸入數(shù)據(jù)個(gè)數(shù) BEGIN:MOV DX,,0E20H IN AL,DX TEST AL,,0010 0100B,; 測(cè)試狀態(tài)位 BIT5,、BIT2 JZ BEGIN; 不同時(shí)為1繼續(xù)測(cè)試 MOV DX,,02E7H IN AL,,DX; 輸入數(shù)據(jù) MOV [SI],,AL,; 存到指定區(qū)域 INC SI; 移動(dòng)地址指針 LOOP BEGIN,; 循環(huán) HLT 3.17 在內(nèi)存40000H開始的16K的單元中存放著一組數(shù)據(jù),,將其順序搬移到起始地址為A0000H的區(qū)域。 解:利用字符串操作指令 MOVSB,,16K即16*1024=3FFFH,。 MOV MOV MOV MOV MOV MOV MOV AX,4000H DS,,AX AX,,A000H ES,AX SI,,0 DI,,0 CX,3FFFH CLD REPMOVSB HLT 3.18 上題的基礎(chǔ)上,,將兩個(gè)區(qū)域的數(shù)據(jù)逐個(gè)進(jìn)行比較,,若有錯(cuò)將BL置0,全對(duì)將BL置 FFH,。 MOV MOV AX,,4000H DS,AX MOV MOV MOV MOV MOV AX,,A000H ES,,AX SI,0 DI,,0 CX,,03FFH CLD AAB: CMPSB JNZ STOP LOOP AAB MOV BL,0FFH JMP EX1 STOP: MOV BL,,0,; EX1: NOP HLT 3.19 統(tǒng)計(jì)由40000H單元開始的16K個(gè)單元中所存字符?A‘的個(gè)數(shù),統(tǒng)計(jì)結(jié)果存放在DX寄存器中,。 MOV AX,,4000H MOV DS,AX MOV SI,,0,; MOV CX,,3FFFH; 數(shù)據(jù)個(gè)數(shù) MOV DX,,0,;統(tǒng)計(jì)結(jié)果寄存器清零 XOR DX,DX CLD AAB: LODSB CMP AL,?A‘,; 比較 JZ AAC,;字符為?A‘轉(zhuǎn)計(jì)數(shù) LOOP AAB; 循環(huán) JMP STOP,; 處理完畢轉(zhuǎn)結(jié)束 AAC: INC DX,; 統(tǒng)計(jì)結(jié)果加1 DEC CX; 循環(huán)次數(shù)減1 JCXNZ AAB,; CX<>0繼續(xù) STOP: HLT 3.20 編寫對(duì)AL中的數(shù)據(jù)進(jìn)行―偶校驗(yàn)‖的一個(gè)過程,,并將校驗(yàn)結(jié)果放入AL寄存器。 PJY PROC NEAR PUSH AX PUSH BX PUSH CX PUSH DX MOV AL,,DAT AND AL,,AL JNP PJY1 3.21 MOV AL,00H,; 表示為偶 JMP EXIT PJY1: MOV AL,,F(xiàn)FH; 表示為奇 EXIT: POP DX PJY POP CX POP BX POP AX RET ENDP DAT DB ,? 對(duì)80000H開始的256個(gè)單元的數(shù)據(jù)加上偶校驗(yàn),。 ORG 100h MOV AX,8000H MOV DS,,AX MOV SI,0 MOV CX,100H CLD LODSB;(MOV AL,,[SI] ,;INC SI) TEST AL,AL JNP PAR1 LOOP PAR0 JMP STOP OR AL,80H; MOV [SI-1],AL DEC CX JNZ PAR0 HLT PAR0: PAR1: STOP: 4-1 某以8088為CPU的微型計(jì)算機(jī)內(nèi)存RAM區(qū)為00000H ~3FFFFH,若采用6264,、62256,、 2164或21256各需要多片芯片? 解答: 8088 內(nèi)存單元為8 bit,,所以,,從00000H 到3FFFFH,共需要214 個(gè)byte,,共214*8bit,也就是共占用16K byte空間,。由于各種芯片的數(shù)據(jù)總線根數(shù)不同,所以在連接時(shí)要特別注意芯片的位數(shù),; 對(duì)于如下芯片: 6264 有8根數(shù)據(jù)線,,13根地址線,,故其容量為 213*8bit,即8Kbyte, 所以需要2片; 62256 有8根數(shù)據(jù)線,,15根地址線,,故其容量為 215*8bit,即32 Kbyte, 所以僅需要1片;盡管題目要求只需要16K的空間,,但在使用62256時(shí)不得不使用1片,。 2164 有8根數(shù)據(jù)線,12根地址線,,故其容量為 212*8bit,即4Kbyte, 所以需要4片,; 21256 有1根數(shù)據(jù)線,10根地址線(實(shí)際為20根,,分兩組),,但由于僅有一根數(shù)據(jù)線,要構(gòu)成八位的存儲(chǔ)器至少需要8片,,但總?cè)萘繛?*256Bit,,遠(yuǎn)遠(yuǎn)超過題目的要求。 4.2 利用全地址譯碼將6264接在8088的系統(tǒng)總線上,,其所占的地址范圍為BE000H~BFFFFH,,試畫出連接圖。 解答:6264有13根地址線,,連接時(shí)接到系統(tǒng)總線的低13位,,即A0~A12, 其他7根地址線A19~A13的 地址譯碼輸入應(yīng)該為:1011 111 B,故而有如下的連接: 4.3 試?yán)?264 芯片,,在8088系統(tǒng)總線上實(shí)現(xiàn)0000H~03FFFH的內(nèi)存區(qū)域,,試畫出電路連接圖。 解答:0000H~03FFFH的地址范圍為214=16K,, ,,而6264芯片的容量為8*8K, 所以需要連接2片,,其中,,第一片的地址為00000H~01FFFH,第二片的地址為02000H~03FFFH,,這里用74LS138的Y0,、Y1 作為兩個(gè)芯片的片選。 4.4 敘述EPROM的編程過程,,說明EEPROM的編程過程,。 EPROM編程通常采用兩種模式:標(biāo)準(zhǔn)編程和快速編程: 標(biāo)準(zhǔn)編程是在VCC、VPP,、CE,、OE,、地址信號(hào)、數(shù)據(jù)信號(hào)有效并穩(wěn)定后加入50毫秒的PGM編程負(fù)脈沖,,可以在寫入一個(gè)數(shù)據(jù)后使OE變高而立即校驗(yàn),,也可以在所有數(shù)據(jù)寫入后逐一校驗(yàn)。 標(biāo)準(zhǔn)編程有兩大缺陷:一是時(shí)間過長(zhǎng),,比如2764全片編程約需7分鐘,,時(shí)間過長(zhǎng);再是編程脈沖寬度稍大容易造成芯片因功耗過大而燒毀,。 快速編程將PGM的寬度減小到100微妙左右,,顯然速度加快了500倍左右。 能否使用快速編程取決于芯片的型號(hào),。 EEPROM 由于可以在線擦除信息,,所以可以單字節(jié)編程或自動(dòng)按頁(yè)編程。 在單字節(jié)寫入時(shí),,CE為低,,OE為高,在WE加入100納秒的負(fù)脈沖,,寫入時(shí)間包括擦除原有內(nèi)容和寫入新內(nèi)容的時(shí)間,,一般為10毫秒以內(nèi),可以通過查詢READY/BUSY的狀態(tài)判定,。 自動(dòng)按頁(yè)編程用高位線決定頁(yè)地址,,低位線決定頁(yè)容量,然后一次寫入一頁(yè)內(nèi)容,,寫完后查詢READY/BUSY狀態(tài),,此一過程耗時(shí)在300微秒左右,所以速度較快,。 4.5已有兩片6116,,現(xiàn)欲將其接到8088系統(tǒng)中去,其地址范圍為40000H~40FFFH,試畫出電路連接圖,;寫入某數(shù)據(jù)并讀出與之比較,若有錯(cuò),,則在DL中寫入01H,,若全對(duì),在DL中寫入EEH,,試編寫此檢測(cè)程序,。 解答:電路連接如圖示: 檢測(cè)程序定義為一個(gè)過程,編程如下: CHKRAM PROC FAR SI,; DL,; CX,; AX; CX,,10000H,; 待檢驗(yàn)的單元個(gè)數(shù) PUSH PUSH PUSH PUSH MOV MOV MOV MOV MOV MOV MOV SI,4000H,; 存儲(chǔ)體段地址 DS,,SI; SI,,0000H,; AL,0FFH,; [SI],,AL; AL,,[SI],; 存儲(chǔ)體首地址 寫入檢驗(yàn)數(shù)據(jù)FFH 讀出 CHK: ADD JNZ AL,01H RAMERR 寫入另一格檢驗(yàn)數(shù)據(jù) 讀出 MOV AL,,0,; MOV MOV AND JNZ [SI],AL,; AL,,[SI]; AL,,AL RAMERR MOV DL,,0EEH; JMP MOV RAMCHKOUT DL,, 01H,; 所有單元全對(duì) RAMERR: 發(fā)現(xiàn)錯(cuò)誤單元 RAMCHKOUT: POP POP AX; CX,; POP DL,; POP SI; RET ENDP CHKRAM 4.6 利用全地址譯碼將EPROM27128接到首地址為A0000H的內(nèi)存區(qū),,試畫出電路圖,。 解答:EPROM27128 的容量為8* 16K,所以有14根地址線,, 那么如果將其接到首地址為A0000H 內(nèi)存區(qū),,高6位地址線的排列應(yīng)該為:1010 00B,所以有如下的連接: 4.7 內(nèi)存地址從40000H到BBFFFH共有多少K? 解答:從40000H到BBFFFH的地址空間應(yīng)該為 BBFFFH-40000H= 7BFFFH 每K為210,,即3FFH,,7BFFFH/3FFH=1F0H=496D 所以,該地址空間的范圍應(yīng)該為496KByte,。 4.8 試判斷8088系統(tǒng)中存儲(chǔ)器譯碼器74LS138的輸出Y0,、Y4、Y6和Y7所決定的內(nèi) 存地址范圍,,電路連接見附圖,。 解答: 根據(jù)示意圖,A19,、A18,、A17、A16 的電平值為 1X00B,由于采用的是部分譯碼(A18未使用),,所以每個(gè)地址譯碼輸出對(duì)應(yīng)的兩個(gè)地址范圍,。 Y0對(duì)應(yīng) A15、A14,、A13 均為0,,所以其地址范圍應(yīng)該為: 當(dāng)A18=0時(shí),地址范圍為: 1000 0000 0000 0000 ~ 1000 0001 1111 1111 1111 B 即80000H~ 81FFFH 當(dāng) A18=1時(shí),地址范圍為: 1100 0000 0000 0000 ~ 1100 0001 1111 1111 1111B 即C0000H~ C1FFFFH Y4 對(duì)應(yīng)的 A15、A14,、A13 為 100,,所以其地址范圍應(yīng)該為: 當(dāng)A18=0 時(shí),地址范圍為: 1000 1000 0000 0000 0000B~ 1000 1001 1111 1111 1111B 即88000H~ 89FFFH 當(dāng)A18=1時(shí),,地址范圍為: 1100 1000 0000 0000 0000 ~1100 1001 1111 1111 1111B 即C8000H~C9FFFH 轉(zhuǎn)載請(qǐng)保留出處,,http://www./doc/13fd56b369dc5022aaea000f.html |
|