1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 汇编语言——《分支与循环程序设计》实验报告

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

时间:2021-03-05 14:11:18

相关推荐

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

实验目的

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:codestart:push dssub ax,axpush axmov bx,0ahmov cx, 0ahsum1:add ax,bxdec bxloop sum1printit:mov bl,10div bladd al,30hmov ch,ahmov dl,almov ah,2int 21hadd ch,30hmov dl,chmov ah,2int 21hretmain endpcode endsend

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 farassume cs:code,ds:data,ss:stackstart: push ds sub ax,axpush axmov ax,datamov ds,axmov ax,stackmov ss,axmov cx,10mov si,0;寄存器,用于寻址mov bx,0lop1: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,allop2:inc si mov dl,buf[si]cmp dl,aljl compare1mov al,dlcompare1:cmp bl,dl ;比较,小的数放在bljl compare2mov bl,dlcompare2: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 farassume cs:code,ds:data,ss:stackstart: push ds sub ax,axpush axmov ax,datamov ds,axmov ax,stackmov ss,axmov cx,10mov si,0;寄存器,用于寻址mov bx,0lop1: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,allop2:inc si mov dl,buf[si]cmp dl,aljl compare1mov al,dlcompare1:cmp bl,dl ;比较,小的数放在bljl compare2mov bl,dlcompare2: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,0sum1:inc si mov bl,buf[si]sub bl,30hadd ax,blloop sum1printit: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 farassume cs:code,ds:data,ss:stackstart: push ds sub ax,axpush axmov ax,datamov ds,axmov ax,stackmov ss,axmov cx,10mov si,0;寄存器,用于寻址mov bx,0lop1: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,allop2:inc si mov dl,buf[si]cmp dl,aljl compare1mov al,dlcompare1:cmp bl,dl ;比较,小的数放在bljl compare2mov bl,dlcompare2: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 21hprintmin: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

参考文章

/csj41352/article/details/79981434

/question/562479802788685844.html

/view/af740cdc19e8b8f67d1cb92f.html

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。