中南实验报告_第1页
中南实验报告_第2页
中南实验报告_第3页
中南实验报告_第4页
中南实验报告_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

1、汇编语言程序设计实验报告学 院:信息科学与工程学院专业班级: GOT 7 指导老师: 贺建飚 学 号: i got7 姓 名: 鸟宝宝 实验一一、实验原理通过基本的练习,熟悉汇编平台的使用。以方便后期实验以及程序设计时,对基本操作的熟悉,以及一些基本的调试方法。二、实验目的1. 8086基本指令及寄存器实验2. 熟悉包括数据和转移地址有关的寻址方式3. 了解程序占有的空间和执行时间4. 熟悉使用数据传输指令、算术指令、逻辑指令、串指令、控制转移指令、处理控制与杂项操作指令等等。(数据传输指令通用数据传输指令:MOV、PUSH、POP、XCHG累加器专用传输指令:IN、OUT、XLAT地址传输指

2、令:LEA、LDS、LES标志寄存器传输指令:LAHF、SAHF、PUSHF、POPF类型转化:CBW、CWD算数指令加法指令:ADD、ADC、INC 减法指令:SUB、SBB、DEC、NEG、CMP乘法指令:MUL、IMUL除法指令:DIV、IDIV逻辑指令逻辑运算指令:AND、OR、NOT、XOR、TEST移位指令:SHL、SAL、SHR、SAR、ROL、ROR、RCL、RCR串处理指令:MOVS、CMPS、SCAS、LODS、STOS)5 熟悉汇编平台的使用和汇编程序的典型结构6: 熟悉DEBUG的各种命令7:了解不同指令对各种条件标志的影响三、实验内容程序设计与调试(1)x,y,z 均

3、为双精度数,分别存放于X,X+2,Y,Y+2,Z,Z+2的存储单元中,用指令序列实现w=x+y+24-z,并用 W,W+2单元存放 wDATAS SEGMENT ;此处输入数据段代码 Xdw0102H dw0304H Ydw0506H dw0708H Zdw090AH dw0B0CH Wdw 4 dup(?) DATAS ENDSSTACKS SEGMENT ;此处输入堆栈段代码STACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART: MOV AX,DATAS MOV DS,AX ;此处输入代码段代码 movax,X m

4、ovdx,X+2 addax,Y adcdx,Y+2 addax,24 adcdx,0 subax,Z sbbdx,Z+2 movW,ax movW+2,dx MOV AH,4CH INT 21HCODES ENDS END START每执行一步,观看寄存器、内存、以及标志寄存器是否改变?试着改变 x,y,z的值,如x=33441122H,y=77885566H,z=0BBCC99AAH观察每一步的变化,请问运行结果正确吗?为啥?三、实验结果修改初始值x=33441122H,y=77885566H,z=0BBCC99AAH NV变为OV,表明有溢出,结果不正确。(2) x,y,z,v均为16位

5、带符号数,计算(v-(x*y+z-540)/x 编制程序,用不同的x,y,z,v 带进去,看过程,与结果,并分析结果正确与否实验二一、实验原理根据要求将BX内容从左到右每4位一组在屏幕上显示出来利用循环结构完成每次循环显示一个十六进制数位因而循环次数是已知的计数值为4. 循环体中包括从二进制到所显示字符的ASCII之间的转换以及每个字符的显示后者可以使用DOS功能调用实现。这里采用了循环移位的方法把所要显示的4为二进制数移到最右面以便做数字到字符的转换工作。二、实验目的1. 掌握循环程序的设计方法。2. 掌握汇编语言源程序的编辑、汇编、连接及调试过程。3. 进一步熟悉利用DEBUG程序修改参数

6、的方法并检查和验证结果的正确性。4. 学会针对不同的问题选用不同的组织循环的方法。3、 实验过程循环可以使用LOOP指令或者条件跳转指令来实现。 l Loop指令DATAS SEGMENT ;此处输入数据段代码 DATAS ENDSSTACKS SEGMENT ;此处输入堆栈段代码STACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART: MOV AX,DATAS MOV DS,AX ;此处输入代码段代码 MOV BX,1010000011000100B ;A0C4h mov cx, 4 ;循环次数 rotate: pus

7、h cx mov cl, 4 ; 设置移动的位数 rol bx, cl ;循环左移 mov al, bl ;避免bx中的数被修改 and al, 0fh ;高4位清零 add al, 30h cmp al, 3ah jb printit add al, 7h printit: mov dl, al mov ah, 2 int 21h pop cx loop rotate MOV AH,4CH INT 21HCODES ENDS END STARTl 条件跳转代码段代码 MOV BX,1010000011000100B ;A0C4h mov ch, 4 rotate: mov cl, 4 rol

8、 bx, cl mov al, bl and al, 0fh add al, 30h cmp al, 3ah jb printit add al, 7h printit: mov dl, al mov ah, 2 int 21h dec ch jnz rotate运行结果相同 实验三一、实验原理冒泡排序算法需要从第一个数开始依次对相邻两个数进行比较。如果是按次序排列则不做任何操作如不是按次序排列则使两个数交换位置。一层一层往上冒泡。二、实验目的1. 掌握循环程序的设计方法2. 掌握汇编语言源程序的编辑、汇编、连接及调试过程。3. 进一步熟悉利用DEBUG程序修改参数的方法并检查和验证结果的正确

9、性。4. 学会针对不同的问题选用不同的组织循环的方法。3、 实验内容冒泡排序算法的程序设计与实现(画出原理图,设计程序,调试程序。记录调试关键过程和结果,可能遇到的问题以及解决的方法)用冒泡法对BUFFER变量中存放的10个字节的数据进行排序。采用多层循环,分别考虑两层循环的控制条件和循环体。每次从外层循环再次进入内层循环时,初始条件重新设置,本次实验通过用di寄存器保存外层循环的控制次数。原理图Start(Count1) -n-1(count2) -(count1)i=b(i+1)Nbi与b(i+1)交换Yi=i+1count2- -Ncount2=0?count1- -Ncount1=0?

10、end代码:DATAS SEGMENT ;此处输入数据段代码 n equ 10 buffer DB 18,10,7,8,25,13,2,0,14,5 DATAS ENDSSTACKS SEGMENT ;此处输入堆栈段代码STACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART: MOV AX,DATAS MOV DS,AX ;此处输入代码段代码 mov cx,n dec cx loop1: mov di,cx mov bx,0 loop2: mov al,bufferbx cmp al,bufferbx+1 jge con

11、tinue xchg al,bufferbx+1 mov bufferbx,al continue: add bx,1 loop loop2 mov cx,di loop loop1 MOV AH,4CH INT 21HCODES ENDSEND START结果截屏:实验四一、实验原理调用FIB函数求Fibonacci数,结果高位存在RESULT2H低位存在RESULT2L最后调用OUTPUT函数将结果以十进制的形式显示出来。二、实验目的1. 掌握循环程序的设计方法2. 掌握汇编语言源程序的编辑、汇编、连接及调试过程。3. 进一步熟悉利用DEBUG程序修改参数的方法并检查和验证结果的正确性。4

12、. 学会针对不同的问题选用不同的组织循环的方法。三、实验内容 求Fibonacci递归数(画出原理图,设计程序,调试程序。记录调试关键过程和结果,可能遇到的问题以及解决的方法) 开始 1 CALL INPUT 2 CALL FIB 3 CALL OUTPUT 结束调试过程call inputcall fib运行结果实验五一、实验原理写三个逻辑判断:数字字符判断、大写字母字符判断、小写字母字符判断和其他字母判断对相应字符的个数进行统计。在实现每一个逻辑判断时请使用了两个判断指令。一个判断是否大于或等于该类型字符的最的ASCII码的字符,另一个判断是是否小于或等于该类型字符的最大ASCII码的字符

13、。二、实验目的1. 掌握循环程序的设计方法2. 掌握汇编语言源程序的编辑、汇编、连接及调试过程。3. 进一步熟悉利用DEBUG程序修改参数的方法并检查和验证结果的正确性。4. 学会针对不同的问题选用不同的组织循环的方法。 三、实验内容首先随机给定一个字符串,之后分类(数字,大写字母,小写字母)统计字符个数,并把个数输出到屏幕上(画出原理图,设计程序,调试程序。记录调试关键过程和结果,可能遇到的问题以及解决的方法)DATAS SEGMENT ;此处输入数据段代码 STRINGINPUT db Now,you can input a piece of string:$ STRINGNUTSHULL

14、 db In a nutshull, STRINGNUM db the number of chars is:$STRINGCHAR db the number of digitals is:$ STRINGOTHER db the number of another marks is:$ a db 3 dup(?)DATAS ENDSSTACKS SEGMENT ;此处输入堆栈段代码STACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART: MOV AX,DATAS MOV DS,AX ;此处输入代码段代码 lea dx

15、,STRINGINPUTmov ah,09hint 21hcall crlfLoop:mov bx,0 MOV AH,07H INT 21H mov dl,al MOV AH,02H INT 21H cmp dl,13d ;回车判定 je Result cmp dl,30h jl other cmp dl,3ah jge testChar mov bx,1mov al,abxinc alxchg al,abxjmp LooptestChar: cmp dl,41h jl othercmp dl,5AHjg minCharjle charchar:mov bx,0mov al,abxinc al

16、xchg al,abxjmp LoopminChar:cmp dl,61hjl othercmp dl,7AHjg otherjle charother:mov bx,2mov al,abxinc alxchg al,abx jmp Loop Result:call crlflea dx,STRINGnutshullmov ah,09hint 21h lea dx,STRINGCHARmov ah,09hint 21h mov bx,0mov dl,abxadd dl,30hmov ah,02hint 21h call crlf lea dx,STRINGNUMmov ah,09hint 21h mov bx,1mov dl,abxadd dl,30hmov ah,02hint 21h call cr

温馨提示

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

评论

0/150

提交评论