




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、南華大學計算機科學與技術學院匯編語言程序設計實驗作業(yè)報告( 2010 2011學年度第二學期)姓名張要軍學號20104030325專業(yè)電氣信息班級1003班地點 8209教師劉芳菊實驗一1.題目要求描述不用串操作指令,把字符串string1的內容傳送到字符串string2,字符長度為count。2 實驗步驟(1) 首先定義string1 變量存放待移動字符串 count變量存放字符串長度 string2為目的串單元地址(2) 將string1和string2的地址送向bx和si 分別做基址和變址寄存器 將count內容送往cx每次將string1一個單元內容送往string2對應單元內容 總共
2、做cx次(3) 最后輸出string2的內容3 流程圖開始將si,bx初始化為0cx中存串長度loop跳轉的次數將count+si地址存的值傳到所對應count+di地址中si=si+1bx=bx+1cx=cx-1cx是否為0結束4 代碼DATAS SEGMENT string1 dbhello$count dw 9 string2 db 9 dup(?);此處輸入數據段代碼 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 運行結果6 實驗總結分析通過本實驗知道了串操作指令的用法及其特性,掌握了串操作下隱藏的操作。 實驗二1題目要求:從鍵盤輸入一個十進制數要求輸出其十六進制表示2 實驗步驟:(1) 調用dos 2號功能從鍵盤接受一個字符存放在AL中輸入為換行時結束輸入(2
4、) 每次將輸入的字符轉換成數字并與之前輸入的數字*10相加(3) 使用除16取余方法將余數壓棧(4) 依次出棧 判斷是否大于9若是則轉換成字母 若不是則轉換成數字3 流程圖開始將bx初始化為-1并壓棧作為出棧結束條件之后將bx初始化為0從鍵盤接受一個字符轉換成數字依次出棧到DX用除16取余法將余數壓棧若AX=0!=0結束若字符不是0dh則存入AX中并交換AX,BX內容接著做BX=BX+AX操作判斷dx !=-1調用dos 2號功能輸出dl內容4 代碼;輸入一個2559以下的10進制數 輸出其16進制數DATAS SEGMENT;此處輸入數據段代碼 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 運行結果6 實驗總結分析掌握了從鍵盤輸入的功能,并把數字與ASCII碼相互轉換的能力。 實驗三1 題目要求:將mem地址后的數字0移到最后面并將前面的0位置補上2 實驗步驟(1) 將si,di初始化為0 將mem的數字個數送向cx
7、(2) 判斷si+count地址指向的單元是否為0若是則si+2若不是則si+2且di+2且將count+si的內容送向count+di(3) 循環(huán)cx次步驟(2)(4) 輸出mem每一個數3 流程圖開始將si,di初始化為0 cx初始化為count判斷si+count的內容是否為0若是0則做si=si+2Cx=cx-1若cX=0則跳轉到輸出部分!=0結束若不為0則做count+si的內容送向count+di si=si+2且di=di+2將mem的內容送向dl調用dos 2號功能輸出dl內容4 代碼;移動0DATAS SEGMENTmem db 1,0,2,1,4,0,5,45,0,44,7
8、,0count dw 6;此處輸入數據段代碼 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 運行結果實驗41. 實驗要求:查詢字符串中是否有數字 有則輸出第一個數字 沒有則輸出a2實驗步驟:(1) 依次將目的單元內容與30h和39h做比較看是否在這之間(2) 若找到有在30h和39h之間的字符則將次數傳送到DL(3) 輸出DL的內容3 流程圖開始將bx初始化為0 cx初始化
10、為count判斷bx+string單元的內容是否大于30h若小于0則做bx=bx+1Cx=cx-1若cX=0則跳轉到輸出部分!=0結束判斷bx+string單元的內容是否小于39h若大于39h則做bx=bx+1將DL的內容輸出4 代碼2. ;查詢字符串中是否有數字3. DATAS SEGMENT4. string dbasdhkhfuhlask3klbhjl4jlkjs5. count dw $-string6. ;此處輸入數據段代碼 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 運行結果實驗五1. 實驗要求:從鍵盤接受一個數字 要求響鈴多少次2. 實驗步驟(1) 從鍵盤接受一個數字(2) 判斷是否為0(3) 若為0則直接結束 否則將它存入cx中在循環(huán)體內做響鈴操作3 流程圖開始調用dos出入功能從鍵盤接受一個數字若不是0則將al的內容存入cl中繼續(xù)下一步否則跳轉到結束處調用輸出功能將07h存入dl中輸出循環(huán)cx次結束判斷輸入的是否為05 代碼3
13、. ;響鈴4. DATAS SEGMENT5. ;此處輸入數據段代碼 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 運行結果實驗六1 實驗要求:將table單元的N個數字中重復次數最多的數存入ax中次數存入cx中2實驗步驟(1) 初始化si cx dx 調用子程序 compare(2) 判斷si+table與下一個數是否相等若是則bx+1 且si+2并重復(2)若不是則比較bx與dx大小將較大者存入dx并繼續(xù)(2)直到cx=0為止則跳轉到結束3 流程圖開始初始化si cx dx初始化
15、bx=1將table+si的內容送向ax將si+2并與ax的內容作比較結束調用子程序compare若兩者相等則做 bx+1 若兩者不相等則比較bx與dx的大小將較大者存入dx中作cx-1若cx大于0則跳轉到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 ;此處輸入數據段代碼 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 運行結果6 實驗總結分析:知道了如何將table單元的N個數字中重復次數最多的數存入ax中次數存入cx實驗71 實驗題目在STRING到STRING+99單元中存放著一個字符串,試編制一程序測試該字符串中是否存在數字。如有,則把CL的第5位置1,否則將該位置0。二.實驗要求若不存在則輸出”not exists”;存在則輸出”alter success
18、!”三.實驗內容1、實驗流程圖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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度離婚同撫養(yǎng)協議及監(jiān)護權劃分
- 二零二五年度鋼材電商平臺開發(fā)與運營合同
- 2025年度高新技術企業(yè)離退休人員技術指導合同
- 2025年度金融實習生勞動合同規(guī)范文本
- 二零二五年度公司股權轉讓與品牌授權合同
- 二零二五年度個人房產租賃及維修保障協議
- 浙江國企招聘2024臺州市建設市政工程檢測中心有限公司招聘1名高層次人才筆試參考題庫附帶答案詳解
- 熱軋產品知識培訓課件
- 匠心筑夢勇闖生涯-大學生職業(yè)生涯規(guī)劃知到智慧樹章節(jié)測試課后答案2024年秋深圳職業(yè)技術大學
- 零售市場知識培訓課件
- 挖掘機司機培訓服務投標方案(技術標 )
- 小學生主題班會 愛國主義教育 課件(共35張PPT)
- 雇傭保姆免責協議7篇(通用)
- 水電站水輪機調速器及其附屬設備安裝施工技術方案
- XX大學學科競賽項目申請書
- 03S702鋼筋混凝土化糞池圖集
- 06-2018泥石流災害防治工程勘查規(guī)范(試行)
- 黑鯛淡水養(yǎng)殖技術
- 焊工培訓-焊接基礎知識-課件
- 剪映電腦版使用說明教程
- 社會學概論全套PPT完整教學課件
評論
0/150
提交評論