微机原理实验4循环结构_第1页
微机原理实验4循环结构_第2页
微机原理实验4循环结构_第3页
微机原理实验4循环结构_第4页
微机原理实验4循环结构_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 物理与机电工程系(20152016 学年第 一 学期)调试程序的使用上机实验报告专 业:电子信息工程 学 号:姓 名: 成功回 任课教师: 官方个 实验地点: 实验楼5537 项目编号: 实 验 四 1、 实验目的:1. 加深对循环结构的理解。 2. 掌握循环程序的设计方法。 2、 实验内容:1. 编制程序计算S=1+2·3+3·4+4·5+N(N+1)+直到N(N+1)大于200为止,并将结果由屏幕上显示出来。 2. 将字形变量x以二进制数的形式在屏幕上显示输出。3. 将字形变量x以十六进制数的形式在屏幕上显示输出。4. 将内存单元缓

2、冲区中的符号数(20个)按从小到大的顺序排列,并以十六进制数的形式显。 3、 实验过程:1. 编制程序计算S=1+2·3+3·4+4·5+N(N+1)+直到N(N+1)大于200为止,并将结果由屏幕上显示出来。 程序流程图如下: 程序源代码如下:DATAS SEGMENT s dw ?;此处输入数据段代码 DATAS ENDS STACKS SEGMENT dw 64 dup(?);此处输入堆栈段代码 STACKS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKS START: MOV AX,DATAS M

3、OV DS,AX mov bx,0001h ; BX=1 mov dl,02h ;DL=2lop2: mov al,dl ;AL=2 inc dl;加1 ;DL=3 mul dl;无符号数乘法 AX=AL*DL=2*3 add bx,ax ;BX=AX+BX cmp ax,00C8h;与200比较 jbe lop2;不高于转移 mov s,bx mov ch,4 mov cl,4 lop1: rol bx,cl mov dl,bl and dl,0Fh cmp dl,09h jbe next;低于等于转移 <= add dl,7 next: add dl,30h mov ah,2 int

4、 21h dec ch jnz lop1;非零转移 MOV AH,4CH INT 21H CODES ENDS END START 程序运行结果如下:程序反汇编过程如下:2. 将字形变量x以二进制数的形式在屏幕上显示输出。 程序流程图如下: 程序源代码如下:DATAS SEGMENT x dw 1325h ;此处输入数据段代码 DATAS ENDS STACKS SEGMENT ;此处输入堆栈段代码 STACKS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKS START: MOV AX,DATAS MOV DS,AX mov bx,

5、x mov cx,10h lop1: rol bx,1 ;不带cf的循环左移 jc next;进位转移,即cf=1 mov dl,30h;将0送入dl jmp next2 next: mov dl,31h;将1送入dl next2:mov ah,2 int 21h loop lop1;循环执行lop1 MOV AH,4CH INT 21HCODES ENDS END START 存入数据及程序运行结果如下图:程序反汇编过程如下:3. 将字形变量x以十六进制数的形式在屏幕上显示输出。 程序流程图如下: 程序源代码如下:DATAS SEGMENT x dw 933;此处输入数据段代码 DATAS

6、ENDS STACKS SEGMENT ;此处输入堆栈段代码 STACKS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKS START: MOV AX,DATAS MOV DS,AX mov bx,x mov ch,4 mov cl,4 lop1: rol bx,cl ;不带cf的循环左移 mov dl,bl and dl,0Fh cmp dl,09h jbe next;低于等于转移 add dl,7 next: add dl,30h mov ah,2 int 21h dec ch jnz lop1;非零转移 MOV AH,4CH I

7、NT 21H CODES ENDS END START存入的转换数据及程序运行结果如下:程序反汇编过程如下: 4. 将内存单元缓冲区中的符号数(20个)按从小到大的顺序排列,并以十六进制数的形式显。程序流程图如下: 程序源代码如下:;冒泡法对20个数升序排列DATAS SEGMENT X db 02h,01h,03h,04h,05h,06h,08h,09h,11h,88h,82h,84h,83h,96h,75h,90h,99h,28h,67h,97h ;此处输入数据段代码 LEN db $-x ;$表示当前位置20DATAS ENDS CODES SEGMENT ASSUME CS:CODES

8、,DS:DATASSTART: MOV AX,DATAS MOV DS,AX mov cl,LEN dec cl;外循环只需19次 ;外循环开始lop12:mov ch,cl ;CH作为内循环计数器 lea si,X ;si只想当前要比较的数 ;内循环开始lop11:mov al,si ;AL=09H inc si ;SI只想下一个数 cmp al,si ;9-8 jbe next ;<= xchg al,si; AL=08 mov si-1,al ;SI-1=08next:dec ch ;内循环结束吗?CH=0? jne lop11 ;内循环到此结束 dec cl ;外循环结束吗 jn

9、e lop12 ;外循环到此结束 ;在屏幕上显示20个数 lea si,X xor ch,ch mov cl,LEN ;CH记录循环显示20 个数 mov bh,cl ;转出 再循环显示20个数 lopout: mov bl,si ;循环单字符输出 mov ch,2 mov cl,4lopprint1: rol bl,cl ;BL=01H=0000 0001 mov dl,bl ;0000 0001 and dl,0fh ;0001 1 cmp dl,09h jbe next1 add dl,07hnext1: add dl,30h mov ah,2 int 21h dec ch jnz lo

10、pprint1 mov dl,20h ;输出空格 mov ah,2 int 21h ;接着输出第二个数 add si,1 dec bh jnz lopout MOV AH,4CH INT 21H CODES ENDS END START 存入的排序数组及其运行结果排序如下:程序反汇编过程如下:4、 实验结论1> 学习并使用了DEBUG程序,进一步掌握和熟悉汇编语言程序上机过程、DEBUG的常用指令。 2> 根据要求编写了程序,用循环结构设计程序实现符号函数,运行MASM FOR WINDOWS软件,打开写好的程序,源程序即用p指令逐条执行的寄存器变化及指令逐条含义,主要运用有功能键

11、的调用,如1、2、9号功能键,及其出入口参数,回车换行的运用。 3> 根据要求编写了将字形变量转换为二进制、十六进制并显示的程序。将字形变量存入源程序中,通过利用JIE、JMP、JGE等转移指令,大小写字母的ASIIC码及相关输入显示功能号的调用等通过单层或多层循环来实现。在DEBUG下查看执行结果,用p指令逐条执行源程序的寄存器变化及指令逐条含义。 4> 根据要求画出流程图编写了循环结构下的数的累加,利用JIE、JMP、JGE等转移指令,大小写字母即数字的ASIIC码、1、2、9等相关输入显示功能号的调用等实现数的循环累加并且判断结构是否大于200,然后逐字在屏幕上以十六进制显示

12、相应结果。在DEBUG下查看执行结果,用p指令逐条执行源程序的寄存器变化及指令逐条含义。 5> 利用转移指令JBE JNZ和移位指令ROL以逻辑与指令AND将一串数组按照从大到小的顺序用冒泡法实现了排序,然后逐字在屏幕上以十六进制显示相应结果。并运用MASM FOR WINDOWS软件逐步调试运行了改程序。 6> 通过以上四个程序的设计、调试、运行,了解、熟悉并掌握了循环程序的基本结构和设计以及多层循环结构程序的上机运行和调试方法。5、 实验中存在问题及解决方法1> 程序调试中,对一些转换指令及其执行过程中的对标志位的影响不是很熟悉,导致有些程序片段看起来有些吃力,尤其在调试过程中;在查看分析寄存器的存储状态时有些不太清楚。2> 格式问题,对汇编

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论