微機(jī)原理及匯編指導(dǎo)書(shū)(2012)_第1頁(yè)
微機(jī)原理及匯編指導(dǎo)書(shū)(2012)_第2頁(yè)
微機(jī)原理及匯編指導(dǎo)書(shū)(2012)_第3頁(yè)
微機(jī)原理及匯編指導(dǎo)書(shū)(2012)_第4頁(yè)
微機(jī)原理及匯編指導(dǎo)書(shū)(2012)_第5頁(yè)
已閱讀5頁(yè),還剩17頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、匯編語(yǔ)言程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)書(shū)微機(jī)原理及匯編語(yǔ)言程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)書(shū) 苗暹 胡寧亞計(jì)算機(jī)實(shí)驗(yàn)中心目 錄實(shí)驗(yàn)一 DEBUG的使用142實(shí)驗(yàn)二 數(shù)制轉(zhuǎn)換程序146實(shí)驗(yàn)三 數(shù)組排序程序147實(shí)驗(yàn)四 數(shù)據(jù)的輸入與輸出程序149實(shí)驗(yàn)五 子程序設(shè)計(jì)150實(shí)驗(yàn)六 宏調(diào)用程序設(shè)計(jì)151實(shí)驗(yàn)一 DEBUG的使用【實(shí)驗(yàn)?zāi)康摹?學(xué)習(xí)使用DEBUG調(diào)試程序的各種命令。2掌握8088/8086指令系統(tǒng)-數(shù)據(jù)傳送指令、算術(shù)指令。3掌握用DEBUG調(diào)試程序的方法。4掌握8088/8086 CPU寄存器的用途和存儲(chǔ)器組織及它們之間的關(guān)系。5掌握內(nèi)存操作數(shù)及尋址方法。6掌握匯編語(yǔ)言偽操作:BYTE PTR,WORD PTR。7熟悉在

2、PC機(jī)上建立、匯編、連接、調(diào)試和運(yùn)行匯編語(yǔ)言程序的過(guò)程。8掌握數(shù)據(jù)傳送、算術(shù)運(yùn)算、BCD碼調(diào)整和循環(huán)指令的用法,掌握字符顯示的方法。【實(shí)驗(yàn)性質(zhì)】驗(yàn)證性實(shí)驗(yàn)(學(xué)時(shí)數(shù):2H)【實(shí)驗(yàn)內(nèi)容】一、DEBUG 命令的使用1.敲 DEBUG 進(jìn)入 DEBUG 環(huán)境,顯示提示符 '_ '。2.用命令 D100 10F 觀察內(nèi)存中的16進(jìn)制碼及屏幕右邊的ASCII字符。3.用命令 E100 30 31 32 3F 將30H3FH寫(xiě)入地址為100H開(kāi)始的內(nèi)存單元中,再用D命令觀察結(jié)果,看鍵入的16進(jìn)制數(shù)是什么字符的ASCII碼?4.用命令 F100 L0F 'A' 將'A&

3、#39;的ASCII碼填入內(nèi)存,用D命令查看結(jié)果。5.用命令 F110 11F 41 將41H 填入內(nèi)存,用D命令觀察結(jié)果并比較。6.用R 命令檢查各寄存器內(nèi)容,特別注意AX,BX,CX,DX,IP及標(biāo)志位中ZF,CF和AF的內(nèi)容。7.用R命令將AX,BX內(nèi)容改寫(xiě)為1234H及5678H。8.用H命令檢查下列各組16進(jìn)制數(shù)加減結(jié)果并和你的手算結(jié)果比較:(1)34H,22H (2)56H,78H (3)A5,79H(4)1284H,5678H(5)A758,347FH二、8088/8086常用指令練習(xí)1.傳送指令1)用A命令在內(nèi)存100H處鍵入下列內(nèi)容:MOVAX,1234MOVBX,5678X

4、CHGAX,BXMOVAH,34MOVAL,56MOVCX,75ABXCHGAX,CX2)用U命令檢查鍵入的程序,特別注意左邊的機(jī)器碼。3)用T命令逐條運(yùn)行這些指令,每運(yùn)行一行檢查并記錄有關(guān)寄存器及IP的變化情況。并注意標(biāo)志位有無(wú)變化。2.加減法指令:1)用A命令在內(nèi)存200H處鍵入下列內(nèi)容:MOVAH,34MOVAL,2EADDAL,AHSUBAL,78MOVCX,1234MOVDX,5678ADDCX,DXSUBCX,AXSUBCX,CX2)用U命令檢查鍵入的程序及對(duì)應(yīng)的機(jī)器碼。3)用T命令逐條運(yùn)行這些指令,檢查并記錄有關(guān)寄存器及ZF情況。思考題: 這次運(yùn)行還是打入T,行不行?如何單步運(yùn)行

5、上述小程序?用R命令檢查一下IP的內(nèi)容。注意T命令與IP的關(guān)系。3.帶進(jìn)位加減法:1)用A命令在內(nèi)存300H處鍵入下列內(nèi)容,并用U命令檢查:MOVAH,12MOVAL,89MOVCH,56MOVCL,98ADDAL,CLADCAH,CHMOVDH,A7MOVDL,58SUBDL,7FSBBDH,342)用T命令逐條運(yùn)行這些指令,檢查并記錄有關(guān)寄存器及CF內(nèi)容。3)上面這段程序若改用16位操作指令達(dá)到同樣結(jié)果,怎么改?試修改并運(yùn)行之。4.BCD碼加減法1)內(nèi)容:MOVAL,58ADDAL,25DAA2)要求:用A 命令鍵入,U命令檢查,T命令逐條運(yùn)行并記錄有關(guān)寄存器及AF內(nèi)容。三、內(nèi)存操作數(shù)及各

6、種尋址方式使用: 1)用A命令在內(nèi)存400H處鍵入下列內(nèi)容,并用U命令檢查:MOVAX,1234 MOV1000,AXMOVBX,1002MOVBYTE PTRBX,20MOVDL,39INCBXMOVBX,DLDECDLMOVSI,3MOVBX+SI,DLMOVBX+SI+1,DLMOVWORD PTRBX+SI+2,28462)用T命令逐條運(yùn)行這些指令,每運(yùn)行一條有關(guān)內(nèi)存操作數(shù)的指令,要用D命令檢查并記錄有關(guān)內(nèi)存單元的內(nèi)容并注明是什么尋址方式。注意:D命令顯示結(jié)果中右邊的ASCII字符及雙字節(jié)數(shù)存放法。思考題: 有關(guān)指令中BYTE PTR及WORD PTR偽操作不加行不行?試一試。 四、D

7、EBUG環(huán)境下匯編運(yùn)行程序方法用A命令匯編程序,編程完成將DS:1000開(kāi)始的10個(gè)字節(jié)的內(nèi)存單元的內(nèi)容相加,并把相加結(jié)果存放在DS:100A 內(nèi)存單元中,用DEBUG調(diào)試運(yùn)行該程序,并察看運(yùn)行結(jié)果。內(nèi)容: MOV CX,0AH MOV AL,0 MOV BX,1000LL: ADD AL,BX INC BX DEC CX JNZ LL MOV BX,AL INT 3步驟:1)用A命令將程序鍵入到100H開(kāi)始的內(nèi)存中,在鍵入時(shí)記下標(biāo)號(hào)LL的實(shí)際地址,在鍵入JNZ指令時(shí)LL用實(shí)際地址值代替。2)用U命令檢查鍵入的程序及對(duì)應(yīng)的機(jī)器碼。3)用E1000 01 02 03 04 05 06 07 08

8、 09 0A將1000H開(kāi)始的前10個(gè)內(nèi)存單元的內(nèi)容修改為01,02,03,04,050A,用D命令查看修改結(jié)果。4)用T命令逐條運(yùn)行上述小程序指令,檢查并記錄有關(guān)寄存器、存儲(chǔ)單元內(nèi)容及ZF情況。5)用F2000 L0A 02 03 04 05 0B 將1000H開(kāi)始的10 個(gè)內(nèi)存單元的內(nèi)容修改為02,03,04,050B。用D命令查看修改結(jié)果。6)用G=100 全速運(yùn)行上述小程序,用D1000 100F 查看運(yùn)行結(jié)果。思考題: 可否隨意在DEBUG提示符“-”后不帶參數(shù)發(fā)出命令G?什么情況下使用命令G時(shí),可不用“=”給出執(zhí)行的首地址?五、兩個(gè)多位十進(jìn)制數(shù)相加要求:將下面程序在匯編平臺(tái)下,完整

9、地進(jìn)行匯編、連接、運(yùn)行,然后用DEBUG軟件調(diào)入可執(zhí)行文件到內(nèi)存,用反匯編命令查看實(shí)際程序及數(shù)據(jù)區(qū)內(nèi)容,用t命令逐條執(zhí)行,以觀察各寄存器及數(shù)據(jù)區(qū)內(nèi)存的數(shù)據(jù)變化情況,然后使用p命令和g命令執(zhí)行,以觀察執(zhí)行過(guò)程有何特點(diǎn)。將兩個(gè)5位十進(jìn)制數(shù)相加,要求被加數(shù)(本題選47193)和加數(shù)(本題選28056)均以ASCII碼形式各自順序存放在以DATAl和DATA2為首的5個(gè)內(nèi)存單元中(低位在前),結(jié)果送回以DATA3為首的5個(gè)內(nèi)存單元中(低位在前),并顯示相加的結(jié)果。實(shí)驗(yàn)程序和結(jié)果如下:DATASEGMENTDATA1DB 33H,39H,31H,37H,34H ;存放被加數(shù)47193,ASCII碼形式,

10、低位在前DATA2DB 36H,35H,30H,38H,32H ;存放加數(shù)28056,ASCII碼形式,低位在前DATA3 DB 5 DUP(?) ;留出5個(gè)存放結(jié)果的單元DATAENDSCODESEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATA MOV DS,AXMOV CX,5 ;循環(huán)次數(shù)置5,5個(gè)位要相加5次MOV SI,0 ;SI放地址位移量,每個(gè)數(shù)的第一字節(jié)地址位移量為0CLC ;CF清0,防止第1個(gè)字節(jié)相加時(shí)ADC指令多加CF中可能的1NEXT:MOV AL,DATA1SI ;取被加數(shù)一個(gè)字節(jié)送AL,DATA1偏移地址SI為有效地址ADC

11、AL,DATA2SI ;AL加數(shù)對(duì)應(yīng)字節(jié)CF(低位相加時(shí)可能的進(jìn)位)結(jié)果送ALAAA ;AL中兩字節(jié)相加的和調(diào)整成非壓縮的BCD碼,進(jìn)位在CF中MOV DATA3SI,AL ;結(jié)果送入DATA3對(duì)應(yīng)字節(jié)單元中INC SI ;地址位移量加1指向高一位字節(jié)單元 LOOP NEXT ;5次未到,繼續(xù)循環(huán)MOV SI,5 ;顯示5個(gè)位,SI中的數(shù)既是循環(huán)次數(shù)又作地址位移量DISP:ADD DATA3SI-1,30H ;將結(jié)果從高位單元開(kāi)始把非壓縮的BCD碼變成ASCII碼 MOV DL,DATA3SI-1 ;將ASCII碼送DL以滿(mǎn)足2號(hào)功能調(diào)用的規(guī)定要求 MOV AH,2 ;功能號(hào)送AH INT 2

12、1H ;調(diào)用2號(hào)功能,顯示一位數(shù)字 DEC SI ;次數(shù)減1 JNZ DISP ;5次未到,繼續(xù)循環(huán) MOV AH,4CH ;功能號(hào)送AH INT 21H ;調(diào)用4CH號(hào)功能,返回DOSCODEENDS END START運(yùn)行結(jié)果:75249思考題:1.上述程序只顯示了相加的結(jié)果,沒(méi)有顯示被加數(shù)和加數(shù),如果在上述程序的基礎(chǔ)上將顯示格式改為471932805675249,則程序如何修改?2.上述程序沒(méi)有考慮運(yùn)算結(jié)果最高位有進(jìn)位的情況,如果考慮可能產(chǎn)生的進(jìn)位,則要顯示完整的結(jié)果,程序如何修改?(提示:INC和LOOP指令均不影響CF)【報(bào)告要求】1.列出8086常用指令練習(xí)部分的逐條運(yùn)行記錄。2.

13、列出DEBUG下調(diào)試運(yùn)行小程序的運(yùn)行步驟和運(yùn)行結(jié)果。3.回答思考題。附:DEBUG 命令1.打 DEBUG 進(jìn)入 DEBUG,顯示提示苻 '_ '。2.退出DEBUG命令:Q3.顯示內(nèi)存命令:D 起始地址 結(jié)束地址4.修改內(nèi)存命令:E 起始地址,連續(xù)修改打空格鍵。打回車(chē)鍵退出E命令。5.檢查寄存器命令:R標(biāo)志位顯示10CFCYNCZFZRNZSFNGPLAFACNAOFOVNVPFPEPODFDNUPIFEIDI6.修改寄存器命令:R 寄存器名7.小匯編命令:A 起始地址,不輸入指令打回車(chē)鍵退出A命令。8.反匯編命令:U 起始地址 結(jié)束地址9.文件命名命令:N 盤(pán)號(hào):文件名10

14、.讀文件命令:L 內(nèi)存地址11.寫(xiě)文件命令:W 內(nèi)存地址10.讀扇區(qū)命令:L 內(nèi)存地址 盤(pán)號(hào)(0-A:,1-B:) 扇區(qū)號(hào) 扇區(qū)數(shù)11.寫(xiě)扇區(qū)命令:W 內(nèi)存地址 盤(pán)號(hào) 扇區(qū)號(hào) 扇區(qū)數(shù)12.運(yùn)行命令:G=起始地址 結(jié)束(斷點(diǎn))地址13.單步命令:T=起始地址 運(yùn)行指令數(shù),進(jìn)入子程序內(nèi)部。14.單步命令:P=起始地址 運(yùn)行指令數(shù),不進(jìn)入子程序內(nèi)部。15.內(nèi)存搬家命令:M 起始地址 結(jié)束地址 目的地址實(shí)驗(yàn)二 數(shù)制轉(zhuǎn)換程序【實(shí)驗(yàn)?zāi)康摹?掌握匯編語(yǔ)言程序結(jié)構(gòu)。2掌握建立、匯編、鏈接、調(diào)試和運(yùn)行匯編程序的過(guò)程。 3掌握DOS功能調(diào)用 INT 21H 02號(hào)功能字符顯示輸出方法。4掌握INT 21H 4C號(hào)

15、功能返回系統(tǒng)的方法。【實(shí)驗(yàn)性質(zhì)】驗(yàn)證性實(shí)驗(yàn)(學(xué)時(shí)數(shù):2H)【實(shí)驗(yàn)內(nèi)容】一、 完成一個(gè)十六位二進(jìn)制數(shù)到十六進(jìn)制數(shù)的轉(zhuǎn)換操作程序設(shè)計(jì)。參考程序:;將二進(jìn)制數(shù)一邊轉(zhuǎn)換成十六進(jìn)制數(shù)一邊顯示(用2號(hào)功能調(diào)用)DATASEGMENTBUFADW1111001000110100B;F234HDATAENDSCODESEGMENTASSUME CS:CODE,DS:DATABEG:MOV AX,DATAMOV DS,AXMOV DX,BUFAMOV CH,4;循環(huán)控制十六進(jìn)制數(shù)顯示位數(shù)MOV CL,4ROTATE: ROL DX,CL;循環(huán)左移4位,將高位十六進(jìn)制數(shù)移到低位 MOV BX,DX;保護(hù)移動(dòng)后的數(shù)

16、AND DX,0FH;屏蔽掉高位保留該低位數(shù)CMP DL,9JG LADD DL,30H;轉(zhuǎn)換成ASCII碼MOV AH,2;送顯示INT 21HJMP NEXTL:ADD DL,37HMOV AH,2INT 21HNEXT: MOV DX,BXDEC CHJNZ ROTATEMOV AH,4CHINT 21HCODE ENDSEND START二、把上題改造成COM文件的編程格式,匯編、鏈接和運(yùn)行調(diào)試該程序。參考程序:CODESEGMENTASSUME CS:CODEORG 100H BEG:JMP STARTBUFADW0001001000110100B;1234H(用戶(hù)程序數(shù)據(jù)區(qū))STA

17、RT:MOV DX,BUFAMOV CH,4;循環(huán)控制十六進(jìn)制數(shù)顯示位數(shù)MOV CL,4ROTATE: ROL DX,CL;循環(huán)左移4位,將高位十六進(jìn)制數(shù)移到低位 MOV BX,DX;保護(hù)移動(dòng)后的數(shù)AND DX,0FH;屏蔽掉高位保留該低位數(shù)CMP DL,9JG LADD DL,30H;轉(zhuǎn)換成ASCII碼MOV AH,2;送顯示INT 21HJMP NEXTL:ADD DL,37HMOV AH,2INT 21HNEXT: DEC CHMOV DX,BXJNZ ROTATEMOV AH,4CHINT 21HCODE ENDSEND BEG三、參照上述程序完成一個(gè)十六位二進(jìn)制數(shù)到十進(jìn)制數(shù)的轉(zhuǎn)換操作

18、程序設(shè)計(jì)。四、加分題:完成從鍵盤(pán)輸入一個(gè)任意十六位二進(jìn)制數(shù)到十六進(jìn)制數(shù)的轉(zhuǎn)換操作程序設(shè)計(jì)。提示:在數(shù)據(jù)區(qū)定義19個(gè)字節(jié)的字符串區(qū),用INT 21H 的10#功能,進(jìn)行字符串輸入,判斷實(shí)際輸入的字節(jié)數(shù)是否為16個(gè),每個(gè)字節(jié)的內(nèi)容是否為30H或31H,不是,則提示重新輸入或退出,是,則把該區(qū)域的16個(gè)ASCII碼30H、31H的字符從低位到高位(或相反順序)轉(zhuǎn)換成1010110101110111的形式,用上述程序進(jìn)行轉(zhuǎn)換輸出。思考題:1)若在源程序中把INT 21H的'H'省去,會(huì)產(chǎn)生什么現(xiàn)象?2)把 INT 21H 4CH號(hào)功能改為 INT 20H,行不行?3)從鍵盤(pán)輸入的二進(jìn)制

19、ASCII字符串,在轉(zhuǎn)換成十六進(jìn)制數(shù)據(jù)時(shí),有哪幾大步驟?【實(shí)驗(yàn)要求】1.列出自編程序的程序清單,并加適當(dāng)注釋。2.寫(xiě)出匯編,連接及調(diào)試程序時(shí)產(chǎn)生的錯(cuò)誤,其原因及解決辦法。3.總結(jié)EXE文件和COM文件的編程格式。4.回答思考題。實(shí)驗(yàn)三 數(shù)組排序程序【實(shí)驗(yàn)?zāi)康摹?. 循環(huán)控制條件的設(shè)計(jì)。 2. 存儲(chǔ)器操作數(shù)的尋址方式。3. 對(duì)內(nèi)存的數(shù)據(jù)處理方法。【實(shí)驗(yàn)性質(zhì)】驗(yàn)證性實(shí)驗(yàn)(學(xué)時(shí)數(shù):3H)【實(shí)驗(yàn)內(nèi)容】 1、在內(nèi)存緩沖區(qū)存放10個(gè)無(wú)序整數(shù),按照從小到大的順序進(jìn)行排序,用debug查看排序結(jié)果。參考程序:DATASEGMENTST_ADDW 23,78,45,99,128,64,32,200,1,0DAT

20、A ENDSPROGRAMSEGMENTMAIN PROC FARASSUME CS:PROGRAM,DS:DATASTART:PUSH DSSUB AX,AXPUSH AXMOV AX,DATAMOV DS,AXMOV CX,10DEC CXLOOP1: MOV DI,CXMOV BX,0LOOP2:MOV AX,ST_ADBXCMP AX,ST_ADBX+2JGE COTINUEXCHG AX,ST_ADBX+2MOV ST_ADBX,AXCOTINUE:ADD BX,2LOOP LOOP2MOV CX,DILOOP LOOP1RETMAINENDPPROGRAM ENDSEND STAR

21、T2、加分題:從鍵盤(pán)輸入10個(gè)無(wú)序10進(jìn)制整數(shù),對(duì)這10個(gè)數(shù)進(jìn)行排序,將排序后的結(jié)果送屏幕顯示。3、加分題:從鍵盤(pán)輸入一個(gè)10進(jìn)制整數(shù),插入前面已整序的10個(gè)數(shù)中,要求插入后的11個(gè)數(shù)也是整序好的,將插入后的結(jié)果送屏幕顯示。【報(bào)告要求】1. 給出該程序的流程圖。2. 給出調(diào)試通過(guò)的自編程序清單和調(diào)試記錄3. 寫(xiě)出實(shí)驗(yàn)體會(huì)。實(shí)驗(yàn)四 從鍵盤(pán)輸入數(shù)據(jù)并顯示實(shí)驗(yàn)【實(shí)驗(yàn)?zāi)康摹?掌握鍵盤(pán)輸入字符的方法和十六進(jìn)制數(shù)字字符的ASCII碼轉(zhuǎn)換為二進(jìn)制數(shù)的原理。2掌握子程序定義和調(diào)用的方法。3掌握循環(huán)移位指令的用法和無(wú)符號(hào)數(shù)比較大小的方法。【實(shí)驗(yàn)性質(zhì)】驗(yàn)證性實(shí)驗(yàn)(學(xué)時(shí)數(shù):2H)【實(shí)驗(yàn)內(nèi)容】從鍵盤(pán)上輸入4位十六進(jìn)制

22、數(shù),將其轉(zhuǎn)換為16位二進(jìn)制數(shù)并在顯示器上顯示出來(lái)。要求輸入的數(shù)字字符串以回車(chē)鍵結(jié)束。如果輸入的數(shù)字超過(guò)4個(gè),則以最后輸入的4個(gè)為準(zhǔn)。若按下的鍵不是十六進(jìn)制數(shù)字字符,則顯示出錯(cuò)信息。參考程序:【實(shí)驗(yàn)提示】從鍵盤(pán)上輸入的十六進(jìn)制數(shù)字字符進(jìn)入計(jì)算機(jī)后并不是相應(yīng)的十六進(jìn)制數(shù)或二進(jìn)制數(shù),而是與字符對(duì)應(yīng)的ASCII碼,現(xiàn)要找出ASCII碼與該數(shù)字對(duì)應(yīng)的二進(jìn)制數(shù)之間的關(guān)系。關(guān)系如下:十六進(jìn)制數(shù)字字符字符對(duì)應(yīng)的ASCII碼數(shù)字對(duì)應(yīng)的二進(jìn)制數(shù)0 930H 39HASCII碼 - 30HA F41H 46HASCII碼 - 37Ha f61H 66HASCII碼 - 57H【報(bào)告要求】1給出該問(wèn)題的程序設(shè)計(jì)流程圖

23、。2給出該程序的全部代碼,并加上注釋。3總結(jié)實(shí)驗(yàn)體會(huì)。實(shí)驗(yàn)五 子程序設(shè)計(jì)【實(shí)驗(yàn)?zāi)康摹?掌握一般子程序的調(diào)用和返回方法,掌握定義過(guò)程的偽指令的用法。【實(shí)驗(yàn)性質(zhì)】設(shè)計(jì)性實(shí)驗(yàn)(學(xué)時(shí)數(shù):3H)【實(shí)驗(yàn)內(nèi)容】1、完成兩個(gè)四位十進(jìn)制數(shù)相加的程序設(shè)計(jì),形式為:2345+7869=10214(1)要求所有中斷調(diào)用全部采用子程序的形式完成。(2)要求考慮進(jìn)位位。完善程序并調(diào)試通過(guò)。(3)仿照下述程序,完成八位十進(jìn)制數(shù)相加的程序設(shè)計(jì)。要求考慮進(jìn)位位。完善程序并調(diào)試通過(guò)。參考程序:DISPMACRO VARMOV AH,2MOV DL,VARINT 21HENDMDATASEGMENTSTR1DB 'PLEA

24、SE INPUT A NUMBER (EXP:2345)$'STR2DB 'PLEASE INPUT ANOTHER NUMBER(EXP:7868)$'STR3DB 0DH,0AH,'$'BUF1DB 10,?,11 DUP(?)BUF2DB 10,?,11 DUP(?)BUF3DB 4 DUP(?),'$'DATAENDSCODESEGMENTASSUME CS:CODE,DS:DATABEGIN:MOV AX,DATAMOV DS,AXMOV DI,OFFSET STR1CALL DISPL ;SHOW 'PLEASE IN

25、PUT NUMBER1:'MOV DI,OFFSET BUF1CALL GETNUM ;GET NUMBER1 FROM KEYBOARDMOV DI,OFFSET STR3CALL DISPL ;CRLFMOV DI,OFFSET STR2CALL DISPL ;SHOW 'PLEASE INPUT NUMBER2:'MOV DI,OFFSET BUF2CALL GETNUM ;GET NUMBER2 FROM KEYBOARDMOV DI,OFFSET STR3CALL DISPL ;CRLFXOR BX,BXMOV BL,BUF1+1MOV BUF1+2BX,&#

26、39;$' ;BEHIND NUMBER1 ADD '$'MOV DI,OFFSET BUF1+2CALL DISPL ;SHOW NUMBER1DISP '+' ;SHOW '+'XOR BX,BXMOV BL,BUF2+1MOV BUF2+2BX,'$' ;BEHIND NUMBER2 ADD '$'MOV DI,OFFSET BUF2+2CALL DISPL ;SHOW NUMBER2DISP '=' ;SHOW '=' LEA SI, BUF1+2LEA DI, BU

27、F2+2CALL DAAD ;ADD NUMBERSMOV DI,OFFSET BUF3CALL DISPL ;SHOW RESULT MOV AH,4CH ;RETURN DOSINT 21HDAADPROC NEAR ;SUBPROCESS OF ADDMOV BX,4 N1:MOV AL,SI+BX-1ADC AL,DI+BX-1AAAADD AL,30HMOV BUF3BX-1,ALDEC BX JNZ N1RETDAADENDPDISPLPROC NEAR ;SUBPROCESS OF DISPLAYMOV AH,9MOV DX,DIINT 21HRETDISPLENDPGETNUM

28、 PROC NEAR ;SUBPROCESS OF GETNUMMOV AH,0AHMOV DX,DIINT 21HRETGETNUMENDPCODE ENDSEND BEGIN2、加分題:根據(jù)輸入的運(yùn)算符來(lái)實(shí)現(xiàn)+、-、*、/ 四則運(yùn)算,并考慮進(jìn)位。做除運(yùn)算時(shí),應(yīng)考慮除數(shù)為0。【實(shí)驗(yàn)要求】1.設(shè)計(jì)一個(gè)子程序,完成將緩沖區(qū)中的兩個(gè)四位十進(jìn)制數(shù)據(jù)送屏幕顯示功能。2.設(shè)計(jì)一個(gè)子程序,完成從鍵盤(pán)輸入兩個(gè)四位十進(jìn)制數(shù)的加法操作程序設(shè)計(jì)。3.設(shè)計(jì)一個(gè)子程序,完成兩個(gè)八位十進(jìn)制數(shù)作的加法運(yùn)算操作程序設(shè)計(jì)。4.設(shè)計(jì)一個(gè)子程序,完成兩個(gè)四位十進(jìn)制數(shù)作四則運(yùn)算操作。運(yùn)算要求從鍵盤(pán)輸入。【報(bào)告要求】1.給出該程序設(shè)計(jì)的方案步驟。2.列出自編程序清單并加注釋。3.寫(xiě)出心得體會(huì)。實(shí)驗(yàn)六 宏調(diào)

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論