計(jì)算機(jī)軟件及應(yīng)用匯編實(shí)驗(yàn)_第1頁(yè)
計(jì)算機(jī)軟件及應(yīng)用匯編實(shí)驗(yàn)_第2頁(yè)
計(jì)算機(jī)軟件及應(yīng)用匯編實(shí)驗(yàn)_第3頁(yè)
計(jì)算機(jī)軟件及應(yīng)用匯編實(shí)驗(yàn)_第4頁(yè)
計(jì)算機(jī)軟件及應(yīng)用匯編實(shí)驗(yàn)_第5頁(yè)
已閱讀5頁(yè),還剩30頁(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、南華大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院匯編語(yǔ)言程序設(shè)計(jì)實(shí)驗(yàn)作業(yè)報(bào)告( 2010 2011學(xué)年度第二學(xué)期)姓名張要軍學(xué)號(hào)20104030325專(zhuān)業(yè)電氣信息班級(jí)1003班地點(diǎn) 8209教師劉芳菊實(shí)驗(yàn)一1.題目要求描述不用串操作指令,把字符串string1的內(nèi)容傳送到字符串string2,字符長(zhǎng)度為count。2 實(shí)驗(yàn)步驟(1) 首先定義string1 變量存放待移動(dòng)字符串 count變量存放字符串長(zhǎng)度 string2為目的串單元地址(2) 將string1和string2的地址送向bx和si 分別做基址和變址寄存器 將count內(nèi)容送往cx每次將string1一個(gè)單元內(nèi)容送往string2對(duì)應(yīng)單元內(nèi)容 總共

2、做cx次(3) 最后輸出string2的內(nèi)容3 流程圖開(kāi)始將si,bx初始化為0cx中存串長(zhǎng)度loop跳轉(zhuǎn)的次數(shù)將count+si地址存的值傳到所對(duì)應(yīng)count+di地址中si=si+1bx=bx+1cx=cx-1cx是否為0結(jié)束4 代碼DATAS SEGMENT string1 dbhello$count dw 9 string2 db 9 dup(?);此處輸入數(shù)據(jù)段代碼 DATAS ENDSSTACKS SEGMENT;此處輸入堆棧段代碼STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATAS

3、MOV DS,AXlea bx,string1lea si,string2mov cx,countagain:dec countmov ax,bx+countmovsi+count,ax loop againlea dx,string1mov ah,09h int 21hMOV AH,4CH INT 21HCODES ENDSENDSTART5 運(yùn)行結(jié)果6 實(shí)驗(yàn)總結(jié)分析通過(guò)本實(shí)驗(yàn)知道了串操作指令的用法及其特性,掌握了串操作下隱藏的操作。 實(shí)驗(yàn)二1題目要求:從鍵盤(pán)輸入一個(gè)十進(jìn)制數(shù)要求輸出其十六進(jìn)制表示2 實(shí)驗(yàn)步驟:(1) 調(diào)用dos 2號(hào)功能從鍵盤(pán)接受一個(gè)字符存放在AL中輸入為換行時(shí)結(jié)束輸入(2

4、) 每次將輸入的字符轉(zhuǎn)換成數(shù)字并與之前輸入的數(shù)字*10相加(3) 使用除16取余方法將余數(shù)壓棧(4) 依次出棧 判斷是否大于9若是則轉(zhuǎn)換成字母 若不是則轉(zhuǎn)換成數(shù)字3 流程圖開(kāi)始將bx初始化為-1并壓棧作為出棧結(jié)束條件之后將bx初始化為0從鍵盤(pán)接受一個(gè)字符轉(zhuǎn)換成數(shù)字依次出棧到DX用除16取余法將余數(shù)壓棧若AX=0!=0結(jié)束若字符不是0dh則存入AX中并交換AX,BX內(nèi)容接著做BX=BX+AX操作判斷dx !=-1調(diào)用dos 2號(hào)功能輸出dl內(nèi)容4 代碼;輸入一個(gè)2559以下的10進(jìn)制數(shù) 輸出其16進(jìn)制數(shù)DATAS SEGMENT;此處輸入數(shù)據(jù)段代碼 DATAS ENDSSTACKS SEGMEN

5、T;此處輸入堆棧段代碼STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AXmov bx,-1push bxmov dl,10mov bx,0 cin:mov ah,01h int 21hcmp al,0dh jz finish2sub al,30hmov ah,0xchg ax,bxmul dladd bx,ax jmp cinfinish2:mov ax,bxmov bx,16 again:mov dx,0div bxpush dxcmp ax,0 jnz againmov

6、ah,02hmov dl,0ah int 21h cout:pop dxcmp dx,-1 jz overdcmp dx,9 ja zimuadd dl,30h int 21h jmp cout zimu:add dl,37h int 21h jmp cout;此處輸入代碼段代碼 overd:MOV AH,4CH INT 21HCODES ENDSENDSTART5 運(yùn)行結(jié)果6 實(shí)驗(yàn)總結(jié)分析掌握了從鍵盤(pán)輸入的功能,并把數(shù)字與ASCII碼相互轉(zhuǎn)換的能力。 實(shí)驗(yàn)三1 題目要求:將mem地址后的數(shù)字0移到最后面并將前面的0位置補(bǔ)上2 實(shí)驗(yàn)步驟(1) 將si,di初始化為0 將mem的數(shù)字個(gè)數(shù)送向cx

7、(2) 判斷si+count地址指向的單元是否為0若是則si+2若不是則si+2且di+2且將count+si的內(nèi)容送向count+di(3) 循環(huán)cx次步驟(2)(4) 輸出mem每一個(gè)數(shù)3 流程圖開(kāi)始將si,di初始化為0 cx初始化為count判斷si+count的內(nèi)容是否為0若是0則做si=si+2Cx=cx-1若cX=0則跳轉(zhuǎn)到輸出部分!=0結(jié)束若不為0則做count+si的內(nèi)容送向count+di si=si+2且di=di+2將mem的內(nèi)容送向dl調(diào)用dos 2號(hào)功能輸出dl內(nèi)容4 代碼;移動(dòng)0DATAS SEGMENTmem db 1,0,2,1,4,0,5,45,0,44,7

8、,0count dw 6;此處輸入數(shù)據(jù)段代碼 DATAS ENDSSTACKS SEGMENT;此處輸入堆棧段代碼STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AXmov si,0mov cx, countmov di,sinext:cmp count+si,0 jz ifzero jmp ifnzeroifzero:inc si loop next jmp againifnzero: inc diinc simov ax,count+simov di+count,ax lo

9、op nextagain:inc dicmp si,di ja coutmov di+count,0 jmp againcout:mov ah,02hmov dl,memadd dl,30h int 21hoverd: ;此處輸入代碼段代碼MOV AH,4CH INT 21HCODES ENDSENDSTART5 運(yùn)行結(jié)果實(shí)驗(yàn)41. 實(shí)驗(yàn)要求:查詢(xún)字符串中是否有數(shù)字 有則輸出第一個(gè)數(shù)字 沒(méi)有則輸出a2實(shí)驗(yàn)步驟:(1) 依次將目的單元內(nèi)容與30h和39h做比較看是否在這之間(2) 若找到有在30h和39h之間的字符則將次數(shù)傳送到DL(3) 輸出DL的內(nèi)容3 流程圖開(kāi)始將bx初始化為0 cx初始化

10、為count判斷bx+string單元的內(nèi)容是否大于30h若小于0則做bx=bx+1Cx=cx-1若cX=0則跳轉(zhuǎn)到輸出部分!=0結(jié)束判斷bx+string單元的內(nèi)容是否小于39h若大于39h則做bx=bx+1將DL的內(nèi)容輸出4 代碼2. ;查詢(xún)字符串中是否有數(shù)字3. DATAS SEGMENT4. string dbasdhkhfuhlask3klbhjl4jlkjs5. count dw $-string6. ;此處輸入數(shù)據(jù)段代碼 7. DATAS ENDS8. STACKS SEGMENT9. ;此處輸入堆棧段代碼10. STACKS ENDS11. CODES SEGMENT12. A

11、SSUME CS:CODES,DS:DATAS,SS:STACKS13. START:14. MOV AX,DATAS15. MOV DS,AX16. mov bx,017. mov cx,count18. repeats:19. cmp bx+string,30h20. jb again21. cmp bx+string,39h22. ja again23. mov cl,80h24. mov dl,bx+string25. shr cl,126. shr cl,127. jmp overd28. again:29. inc bx 30. loop repeats31. mov cl,032

12、. mov dl,30h33. overd:34. mov ah,02h35. int 21h36. ;此處輸入代碼段代碼37. MOV AH,4CH38. INT 21H39. CODES ENDS40. ENDSTART5 運(yùn)行結(jié)果實(shí)驗(yàn)五1. 實(shí)驗(yàn)要求:從鍵盤(pán)接受一個(gè)數(shù)字 要求響鈴多少次2. 實(shí)驗(yàn)步驟(1) 從鍵盤(pán)接受一個(gè)數(shù)字(2) 判斷是否為0(3) 若為0則直接結(jié)束 否則將它存入cx中在循環(huán)體內(nèi)做響鈴操作3 流程圖開(kāi)始調(diào)用dos出入功能從鍵盤(pán)接受一個(gè)數(shù)字若不是0則將al的內(nèi)容存入cl中繼續(xù)下一步否則跳轉(zhuǎn)到結(jié)束處調(diào)用輸出功能將07h存入dl中輸出循環(huán)cx次結(jié)束判斷輸入的是否為05 代碼3

13、. ;響鈴4. DATAS SEGMENT5. ;此處輸入數(shù)據(jù)段代碼 6. DATAS ENDS7. STACKS SEGMENT8. ;此處輸入堆棧段代碼9. STACKS ENDS10. CODES SEGMENT11. ASSUME CS:CODES,DS:DATAS,SS:STACKS12. START:13. MOV AX,DATAS14. MOV DS,AX15. mov ah,01h16. int 21h17. sub al,30h18. cmp al,019. jz overd20. mov cl,al21. mov ch,022. again:23. mov dl,07h24

14、. mov ah,02h25. int 21h26. loop again27. overd:28. ;此處輸入代碼段代碼29. MOV AH,4CH30. INT 21H31. CODES ENDS32. ENDSTART6 運(yùn)行結(jié)果實(shí)驗(yàn)六1 實(shí)驗(yàn)要求:將table單元的N個(gè)數(shù)字中重復(fù)次數(shù)最多的數(shù)存入ax中次數(shù)存入cx中2實(shí)驗(yàn)步驟(1) 初始化si cx dx 調(diào)用子程序 compare(2) 判斷si+table與下一個(gè)數(shù)是否相等若是則bx+1 且si+2并重復(fù)(2)若不是則比較bx與dx大小將較大者存入dx并繼續(xù)(2)直到cx=0為止則跳轉(zhuǎn)到結(jié)束3 流程圖開(kāi)始初始化si cx dx初始化

15、bx=1將table+si的內(nèi)容送向ax將si+2并與ax的內(nèi)容作比較結(jié)束調(diào)用子程序compare若兩者相等則做 bx+1 若兩者不相等則比較bx與dx的大小將較大者存入dx中作cx-1若cx大于0則跳轉(zhuǎn)到4 代碼DATAS SEGMENT table dw 1,1,1,2,5,5,5,5,6,6,6,6,6,11,11,11,11,11,22,22,22,22,22,22,22 count dw $-table ;此處輸入數(shù)據(jù)段代碼 DATAS ENDSSTACKS SEGMENT;此處輸入堆棧段代碼STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DAT

16、AS,SS:STACKS main proc nearSTART:MOV AX,DATASMOV DS,AXmov si,0mov cx,countshr cx,1mov dx,1 call comparemov ah,02hadd dl,30h int 21h ;此處輸入代碼段代碼MOV AH,4CH INT 21H main endp compare proc near again: mov bx,1 mov ax,tablesiagain1: dec cx add si,2cmp ax,tablesi jnz neaqualinc bxcmp cx,0 jnz again1neaqual

17、:cmp dx,bx jae abovemov dx,bxpush tablesiabove:cmp cx,0 jz overd jmp again overd:pop cx retcompare endp CODES ENDSENDSTART5 運(yùn)行結(jié)果6 實(shí)驗(yàn)總結(jié)分析:知道了如何將table單元的N個(gè)數(shù)字中重復(fù)次數(shù)最多的數(shù)存入ax中次數(shù)存入cx實(shí)驗(yàn)71 實(shí)驗(yàn)題目在STRING到STRING+99單元中存放著一個(gè)字符串,試編制一程序測(cè)試該字符串中是否存在數(shù)字。如有,則把CL的第5位置1,否則將該位置0。二.實(shí)驗(yàn)要求若不存在則輸出”not exists”;存在則輸出”alter success

18、!”三.實(shí)驗(yàn)內(nèi)容1、實(shí)驗(yàn)流程圖2、代碼DATAS SEGMENT string1 db 20 dup(ABCD3) string2 db$ string3 dbnot exit!$ string4 dbalter success!$DATAS ENDSSTACKS SEGMENT;此處輸入堆棧段代碼STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AXmov cx,100lea si,string1backTest:mov al,sisub al,30h jl judgecmp al,9d jg judge jmp w

溫馨提示

  • 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)論