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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

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

實(shí)驗(yàn)?zāi)康?/strong>

1、掌握程序設(shè)計(jì)中的3種基本結(jié)構(gòu)(順序結(jié)構(gòu)、選擇程序、循環(huán)程序)。

2、熟練使用匯編語言的指令:數(shù)據(jù)傳送類指令、數(shù)據(jù)運(yùn)算類指令、邏輯判斷類指令與轉(zhuǎn)移指令、循環(huán)指令等。

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

實(shí)驗(yàn)內(nèi)容

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

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

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

    3、結(jié)合第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 ;數(shù)據(jù)段定義開始buf db 10 dup(?) ;數(shù)據(jù)定義及其存儲空間max db ?min db ?Str1 db 0DH,0AH,'Please input: ','$' ;定義Str1的內(nèi)容Str2 db 0DH,0AH,'MAX:','$' ;定義Str2的內(nèi)容Str3 db 0DH,0AH,'MIN:','$' ;定義Str3的內(nèi)容 data ends ;數(shù)據(jù)段定義結(jié)束 Stack segment stack ;堆棧段定義開始db 10 dup(?) stack ends ;堆棧段定義結(jié)束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 ;返回循環(huán)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 ;比較,小的數(shù)放在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 ;輸出最大數(shù)lea dx,Str3mov ah,09int 21hmov dl,minmov ah,02h int 21h ;輸出最小數(shù)ret main endpcode ends end start

    3

    data segment ;數(shù)據(jù)段定義開始buf db 10 dup(?) ;數(shù)據(jù)定義及其存儲空間max db ?min db ?Str1 db 0DH,0AH,'Please input: ','$' ;定義Str1的內(nèi)容Str2 db 0DH,0AH,'MAX:','$' ;定義Str2的內(nèi)容Str3 db 0DH,0AH,'MIN:','$' ;定義Str3的內(nèi)容Str4 db 0DH,0AH,'SUM:','$' ;定義Str4的內(nèi)容 data ends ;數(shù)據(jù)段定義結(jié)束 Stack segment stack ;堆棧段定義開始db 10 dup(?) stack ends ;堆棧段定義結(jié)束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 ;返回循環(huán)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 ;比較,小的數(shù)放在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 ;輸出最大數(shù)lea dx,Str3mov ah,09int 21hmov dl,minmov ah,02h int 21h ;輸出最小數(shù)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 ;數(shù)據(jù)段定義開始buf db 10 dup(?) ;數(shù)據(jù)定義及其存儲空間max db ?min db ?Str1 db 0DH,0AH,'Please input: ','$' ;定義Str1的內(nèi)容Str2 db 0DH,0AH,'MAX:','$' ;定義Str2的內(nèi)容Str3 db 0DH,0AH,'MIN:','$' ;定義Str3的內(nèi)容 data ends ;數(shù)據(jù)段定義結(jié)束 Stack segment stack ;堆棧段定義開始db 10 dup(?) stack ends ;堆棧段定義結(jié)束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 ;返回循環(huán)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 ;比較,小的數(shù)放在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

    結(jié)果分析

    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

    總結(jié)

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

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。