![微機(jī)原理及接口第四章習(xí)題答案_第1頁(yè)](http://file4.renrendoc.com/view/da904576d37dbb1ecb9f46d61093e053/da904576d37dbb1ecb9f46d61093e0531.gif)
![微機(jī)原理及接口第四章習(xí)題答案_第2頁(yè)](http://file4.renrendoc.com/view/da904576d37dbb1ecb9f46d61093e053/da904576d37dbb1ecb9f46d61093e0532.gif)
![微機(jī)原理及接口第四章習(xí)題答案_第3頁(yè)](http://file4.renrendoc.com/view/da904576d37dbb1ecb9f46d61093e053/da904576d37dbb1ecb9f46d61093e0533.gif)
![微機(jī)原理及接口第四章習(xí)題答案_第4頁(yè)](http://file4.renrendoc.com/view/da904576d37dbb1ecb9f46d61093e053/da904576d37dbb1ecb9f46d61093e0534.gif)
![微機(jī)原理及接口第四章習(xí)題答案_第5頁(yè)](http://file4.renrendoc.com/view/da904576d37dbb1ecb9f46d61093e053/da904576d37dbb1ecb9f46d61093e0535.gif)
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
微機(jī)原理及接口第四章習(xí)題答案微機(jī)原理及接口第四章習(xí)題答案微機(jī)原理及接口第四章習(xí)題答案微機(jī)原理及接口第四章習(xí)題答案編制僅供參考審核批準(zhǔn)生效日期地址:電話(huà):傳真:郵編:“微機(jī)系統(tǒng)原理與接口技術(shù)”第四章習(xí)題解答判斷以下說(shuō)法是否正確,如有錯(cuò),請(qǐng)說(shuō)明原因并改正。(1)偽指令在匯編過(guò)程中不會(huì)產(chǎn)生二進(jìn)制代碼。(2)宏和過(guò)程的相同之處是都可用于簡(jiǎn)化源程序書(shū)寫(xiě)、精簡(jiǎn)目標(biāo)代碼。(3)在計(jì)算機(jī)中,高級(jí)語(yǔ)言通常需要轉(zhuǎn)換為匯編語(yǔ)言后才能執(zhí)行。(4)匯編語(yǔ)言程序上機(jī)一般包括編輯、匯編、鏈接和調(diào)試幾個(gè)步驟。答:(1)正確。(2)錯(cuò)誤。宏不能精簡(jiǎn)目標(biāo)代碼。(3)錯(cuò)誤。高級(jí)語(yǔ)言程序經(jīng)編譯或解釋后直接轉(zhuǎn)換為目標(biāo)代碼。(4)正確。已知數(shù)據(jù)和符號(hào)定義A1 DB A2 DB 8 K1 EQU 100判斷下列指令的正誤,并說(shuō)明錯(cuò)誤指令的原因。(1)MOV K1,AX(2)MOV A2,AH(3)MOV BX,K1 MOV [BX],DX(4)CMP A1,A2(5)K1 EQU 200答:(1)錯(cuò)誤。K1是符號(hào)常數(shù),在此處相當(dāng)于立即數(shù)100,故不能做目的操作數(shù)。(2)正確。(3)正確。(4)錯(cuò)誤。A1、A2都是字節(jié)變量,相當(dāng)于兩個(gè)存儲(chǔ)器單元,故不能同時(shí)出現(xiàn)在一條指令中直接進(jìn)行比較。(5)錯(cuò)誤。用EQU定義的符號(hào)不能重新賦值,除非已用PURGE解除了原值。若數(shù)據(jù)段中有定義 NUM1 EQU 23H NUM2 DW 0則指令MOV NUM2,NUM1的源、目操作數(shù)的尋址方式以及指令執(zhí)行后NUM2+1單元的內(nèi)容分別是什么答:指令MOVNUM2,NUM1的源操作數(shù)使用立即數(shù)尋址,目的操作數(shù)使用直接尋址。指令執(zhí)行后NUM2+1單元的內(nèi)容是0。設(shè)DS=6000H,BX=8432H,SS=5000H,SP=3258H,內(nèi)存69632H~69635H單元的內(nèi)容依次是00H、11H、22H、33H。4字節(jié)指令CALLDWORDPTR[BX+1200H]本身位于2000H:3250H處的雙字單元中。當(dāng)8086執(zhí)行該指令后轉(zhuǎn)移至子程序入口時(shí),CS、IP、SS、SP各寄存器以及棧頂2個(gè)字單元的內(nèi)容分別是多少答:執(zhí)行結(jié)果為CS=3322H,IP=1100H,SS=5000H,SP=3254H,棧頂?shù)膬蓚€(gè)字即斷點(diǎn)地址,為2000H:3254H。已知某數(shù)據(jù)段從物理地址03000H處開(kāi)始,定義如下: DSEG SEGMENT ORG 2000H A1 DD 2DUP(7,1,) A2 DB 10DUP(0,4,3DUP(2),5)……09HARA1……09HARA1(0006H)00H11H00HARA2(000AH)‘4‘60FFHARA3(0010H)0FFH0FFH0FFH0FFH0FFHARA4(0016H)05H05H05H05H‘$’05H05H05H05H‘$’9AHVAR2(0024H)56H41H(‘A’)42H(‘B’)題4-7圖 A3 DW 100DUP() DSEG ENDS請(qǐng)分別用分析運(yùn)算符SEG、OFFSET、LENGTH、SIZE、TYPE求出A1、A2、A3的段基址、偏移量、類(lèi)型及它們的LENGTH、SIZE。答:(SEGA1)=0300H,(OFFSETA1)=2000H,(TYPEA1)=4,(LENGTHA1)=2,(SIZEA1)=2×4=8;(SEGA2)=0300H,(OFFSETA2)=2018H,(TYPEA2)=1,(LENGTHA2)=10,(SIZEA2)=10×1=60;(SEGA3)=0300H,(OFFSETA3)=2054H,(TYPEA3)=2,(LENGTHA3)=100,(SIZEA3)=100×2=200已知符號(hào)定義語(yǔ)句如下: ALPHA EQU 100 BETA EQU 25 GAMMA EQU 2分別求下列各表達(dá)式的值。(1)ALPHA*4GTBETA=100*4GT25=0FFFFH(2)ALPHAMODGAMMA+BETA=100MOD2+25=25(3)(BETA/3)LE5=(25/3)LE5=0(4)ALPHAANDBETA=100AND25=64H&19H=0(5)GAMMAXOR(BETAEQ25)=2(25EQ25) =0FFFDH已知數(shù)據(jù)段定義如下:DSEGSEGMENT ORG 6 ARA1 DD 110009H ARA2 DW 2DUP(),‘64’CONT1 EQU $-ARA2COUT2 EQU ARA2-ARA1ARA3 DB CONT1DUP(0FFH)ARA4 DB 2DUP(,CONT2DUP(5),’$’)ORG $+2VAR2 DW 569AH DB ‘AB’DSEG ENDS用示意圖說(shuō)明該數(shù)據(jù)段的存貯單元分配情況。答:有關(guān)存儲(chǔ)單元的內(nèi)容如右圖所示。下列程序是否有錯(cuò)如有錯(cuò),請(qǐng)改正。該程序完成什么功能。 DATA SEGMENT INBUF DW 100DUP() OUTBUF DW 100DUP() DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA MAIN PROC FAR MOV AX,DATA MOV DS,AX INIT: MOV SI,OFFSETINBUF LEA DI,OUTBUF MOV CX,100 REP MOVSB MAIN ENDP CODE ENDS END MAIN答:改正之后的源程序清單如下(下劃波浪線(xiàn)的語(yǔ)句是原來(lái)沒(méi)有的或有錯(cuò)之處): DATA SEGMENT INBUF DW 100DUP() OUTBUF DW 100DUP() DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA ;原ASSUME語(yǔ)句未說(shuō)明ES MAIN PROC FAR PUSH DS ;補(bǔ)充的三條指令為主程序返回提供正確的地址 XOR AX,AX PUSH AX MOV AX,DATA MOV DS,AX MOV ES,AX ;MOVS指令以ES:DI為目的串指針,故應(yīng)對(duì)ES賦值 INIT: MOV SI,OFFSETINBUF LEA DI,OUTBUF MOV CX,100 CLD ;從首址開(kāi)始傳送,應(yīng)使DF=0 REPMOVSW ;應(yīng)傳送的是100個(gè)字而非字節(jié) RET ;程序結(jié)束,返回DOS MAIN ENDP CODE ENDS END MAIN該程序完成的功能是:將INBUF表內(nèi)的10個(gè)字?jǐn)?shù)據(jù)復(fù)制到以O(shè)UTPUT開(kāi)始的連續(xù)的內(nèi)存單元中。讀下面程序,在其中的空處添上適當(dāng)內(nèi)容。該程序完成了什么功能程序運(yùn)行后,變量RS的值是多少 DATA SEGMENT BUF DB -13,24,5,-62,77,20,-7,145,0 CNT DB $-BUF RS DB 0 DATA ENDSSTACK SEGMENT PARASTACK‘STACK’ DB 256DUP() STACK ENDS CODE SEGMENT ASSUME DS:DATA,SS:STACK,CS:CODE START PROC FARPUSH DS MOV AX,0 PUSH AX MOV AX,DATA MOV DS,AX LEA BX,BUF MOV CH,0 MOV CL, LP: MOV AL,[BX] TEST AL,80H JE CONT INC RS CONT:INC BX LOOP LP RET START ENDP CODE ENDS END START答:程序空處可填CNT,字節(jié)變量RS的最后結(jié)果是04H。該程序?qū)崿F(xiàn)的功能是:統(tǒng)計(jì)數(shù)據(jù)段中以BUF為首址的帶符號(hào)字節(jié)數(shù)據(jù)表中負(fù)數(shù)的個(gè)數(shù),CNT為表中所有數(shù)據(jù)的個(gè)數(shù),即表的長(zhǎng)度。需要注意的是:十進(jìn)制數(shù)據(jù)“145”在以二進(jìn)制帶符號(hào)字節(jié)數(shù)據(jù)形式存放時(shí)相當(dāng)于“-111”。編寫(xiě)一個(gè)完整的源程序,將數(shù)據(jù)35、-27、-13、6、-47、52、9、-3中的正數(shù)放入以BUFFER為首址的數(shù)據(jù)緩沖區(qū)中。答:一種可能的程序如下實(shí)現(xiàn):DATA SEGMENT BLOCK DB 35,-27,-13,6,-47,52,9,-3 COUNT EQU $-BLOCK BUFFER DB COUNT DUP() DATA ENDS STACK SEGMENTPARASTACK‘STACK’ DW 40 DUP() STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK BEGIN:MOV AX,DATA MOV DS,AX MOV ES,AX ;需用STOS串操作指令 MOV CX,COUNT LEA SI,BLOCK ;源數(shù)據(jù)區(qū)指針 LEA DI,BUFFER ;正數(shù)存放區(qū)指針 CLD ;自動(dòng)增量 AGAIN:LODSB ;取源數(shù)據(jù),并修改SI TEST AL,80H ;取符號(hào)位,不影響AL JS GO ;符號(hào)位=1,是負(fù)數(shù),不存 STOSB ;存正數(shù)并修改DI GO: LOOP AGAIN MOV AH,4CH ;退出循環(huán),返回DOS INT 21H CODE ENDS END BEGIN已知有一個(gè)長(zhǎng)100個(gè)字的數(shù)據(jù)塊,存放在以3DA0H:1000H開(kāi)始的存儲(chǔ)區(qū)域內(nèi)。試編寫(xiě)一個(gè)完整的匯編語(yǔ)言程序,將該數(shù)據(jù)塊復(fù)制到以3DA0H:1008H開(kāi)始的存儲(chǔ)區(qū)內(nèi)。答:一種可能的程序如下實(shí)現(xiàn):DATA SEGMENTAT3DA0H ORG 1000H BLOCK DW 104DUP() DATA ENDS SSEG SEGMENTPARASTACK‘SSEG’ DB 100DUP() SSEG ENDS CODE SEGMENT ASSUME CS:CODE,SS:SSEG,DS:DATA,ES:DATA MAIN PROC FAR PUSH DS MOV AX,0 PUSH AX MOV AX,SEGBLOCK MOV DS,AX MOV ES,AX MOV CX,200 ;重復(fù)次數(shù) LEA SI,BLOCK ADD SI,199 ;SI=10C7H MOV DI,SIADD DI,8 ;DI=10CFH STD ;自動(dòng)減量 REP MOVSB RET MAIN ENDP CODE ENDS END MAIN簡(jiǎn)析:由題意可知,源數(shù)據(jù)區(qū)(占用地址3DA0:1000H~3DA0:10C7H,共200個(gè)字節(jié))與目標(biāo)數(shù)據(jù)區(qū)(占用地址3DA0:1008H~3DA0:10CFH,共200個(gè)字節(jié))是重疊的。若從首址開(kāi)始增量傳送(DF=0),將破壞1008H以后的源數(shù)據(jù),所以必須從末址向首址減量傳送(DF=1)。數(shù)據(jù)段初始化時(shí),有以下幾點(diǎn)需注意:段基址規(guī)定為3DA0H,故應(yīng)在段定義偽指令SEGMENT后加上AT語(yǔ)句;源數(shù)據(jù)區(qū)首址的偏移量規(guī)定為1000H,故應(yīng)使用ORG語(yǔ)句指明;對(duì)源、目標(biāo)數(shù)據(jù)區(qū)進(jìn)行定義時(shí),應(yīng)注意目標(biāo)數(shù)據(jù)區(qū)首址的偏移量是1008H。如果定義為: ORG 1000H SOUR DW 100DUP() ;源數(shù)據(jù)區(qū) DEST DW 100DUP() ;目標(biāo)數(shù)據(jù)區(qū)則目標(biāo)數(shù)據(jù)區(qū)首址的偏移量實(shí)際上是10C8H,不合題意??蓪⑺鼈兘y(tǒng)一定義為足夠長(zhǎng)度(至少104字或208字節(jié))的變量,如參考程序所示。指針初始化時(shí),可以將SI、DI分別置為10C7H、10CFH,且CX=200,即進(jìn)行字節(jié)的傳送,使用MOVSB;亦可將SI、DI分別置為10C6H、10CEH,且CX=100,即進(jìn)行字的傳送,相應(yīng)使用MOVSW。從內(nèi)存單元BUF開(kāi)始的緩沖區(qū)中有7個(gè)8位無(wú)符號(hào)數(shù),依次為13H、0D8H、92H、2AH、66H、0E0H、3FH。編程找出它們的中間值并放入RES單元,且將結(jié)果以“(RES)=”的格式顯示在屏幕上。答:一種可能的程序如下實(shí)現(xiàn):DATA SEGMENT BUF DB 13H,0D8H,92H,2AH,66H,0E0H,3FH RES DB ;中間數(shù)的存放單元 STR DB ‘(RES)=’STR1 DB ,,‘$’ ;結(jié)果字符串 DATA ENDS SSEG SEGMENTPARASTACK‘SSEG’ DB 100DUP() SSEG ENDS CODE SEGMENT ASSUME CS:CODE,SS:SSEG,DS:DATA,ES:DATA MAIN PROC FAR ;主程序 PUSH DS XOR AX,AX PUSH AX MOV AX,DATA MOV DS,AX MOV ES,AX ;有STOS指令,需用ES MOV CX,6 ;外循環(huán)次數(shù),比6次 AGN: MOV SI,OFFSETBUF MOV DI,SI INC DI ;SI、DI指向相鄰2數(shù) MOV DX,6 ;內(nèi)循環(huán)次數(shù),比6次 AGN1: MOV AL,[SI] CMP AL,[DI] ;兩個(gè)無(wú)符號(hào)數(shù)相比較 JB UNCH ;小于則轉(zhuǎn),不互換 EXCH: XCHG AL,[DI] ;前1單元較大,則互換 MOV [SI],AL ;大數(shù)放在后面 UNCH: INC SI ;修改指針,指向下一個(gè)數(shù) INC DI DEC DX JNZ AGN1 ;未處理完,繼續(xù)內(nèi)循環(huán) LOOP AGN ;外循環(huán) DONE: MOV AL,[SI-3] ;排序完成,取中間數(shù) MOV RES,AL AND AL,0F0H ;分離高半字節(jié) MOV CL,4 SHR AL,CL CALL BATR ;調(diào)子程序,將AL值轉(zhuǎn)換為ASCII碼 LEA DI,STR1 ;DI指向結(jié)果單元 CLD STOSB ;存放轉(zhuǎn)換結(jié)果 MOV AL,RES AND AL,0FH ;分離并轉(zhuǎn)換低半字節(jié) CALL BATR STOSB LEA DX,STR ;顯示整個(gè)字符串 MOV AH,09H INT 21H RET MAIN ENDP ;主程序MAIN結(jié)束 ;子程序BATR,實(shí)現(xiàn)16進(jìn)制數(shù)到ASCII碼的轉(zhuǎn)換 BATR PROC NEAR CMP AL,10 ;入口參數(shù)為AL JB NUM ;是數(shù)字,則轉(zhuǎn)NUM ADD AL,’A’-10-’0’ ;字母 NUM: ADD AL,’0’ RET BATR ENDP ;子程序結(jié)束 CODE ENDS END MAIN簡(jiǎn)析:本例的基本思路是:先把7個(gè)無(wú)符號(hào)數(shù)按大小排序,排序完成之后取位于中間的一個(gè)數(shù)即為中間值。然后將該16進(jìn)制數(shù)轉(zhuǎn)換為兩個(gè)對(duì)應(yīng)的ASCII碼,再與要求的格式字符一起輸出送顯即可。數(shù)據(jù)排序可以是從大到小、或從小到大排列,本參考程序完成從小到大排序,由一個(gè)雙重循環(huán)結(jié)構(gòu)實(shí)現(xiàn)。內(nèi)循環(huán)完成一個(gè)數(shù)與其它數(shù)之間的一一比較,并使每次比較所得的小數(shù)置于低地址單元。外循環(huán)實(shí)現(xiàn)所有數(shù)之間的兩兩相較。共7個(gè)數(shù)據(jù),故內(nèi)、外循環(huán)中的比較次數(shù)均為6次。編程時(shí)需注意:無(wú)符號(hào)數(shù)比較大小應(yīng)使用JA、JB、JAE、JBE指令,本例完成從小到大的排列,故用JB控制轉(zhuǎn)移到UNCH;若要從大到小排列,則用JA代替JB即可。對(duì)兩個(gè)循環(huán)體進(jìn)行初始化時(shí),需仔細(xì)考慮指針和循環(huán)控制寄存器的初值。在數(shù)據(jù)段的定義中,分別定義STR、STR1兩個(gè)變量名字,是為了便于在STR1處存放轉(zhuǎn)換結(jié)果;顯示時(shí)使DX直接指向STR,以STR1末尾的“$”為結(jié)束符。中間值找出之后,應(yīng)把高、低半字節(jié)相分離,并分別轉(zhuǎn)換為各所對(duì)應(yīng)的ASCII碼。設(shè)某測(cè)試系統(tǒng)中,1號(hào)端口為測(cè)試口,所得數(shù)據(jù)是0~9之間的十進(jìn)制整數(shù);2號(hào)端口為顯示口,對(duì)應(yīng)于數(shù)字0~9的LED七段共陰顯示碼依次為:3FH、06H、5BH、4FH、66H、6DH、3DH、07H、7FH、6FH。編寫(xiě)一段查表送顯的程序,要求:先從測(cè)試口讀入一個(gè)數(shù)據(jù),再查表將相應(yīng)的顯示碼從顯示口送出,如此反復(fù)進(jìn)行直至讀入數(shù)據(jù)“0FFH”為止。答:一種可能的程序如下實(shí)現(xiàn):DATA SEGMENT TAB DB 3FH,06H,5BH,4FH,66HDB 6DH,3DH,07H,7FH,6FH ;0~9的七段碼 DATA ENDS STACK SEGMENTPARASTACK‘STACK’ DW 50 DUP() STACK ENDS CODE SEGMENT ASSUME CS:CODE,SS:STACK,DS:DATA START: MOV AX,DATA MOV DS,AX LEA BX,TAB ;BX指向表首址 NEXT: IN AL,1 ;從測(cè)試口輸入 CMP AL,0FFH JE STOP ;是0FFH,結(jié)束 XLAT TAB ;不是0FFH,查表轉(zhuǎn)換 OUT 2,AL ;向顯示口輸出七段碼 JMP NEXT ;繼續(xù)測(cè)試 STOP: MOV AH,4CH INT 21H CODE ENDS END START編程實(shí)現(xiàn)以下操作:從鍵盤(pán)輸入4個(gè)數(shù)字,分別作為2個(gè)10~99之間的十進(jìn)制數(shù)。求它們的和,并把結(jié)果以三位十進(jìn)制數(shù)的形式顯示在屏幕上。要求:輸入回顯的兩個(gè)加數(shù)與送顯的和之間有適當(dāng)?shù)姆指簦允緟^(qū)別。格式可自行擬定。答:一種可能的程序如下實(shí)現(xiàn):DATA SEGMENT NUM1 DB , ;加數(shù)1,高位在前,以非組合BCD碼存放 NUM2 DB , ;加數(shù)2,高位在前,以非組合BCD碼存放 SUM DB ,,,‘$’ ;存放結(jié)果的ASCII碼,以‘$’為結(jié)束符 DATA ENDS STACK SEGMENTPARASTACK‘STACK’ DW 50DUP()
STACK ENDS CODE SEGMENT ASSUME CS:CODE,SS:STACK,DS:DATA,ES:DATA FIRST: MOV AX,SEGNUM1 MOV DS,AX MOV ES,AX ;有STOS指令,需用ES CLD ;自動(dòng)增量,先輸入高位 MOV CX,2 LEA DI,NUM1 ;輸入加數(shù)1 IN1: MOV AH,1 ;DOS功能調(diào)用,單字符輸入 INT 21H AND AL,0FH ;ASCII碼轉(zhuǎn)換為非組合BCD碼 STOSB LOOP IN1 MOV DL,‘+’ ;輸出加號(hào),以分隔2個(gè)加數(shù) MOV AH,2 INT 21H MOV CX,2 LEA DI,NUM2 ;輸入加數(shù)2 IN2: MOV AH,01H INT 21H AND AL,0FH STOSB LOOP IN2 MOV DL,‘=’ ;輸出等號(hào),分隔加數(shù)與結(jié)果 MOV AH,02H INT 21H LEA SI,NUM1 INC SI ;SI指向加數(shù)1的低位 LEA BX,NUM2 INC BX ;BX指向加數(shù)2的低位 LEA DI,SUM ADD DI,2 ;DI指向結(jié)果的末單元 STD ;自動(dòng)減量,由低向高相加 MOV CX,2 ;相加次數(shù) CLC ;清進(jìn)位,準(zhǔn)備用ADC AD: LODSB ;取加數(shù)1的低位,修改SI ADC AL,[BX] ;2數(shù)相加,帶進(jìn)位 AAA ;未組合BCD碼的十進(jìn)制調(diào)整PUSHF ADD AL,30H ;BCD碼向ASCII碼轉(zhuǎn)換POPF;因未組合BCD碼的高4位為0,故加30H不會(huì)影響CF STOSB ;存和,并修改DI。CF不變DEC BX ;指向加數(shù)2的高位。CF不變 LOOP AD ADC BYTEPTR[DI],30H ;BCD碼向ASCII碼轉(zhuǎn)換;高位相加若產(chǎn)生進(jìn)位,則使SUM單元加1(表示百位),故使用ADC指令 LEA DX,SUM ;輸出結(jié)果 MOV AH,09H INT 21H MOV AH,4CH ;返回DOS INT 21HCODE ENDS END FIRST簡(jiǎn)析:按照本參考程序,屏幕顯示格式如“73+46=119”的樣式?;舅悸肥牵菏紫日{(diào)用DOS功能,從鍵盤(pán)輸入2個(gè)0~9之間的數(shù)字(字符串輸入的AH調(diào)用號(hào)為10,單個(gè)字符輸入的AH調(diào)用號(hào)為1),然后向CRT輸出“+”(單個(gè)字符輸出的AH調(diào)用號(hào)為2);再由鍵盤(pán)輸入2個(gè)數(shù),然后輸出“=”。將兩次輸入的數(shù)分別作為2個(gè)加數(shù)相加,得到的和經(jīng)十進(jìn)制調(diào)整后,向CRT輸出(字符串輸出的AH調(diào)用號(hào)為9)。以下幾處需進(jìn)行碼制轉(zhuǎn)換:調(diào)用單個(gè)字符輸入功能后,AL中的出口參數(shù)為各數(shù)字鍵所對(duì)應(yīng)的ASCII碼,故應(yīng)轉(zhuǎn)換為BCD碼才能進(jìn)行加運(yùn)算。轉(zhuǎn)換方式:與0FH相與,所得為未組合BCD碼。2個(gè)未組合BCD碼相加,和應(yīng)該用AAA指令進(jìn)行十進(jìn)制調(diào)整,調(diào)整結(jié)果反映在累加器和標(biāo)志位CF上。加法完成之后,應(yīng)將結(jié)果逐位轉(zhuǎn)換為ASCII碼,才可以向CRT輸出。做加法運(yùn)算時(shí)還應(yīng)注意:加數(shù)輸入之后,先取兩個(gè)低位相加,再取高位相加(同時(shí)加上低位相加產(chǎn)生的進(jìn)位),需仔細(xì)檢查指針。若用循環(huán)結(jié)構(gòu)完成加運(yùn)算,則進(jìn)入循環(huán)之前必須清CF,方可在循環(huán)體中使用ADC指令。有一個(gè)長(zhǎng)度不超過(guò)100字節(jié)的字符串,以回車(chē)符結(jié)尾。編程統(tǒng)計(jì)其中非空格的字符個(gè)數(shù),并將統(tǒng)計(jì)結(jié)果以自擬格式顯示在CRT上。答:一種可能的程序如下實(shí)現(xiàn):DATA SEGMENT STR DB ‘It’’safineday,isn’’tit’,0DH,‘$’ ;依題意以0DH為結(jié)束符。加上“$”便于顯示整個(gè)字符串 COUNT EQU $-STR-2 ;串長(zhǎng)中不包括結(jié)束符和“$”符號(hào) NUM DB 0 ;置統(tǒng)計(jì)結(jié)果初值為0 STR1 DB ‘Thenumberofnon-spacecharactorsis’,‘$’ DATA ENDS STACK SEGMENTPARASTACK‘STACK’ DB 100DUP() STACK ENDS CODE SEGMENT ASSUME CS:CODE,SS:STACK,DS:DATA,ES:DATA START: MOV AX,DATA MOV DS,AX MOV ES,AX ;有SCAS指令,需用ES LEA DI,STR CLD MOV AL,20H ;關(guān)鍵字符(空格) MOV CX,COUNT NEXT: SCASB JE SKIP ;是空格,跳過(guò)下一句 INC NUM ;非空格字符,NUM加1 SKIP: LOOP NEXT LEA DX,STR ;顯示原字符串 MOV AH,09H INT 21H MOV DL,0AH ;顯示換行符,以便顯示另一字串 MOV AH,2 INT 21H LEA DX,STR1 ;顯示另一個(gè)字符串 MOV AH,9 INT 21H ;將16進(jìn)制的統(tǒng)計(jì)結(jié)果轉(zhuǎn)換為十進(jìn)制數(shù),再轉(zhuǎn)換為兩個(gè)ASCII碼輸出 MOV AL,NUM MOV AH,0 ;AX中為待轉(zhuǎn)換16進(jìn)制數(shù) MOV BL,10 DIV BL ;AX/BL ;商(十位)在AL中,余數(shù)(個(gè)位)在AH中,均為未組合BCD碼 PUSH AX ;入棧保護(hù) OR AL,30H ;將十位數(shù)轉(zhuǎn)換為ASCII碼 MOV DL,AL ;送CRT顯示 MOV AH,2 INT 21H POP AX ;恢復(fù)除法運(yùn)算
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 網(wǎng)絡(luò)客服工作總結(jié)及時(shí)解答解決用戶(hù)問(wèn)題
- 食品行業(yè)食品安全培訓(xùn)總結(jié)
- AIDS抗病毒治療課件
- 2025年全球及中國(guó)血流動(dòng)力學(xué)監(jiān)測(cè)解決方案行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025-2030全球新能源交流繼電器行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025-2030全球剛性墻庇護(hù)所行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025年全球及中國(guó)游戲視頻背景音樂(lè)行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025-2030全球滑移轉(zhuǎn)向巖石拾取器行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025-2030全球甲氧氯普胺片行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025年全球及中國(guó)工業(yè)級(jí)硅酸鉀行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 充電樁知識(shí)培訓(xùn)課件
- 2025年七年級(jí)下冊(cè)道德與法治主要知識(shí)點(diǎn)
- 2025年交通運(yùn)輸部長(zhǎng)江口航道管理局招聘4人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 老年髖部骨折患者圍術(shù)期下肢深靜脈血栓基礎(chǔ)預(yù)防專(zhuān)家共識(shí)(2024版)解讀
- 偏癱足內(nèi)翻的治療
- 藥企質(zhì)量主管競(jìng)聘
- 信息對(duì)抗與認(rèn)知戰(zhàn)研究-洞察分析
- 心腦血管疾病預(yù)防課件
- 手術(shù)室專(zhuān)科護(hù)士工作總結(jié)匯報(bào)
- 2025屆高三聽(tīng)力技巧指導(dǎo)-預(yù)讀、預(yù)測(cè)
- 蘇州市2025屆高三期初陽(yáng)光調(diào)研(零模)政治試卷(含答案)
評(píng)論
0/150
提交評(píng)論