微型計(jì)算機(jī)技術(shù):第4章-5 習(xí)題_第1頁(yè)
微型計(jì)算機(jī)技術(shù):第4章-5 習(xí)題_第2頁(yè)
微型計(jì)算機(jī)技術(shù):第4章-5 習(xí)題_第3頁(yè)
微型計(jì)算機(jī)技術(shù):第4章-5 習(xí)題_第4頁(yè)
微型計(jì)算機(jī)技術(shù):第4章-5 習(xí)題_第5頁(yè)
已閱讀5頁(yè),還剩13頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第四章 匯編語(yǔ)言程序設(shè)計(jì) 匯編語(yǔ)言程序設(shè)計(jì)概述 匯編語(yǔ)言基本語(yǔ)法 匯編語(yǔ)言程序設(shè)計(jì) BIOS及DOS功能調(diào)用 匯編語(yǔ)言程序設(shè)計(jì)實(shí)例【例】 下面的程序段的功能是把DA1數(shù)據(jù)區(qū)的數(shù)09轉(zhuǎn)換為ASCII碼,試完善本程序段。DA1DB 0,1,2,3,4,5,6,7,8,9ASCIDB10 DUP(?)CONTASCIDA1LEASI,DA1LEADI,ASCILOP1:MOVAL,SIMOVDI,ALINCSIINCDILOOPLOP1MOVCX,CONTORAL,30H【例】BUFFDBABD$QC%$AXYZCONTEQU$BUFFCLDLEADI,BUFFMOVCX,CONTMOVAL,$XO

2、RDX,DXNEXT:REPNZSCASB;搜索BUFF中的“$”CMPCX,0JZK1INCDX;$”的個(gè)數(shù)加1 JMPNEXTK1:上述程序段運(yùn)行后,DX中的值表示的意義是什么?DX中是$出現(xiàn)的次數(shù)【例】設(shè)在DAT單元存放一個(gè)-9+9的字節(jié)數(shù)據(jù),在SQRTAB的數(shù)據(jù)區(qū)中存放09平方值,請(qǐng)用直接查表方法編寫(xiě)一個(gè)子程序,在SQRTAB中查找出DAT單元中數(shù)據(jù)對(duì)應(yīng)的平方值送SQR單元。并寫(xiě)出主程序的調(diào)用方式。DATASEGMENTDATDB-8SQRTABDB0,1,4,9,16,25,36,49,64,81SQRDB?DATAENDSMAIN表:BXSQRTAB表:ALDATCALL SQRP

3、SQRAL結(jié)束NEG ALAL=0?查表返回SQRPYNDATASEGMENTDATDB-8SQRTABDB0,1,4,9,16,25,36,49,64,81SQRDB?DATAENDSCODESEGMENTASSUME CS:CODE,DS:DATAMAIN:MOVAX,DATAMOVDS,AXLEABX,SQRTABMOVAL,DATCALLSQRPMOVSQR,ALMOVAH,4CHINT21HSQRPPROCCMP AL,0JGE NEXTNEG ALNEXT:XLATRETSQRPENDPCODEENDSENDMAIN【例】 畫(huà)出下列語(yǔ)句中的數(shù)據(jù)在存儲(chǔ)器中的存儲(chǔ)情況。ARRAYBDB

4、12,34H,ABCD,2 DUP(?,2)ARRAYW DW1234H,AB,CD,?,2 DUP(?,2)ARRAYB12HARRAYB+134HARRAYB+241HARRAYB+342HARRAYB+443HARRAYB+544HARRAYB+6?ARRAYB+702HARRAYB+8?ARRAYB+902HARRAYW34HARRAYW+1002HARRAYW+112HARRAYW+1100HARRAYW+242HARRAYW+12?ARRAYW+341HARRAYW+13?ARRAYW+444HARRAYW+1402HARRAYW+543HARRAYW+1500HARRAYW+6?

5、ARRAYW+7?ARRAYW+8?ARRAYW+9?【例】程序中數(shù)據(jù)定義如下:DATA1 DW ?DATA2 DB 32 DUP (?)DATA3 DD ?DLENGTH EQU $DATA1試問(wèn)DLENGTH的值是多少?DATA1 占用 2 字節(jié)DATA2 占用32字節(jié)DATA3 占用 4 字節(jié)DLENGTH = 當(dāng)前地址DATA1的地址也等于DATA1,DATA2,DATA3所占用地址的總和即:DLENGTH 38【例】程序中數(shù)據(jù)定義如下:BUFFERBDB ABCDEFRESULTDB ?BUFFERWDW 30 DUP(?)寫(xiě)出以下指令的執(zhí)行結(jié)果:MOV AX,TYPE RESULT

6、;AX=MOV BX,TYPE BUFFERW;BX=MOV CX,LENGTH BUFFERB;CX=MOVDX,LENGTH BUFFERW;DX=MOV AX,SIZE RESULT;AX=MOV BX,SIZE BUFFERW ;BX=12130160【例】設(shè)XX=1103H,則執(zhí)行下列指令后AX和CX各為多少?若XX=03H,則結(jié)果又如何?MOVAX,XX AND 0FFHMOV CX,XX EQ 1103HMOVAX,XX AND 0FFHMOV CX,XX EQ 1103H XX1103H:MOVAX,XX AND 0FFHMOV CX,XX EQ 1103H XX03H:;AX

7、=0003H;CX=0FFFFH;AX=0003H;CX=0000H【例】編寫(xiě)程序段計(jì)算下面表達(dá)式的值(各變量均為字節(jié)變量):Z(XY)/10W)4MOV AL,XSUB AL,YCBWMOV BL,10DIV BLADD AL,WMOV BL,4MUL AL,BLMOV Z,AX【例】?jī)蓚€(gè)ASCII碼數(shù)串定義如下:STRl DB 352678STR2 DB 123400編寫(xiě)程序段,計(jì)算STR1+STR2,要求結(jié)果仍然是ASCII碼串。解:用ASCII碼表示的數(shù)串相加,首先應(yīng)將每位上的符號(hào)由ASCII轉(zhuǎn)換為對(duì)應(yīng)的數(shù)值,然后進(jìn)行加法運(yùn)算,并利用非壓縮BCD碼調(diào)整指令進(jìn)行調(diào)整后保存。運(yùn)算以循環(huán)方式

8、從最低一位開(kāi)始,直到最高位。設(shè)結(jié)果存放在地址DEST中。 LEA DI,STR1+5 LEA SI,STR2+5 MOV BX,DEST+6 MOV CX,6 CLCLOP:MOV AL,SI MOV AH,DIPUSHF AND AX,0F0F0HPOPF ADC AL,AH AAA PUSHF OR AL,0 MOV BX,AL DEC DI DEC SI DEC BX POPF LOOP LOP JNC OVER MOV BX,1OVER:MOV AH,4CH INT 21H【例】下面的程序是實(shí)現(xiàn)從鍵盤輸入10個(gè)一位十進(jìn)制數(shù)后累加,累加和以非壓縮BCD碼形式存放在AH(高位)和AL(低位

9、)中。 試把程序段中所空缺的指令填上。XORBX,BX LOP:MOVAH,01HINT 21H MOVAH,BHADDAL,BLMOVBX,AXLOOP LOPMOVCX,10AAAANDAL,0FH【例】設(shè)A、B是長(zhǎng)度為20的字節(jié)數(shù)組,用串操作指令編寫(xiě)程序?qū)崿F(xiàn)A、B兩組數(shù)據(jù)的相互交換,試完善本程序。DATASEGMENT A DB “ABCDEFGHIJKLMNOPQR” ORG 14H B DB 1,2,3,4,5,6,7,8,9,0AH,0BHDATA ENDS LEA SI,A LEA DI,B MOV CX,10LOP1:MOVAX,SI MOV SI,AX ADD DI,2 LO

10、OP LOPl XCHGAX,DIADD SI,2【例】編寫(xiě)完整程序,將內(nèi)存中某數(shù)據(jù)塊的正數(shù)和負(fù)數(shù)分開(kāi),分別將這些正數(shù)和負(fù)數(shù)送同一數(shù)據(jù)段的兩個(gè)緩沖區(qū)中,并顯示正數(shù)和負(fù)數(shù)的個(gè)數(shù)。 解:首先用循環(huán)方法對(duì)每個(gè)數(shù)據(jù)進(jìn)行正負(fù)判斷,根據(jù)判斷結(jié)果將數(shù)據(jù)存放到不同位置,并用計(jì)數(shù)器對(duì)正數(shù)和負(fù)數(shù)個(gè)數(shù)進(jìn)行計(jì)數(shù),最后將計(jì)數(shù)結(jié)果顯示出來(lái)。設(shè)數(shù)據(jù)段內(nèi)容如下:DATA SEGMENT BUF DB . ;原數(shù)據(jù)串 N = $BUF PLUS DB N DUP(?);存放正數(shù) NEGTDB N DUP(?) ;存放負(fù)數(shù)DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART:MOV

11、AX,DATA MOV DS,AX LEA SI,BUF LEA DI,PLUS LEA BX,NEGT MOV CX,NLOP:MOV AL,SIINCSI CMP AL,0 JA POS MOV BX,AL INC BX JMP AGAINPOS:MOV DI,AL INC DIAGAIN:LOOP LOPSUB BX,OFFSET NEGTMOVDX,BXOR DL,0MOV AH,2INT 21HSUB DI,OFFSET PLUSMOV DX,DIOR DL,0MOV AH,2INT 21HMOV AH,4CHINT 21H【例】有子程序定義如下:SUB1 PROC TEST AL,80H JE PLUS TEST BL,80H JNE EXIT0 JMP CHANGEPLUS:TEST BL,80H JE EXIT0CHANGE:XCHGAL,BLEXIT0:RETSUB1ENDP (1) 子程序的功能是什么? (2) 如調(diào)用子程序前AL=88H,BL=97H,那么返回主程序時(shí),AL和BL各等于多少?;測(cè)試AL最高位;當(dāng)AL最高位為0時(shí)跳到PLUS;AL最高位為1時(shí)繼續(xù)執(zhí)行;BL最高位為1時(shí)跳到EXIT0;BL最高位為0時(shí)跳到CHANGE;測(cè)試BL最高位;BL最高位為0時(shí)跳到EXIT0(1) 當(dāng)AL0且

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論