汇编语言——《分支与循环程序设计》实验报告
實(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)容
設(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 end2、
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 start3、
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 start4、
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)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 汇编语言——《分支与循环程序设计》实验任
- 下一篇: 汇编语言——输入两位数比较大小