日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

汇编语言——《分支与循环程序设计》实验报告

發布時間:2024/10/5 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 汇编语言——《分支与循环程序设计》实验报告 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

實驗目的

1、掌握程序設計中的3種基本結構(順序結構、選擇程序、循環程序)。

2、熟練使用匯編語言的指令:數據傳送類指令、數據運算類指令、邏輯判斷類指令與轉移指令、循環指令等。

3、初步了解系統功能調用的使用方法,嘗試使用01H號功能調用進行字符輸入的方法及使用02H號功能調用進行字符輸出(顯示)的方法。

實驗內容

  • 計算1+2+3+…+10,將結果顯示在屏幕上。
  • 利用01H號功能調用輸入10個一位數字,并將其由ASCII碼轉換為二進制數,依此保存到變量BUF的10個字節中,變量BUF的形式為BUF? DB? 10? DUP(?)。編程求出這10個數中的最大數和最小數,將最大數存入MAX單元、最小數存入MIN單元,并將其在屏幕上顯示出來。
  • 對于第2題,怎樣修改程序可以同時實現將10個數字的累加功能。(選作)
  • 對于第2題,若要求輸入的是兩位數,又該怎么辦?(選作)
  • 設計思想

    1、先將1-10循環求和,為了將結果顯示在屏幕上,需要講計算后保存在ax中的結果以十進制形式輸出,可以將結果的兩位數分別存于低位和高位中,即除以10取整和余?? AL是商,AH是余數,后加上30h。

    2、使用SI寄存器,用于在存儲器中尋址。利用循環輸入10個數字,將10個數比較,大的放在AL,小的放在BL。利用01H號功能,輸出。

    3、結合第1題和第2題。

    4、修改輸入。

    程序代碼

    1

    code segmentmain proc farassume cs:code start:push dssub ax,axpush axmov bx,0ahmov cx, 0ah sum1:add ax,bxdec bxloop sum1 printit:mov bl,10div bladd al,30hmov ch,ahmov dl,almov ah,2int 21hadd ch,30hmov dl,chmov ah,2int 21hretmain endpcode ends end

    2

    data segment ;數據段定義開始buf db 10 dup(?) ;數據定義及其存儲空間max db ?min db ?Str1 db 0DH,0AH,'Please input: ','$' ;定義Str1的內容Str2 db 0DH,0AH,'MAX:','$' ;定義Str2的內容Str3 db 0DH,0AH,'MIN:','$' ;定義Str3的內容 data ends ;數據段定義結束 Stack segment stack ;堆棧段定義開始db 10 dup(?) stack ends ;堆棧段定義結束code segment ;代碼段定義開始 main proc far assume cs:code,ds:data,ss:stack start: push ds sub ax,axpush axmov ax,datamov ds,axmov ax,stackmov ss,axmov cx,10mov si,0 ;寄存器,用于尋址mov bx,0 lop1: lea dx,Str1 mov ah,09int 21hmov ah,01h ; 輸入int 21hmov buf[si],alinc siloop lop1 ;返回循環1mov cx,9mov si,0mov al,buf[si]mov bl,al lop2:inc si mov dl,buf[si]cmp dl,aljl compare1mov al,dl compare1:cmp bl,dl ;比較,小的數放在bljl compare2mov bl,dl compare2:loop lop2 mov max,al mov min,bl lea dx,Str2mov ah,09int 21hmov dl,maxmov ah,02h int 21h ;輸出最大數lea dx,Str3mov ah,09int 21hmov dl,minmov ah,02h int 21h ;輸出最小數ret main endpcode ends end start

    3

    data segment ;數據段定義開始buf db 10 dup(?) ;數據定義及其存儲空間max db ?min db ?Str1 db 0DH,0AH,'Please input: ','$' ;定義Str1的內容Str2 db 0DH,0AH,'MAX:','$' ;定義Str2的內容Str3 db 0DH,0AH,'MIN:','$' ;定義Str3的內容Str4 db 0DH,0AH,'SUM:','$' ;定義Str4的內容 data ends ;數據段定義結束 Stack segment stack ;堆棧段定義開始db 10 dup(?) stack ends ;堆棧段定義結束code segment ;代碼段定義開始 main proc far assume cs:code,ds:data,ss:stack start: push ds sub ax,axpush axmov ax,datamov ds,axmov ax,stackmov ss,axmov cx,10mov si,0 ;寄存器,用于尋址mov bx,0 lop1: lea dx,Str1 mov ah,09int 21hmov ah,01h ; 輸入int 21hmov buf[si],alinc siloop lop1 ;返回循環1mov cx,9mov si,0mov al,buf[si]mov bl,al lop2:inc si mov dl,buf[si]cmp dl,aljl compare1mov al,dl compare1:cmp bl,dl ;比較,小的數放在bljl compare2mov bl,dl compare2:loop lop2 mov max,al mov min,bl lea dx,Str2mov ah,09int 21hmov dl,maxmov ah,02h int 21h ;輸出最大數lea dx,Str3mov ah,09int 21hmov dl,minmov ah,02h int 21h ;輸出最小數lea dx,Str4mov ah,09int 21hsub ax,axmov bx,0mov cx,9mov si,0 sum1:inc si mov bl,buf[si]sub bl,30hadd ax,blloop sum1 printit:mov bl,10div bladd al,30hmov ch,ahmov dl,almov ah,2int 21hadd ch,30hmov dl,chmov ah,2int 21hretmain endpcode ends end start

    4

    data segment ;數據段定義開始buf db 10 dup(?) ;數據定義及其存儲空間max db ?min db ?Str1 db 0DH,0AH,'Please input: ','$' ;定義Str1的內容Str2 db 0DH,0AH,'MAX:','$' ;定義Str2的內容Str3 db 0DH,0AH,'MIN:','$' ;定義Str3的內容 data ends ;數據段定義結束 Stack segment stack ;堆棧段定義開始db 10 dup(?) stack ends ;堆棧段定義結束code segment ;代碼段定義開始 main proc far assume cs:code,ds:data,ss:stack start: push ds sub ax,axpush axmov ax,datamov ds,axmov ax,stackmov ss,axmov cx,10mov si,0 ;寄存器,用于尋址mov bx,0 lop1: lea dx,Str1 mov ah,09hint 21hmov ah,01h ; 輸入1int 21hsub al,30hmov ah,0mov bl,10mul blmov dl,almov ah,01h ; 輸入2int 21hsub al,30hmov ah,0add al,dlmov buf[si],alinc siloop lop1 ;返回循環1mov cx,9mov si,0mov al,buf[si]mov bl,al lop2:inc si mov dl,buf[si]cmp dl,aljl compare1mov al,dl compare1:cmp bl,dl ;比較,小的數放在bljl compare2mov bl,dl compare2:loop lop2 mov max,al mov min,bl printmax:lea dx,Str2mov ah,09int 21hmov ax,0mov al,maxmov bl,10div bladd al,30hmov ch,ahmov dl,almov ah,2int 21hadd ch,30hmov dl,chmov ah,2int 21h printmin:lea dx,Str3mov ah,09int 21hmov ax,0mov al,minmov bl,10div bladd al,30hmov ch,ahmov dl,almov ah,2int 21hadd ch,30hmov dl,chmov ah,2int 21hretmain endpcode ends end start

    結果分析

    1

    2

    3

    4

    參考文章

    https://blog.csdn.net/csj41352/article/details/79981434

    https://zhidao.baidu.com/question/562479802788685844.html

    https://wenku.baidu.com/view/af740cdc19e8b8f67d1cb92f.html

    總結

    以上是生活随笔為你收集整理的汇编语言——《分支与循环程序设计》实验报告的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。