汇编语言程序设计实验报告_第1页
汇编语言程序设计实验报告_第2页
汇编语言程序设计实验报告_第3页
汇编语言程序设计实验报告_第4页
汇编语言程序设计实验报告_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

广西科技大学实验报告试验课程:计算机组成与汇编语言学生姓名:秦东成学号:00403232专业班级:计Y0965月28日《计算机组成与汇编语言》课程试验汇报试验名称试验1数值转换试验序号1姓名秦东成系院专业计算机工程系班级计Y096学号试验日期.5.28指导教师夏冬雪成绩一、试验目标和要求1.熟悉各种进制之间相互转换方法。2.掌握二-十进制数据相互转换程序设计。3.要求列出程序源程序清单(加以注释),汇报程序运行结果。二、试验内容1.编写程序1:实现将一个16位二进制正整数转换为十进制数。(可用高级语言编写)2.编写程序2:实现将一个十进制整数(<2^16-1)转换为16位二进制数。(可用高级语言编写)三、试验步骤1.程序1源程序清单:#include<stdio.h>#include<string.h>#include<math.h>#include<stdlib.h>voidmain(){ chara[17],b[16]; intsum=0; printf("pleaseinputa16bitbinarydigit:"); gets(a); intl=strlen(a); if(l>16)//输入超出16位时输犯错误并退出 { printf("error!!don'tinputthenumberthatlongerthan16!\n"); exit(0); } for(inti=l-1;i>=0;i--)//不是二进制数时输犯错误并退出 { if(a[i]!='1'&&a[i]!='0') { printf("error!!itisn'tabinartdigit!\n"); exit(0); } else b[i]=a[i]; } for(intj=16;j>=l;j--)//输入小于16位时低位全补0 b[j]='0'; for(intk=0;k<17;k++)//将二进制数转换成十进制数 sum+=(b[k]-48)*pow(2,15-k); printf("turntodecimaldigit:%d\n",sum); printf("thankyouforplaying,bye!\n");}2.程序2源程序清单:#include<stdio.h>#include<string.h>#include<stdlib.h>voidmain(){ floata,w; intb,t=15; charc[16]; printf("pleaseinputadecimaldigit:"); scanf("%f",&a); if(a>65535||a<0)//输入大于65535或小于0或非数字时输犯错误并退出,假如输入要转换数字后再输入其余字符则不处理数字后多出字符 { printf("error!!pleasedon'tinputthatnumbermorethan65535orlessthan0orisn'tanumber!\n"); exit(0); } w=a-(int)a; if(w!=0)//输入为小数时输犯错误并退出,但小数点后全为0时不处理 { printf("error!!pleasedon'tinputafraction!\n"); exit(0); } for(;a>=1;)//将十进制数转成二进制数 { b=(int)a%2; c[t--]=b+48; a/=2; } for(inti=t;i>=0;i--)//转出来二进制数不满16位时高位补0 { c[i]='0'; } printf("turntobinarydigit:"); for(intj=0;j<16;j++) { printf("%c",c[j]); } printf("\n"); printf("thankyouforplaying,bye!\n");}四、试验结果与分析1.程序1运行结果以下。(正常运行)(输入不足16位时)(输入非二进制数时报错)(输入超出16位时报错)2.程序2运行结果以下。(正常运行)(输入大于2^16-1时报错)(输入为负数时报错)(出现非数字时)(输入小数时)试验名称试验5汇编语言次序结构程序设计试验序号2姓名秦东成系院专业计算机工程系班级计Y096学号试验日期.5.28指导教师夏冬雪成绩一、试验目标和要求1.掌握汇编语言次序结构程序设计方法。2.熟悉惯用汇编指令使用方法。3.学会用debug输入、运行小程序,并检验运行情况方法。4.学会在PC机上建立、汇编、连接、调试和运行80x86汇编语言程序过程。5.要求列出调试程序2源程序清单并加以注释,说明该程序功效。6.要求说出调试程序3犯错处,列出调试程序3经修改运行正确后源程序清单及运行结果。7.要求列出编写程序1源程序(加以注释),统计程序运行结果。二、试验内容1.调试程序2.2.编写程序1,实现W=(3X+6Y)*4-8Z,设X=5,Y=3,Z=19。三、试验步骤1.调试程序2源程序清单以下。DATASEGMENT X DB 20H Y DW ? DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV AL,X XOR AH,AH;AH清零 SHL AX,1;实现2X MOV BX,AX;暂存2X到BX MOV CL,2 SHL AX,CL;2X*4=8X ADD AX,BX;8X+2X=10X MOV Y,AX MOV AH,4CH INT 21HCODE ENDS END START2.源程序清单以下。DATA SEGMENT X DW 5 Y DW 3 Z DW 19 W DW ?DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV AX,X MOV CX,3 MUL CX;实现3X MOV BX,AX MOV AX,Y MOV CX,6;实现6Y MUL CX ADD AX,BX;实现3X+6Y MOV CX,4 MUL CX;实现(3X+6Y)*4 MOV BX,AX MOV AX,Z MOV CX,8 MUL CX;实现8Z NEG AX;对8Z取补得到-8Z ADD AX,BX;实现(3X+6Y)*4-8Z MOV W,AX MOV AH,4CH INT 21HCODE ENDS END START四、试验结果与分析1.调试程序1实现功效是Y=10X。2.编写程序1运行结果以下。结果为负数,用补码表示。试验名称试验6汇编语言分支结构程序设计试验序号2姓名秦东成系院专业计算机工程系班级计Y096学号试验日期.5.28指导教师夏冬雪成绩一、试验目标和要求1.掌握分支结构程序特点。2.掌握分支结构程序设计,调试方法。3.熟悉汇编语言程序汇编、连接及调试技术。4.要求说明调试程序1运行结果。5.要求列出编写程序1、2源程序(加以注释),统计程序调试过程及运行结果。二、试验内容1.调试程序1:求无符号字节变量X,Y之差绝对值,存放于字节变量A中。上机运行该程序并检验运行结果是否正确。2.编写程序1:编程实现从键盘输入一位数字,判断其奇偶性,并在屏幕上输出一个标志,若为奇数,则输出1,不然输出0.3.编写程序2:编程实现任意给定X值(-128~127),求符号函数Y值,存于内存单元。当X>0时,Y=5X-3;当X=0时,Y=0;当X<0时,Y=2X。三、试验步骤1.调试程序1源程序以下。DATA SEGMENT X DB 23 Y DB 45 A DB ?DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV AL,X MOV BL,Y CMP AL,BL JAE BIG SUB BL,AL MOV A,BL JMP EXITBIG: SUB AL,BL MOV A,ALEXIT: MOV AX,4C00H INT 21HCODE ENDS END START2.编写程序1源程序清单以下。DATA SEGMENT INPUT DB 'PLEASEINPUTANUMBER:$' INPUT1 DB '$'DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV DX,OFFSET INPUT MOV AH,9 INT 21H;显示字符串PLEASEINPUTANUMBER: MOV AH,1 INT 21H;从键盘上输入一个字符 AND AL,0FH SUB AH,30H;将ASCII码转换成真值 MOV AH,0 MOV BL,2 DIV BL CMP AH,0;将输入数对2求余并与0比较 JZ OUT0;等于0则转到OUT0 JMP OUT1;不然转到OUT1OUT0:;输出一串空格后输出0 MOV DX,OFFSET INPUT1 MOV AH,9 INT 21H MOV DL,30H MOV AH,2H INT 21H JMP EXITOUT1:;输出一串空格后输出1 MOV DX,OFFSET INPUT1 MOV AH,9 INT 21H MOV DL,31H MOV AH,2H INT 21HEXIT: MOV AX,4C00H INT 21HCODE ENDS END START3.编写程序2源程序清单以下。DATASEGMENT X DW 10 Y DW ?DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX CMP X,0;X与0比较 JG NEXT;X大于0则转到NEXT JZ NEXT1;X等于0则转到NEXT1 JL NEXT2,X小于0则转到NEXT2 NEXT: MOV AX,X MOV BX,5 MUL BX SUB AX,3;实现5X-3 JMP EXITNEXT1: MOV AX,0 JMP EXITNEXT2: MOV AX,X MOV BX,2;实现2X MUL BXEXIT: MOV Y,AX;将算出来值传给Y MOV AX,4C00H INT 21HCODE ENDS END START四、试验结果与分析1.调试程序1运行结果以下。经过结果说明程序运行结果正确。2.编写程序1运行结果以下。3.编写程序2运行结果以下。试验名称试验7汇编语言循环结构程序设计试验序号2姓名秦东成系院专业计算机工程系班级计Y096学号试验日期.5.28指导教师夏冬雪成绩一、试验目标和要求1.加深对循环结构了解。2.掌握循环程序设计方法。3.深入熟悉汇编语言程序汇编、连接及调试技术。4.要求说明调试程序1运行结果。5.要求说明调试程序2功效及运行结果。6.要求列出编写程序1、3源程序(加以注释),统计程序调试过程及运行结果。二、试验内容1.调试程序1:统计字符变量X中1个数,存放与字节变量Y中。2.调试程序2。3.编写程序1:编程计算从1到100和。三、试验步骤1.调试程序1源程序以下。DATA SEGMENT X DW 63H Y DB ?DATA ENDSCODE SEGMENT ASSUME CS:CODE;DS:DATASTART: MOV AX,DATA MOV DS,AX MOV AX,X MOV BL,0 MOV CX,16AGAIN: ROL AX,1 JNC NEXT INC BLNEXT: LOOP AGAIN MOV Y,BLEXIT: MOV AX,4C00H INT 21HCODE ENDS END START2.调试程序2源程序以下。DATA SEGMENT ARRAY DB 34,56,0,58,79,0,0,28,98H COUNT EQU $-ARRAYDATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV CX,COUNT MOV BX,-1AGAIN:INC BX CMP ARRAY[BX],0 LOOPNZ AGAIN JZ OK MOV DL,'N' JMP SHOWOK: MOV DL, BL OR DL,30H CMP DL,30H JBE SHOW ADD DL,7SHOW: MOV AH,2 INT 21HEXIT: MOV AX,4C00H INT 21HCODE ENDS END START3.编写程序1源程序清单以下。DATA SEGMENT X DW 0DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV CX,100 MOV BX,0BEGIN: INC BX ADD X,BX LOOP BEGIN MOV AH,4CH INT21HCODE ENDS ENDSTART四、试验结果与分析1.调试程序1运行结果以下。说明运行结果正确。2.调试程序2运行结果以下。说明程序实现功效是查找0第一次出现位置。3.编写程序1运行结果以下。运行正确。试验名称试验8汇编语言子程序设计试验序号3姓名秦东成系院专业计算机工程系班级计Y096学号试验日期.5.28指导教师夏冬雪成绩一、试验目标和要求1.学习子程序定义和调用方法,加深对子程序了解。2.掌握子程序设计、编写及调用方法。3.掌握子程序、嵌套子程序、递归子程序了解。二、试验内容1.调试程序1:上机运行该程序并检验运行结果是否正确。三、试验步骤1.调试程序1程序以下。DSEG SEGMENT TABLE DB 255 DUP(?) N DW 255 CHAR DB ? CRLF DB 0DH,0AH,'$'DSEG ENDSSTACK SEGMENT DW 100DUP(?)STACK ENDSCSEG SEGMENTMAIN PROC FAR ASSUME CS:CSEG,DS:DSEG,SS:STACKSTART: PUSH DS SUB AX,AX PUSH AX MOV AX,DSEGMOV DS,AXBEGIN: MOV BX,0MOV CX,255INPUT: MOV AH,1 INT 21H CMP AL,0DH JZ IN_N MOV TABLE[BX],AL INC BX LOOP INPUTIN_N: MOV N,BX CALL DISP_CRLFIN_CHAR:MOV AH,1 INT 21H CMP AL,0DH JZ EXIT MOV CHAR,AL MOV DL,':' MOV AH,2 INT 21H MOV AL,CHAR MOV CX,N LEA BX,TABLE CALL SEARCH AND DL,0FH ADD DL,30H CMP DL,39H JBE NEXT1 ADD DL,07HNEXT1: MOV AH,2 INT 21H CALL DISP_CRLF JMP SHORTIN_CHAR;此处犯错EXIT: RETMAIN ENDPSEARCH PROC NEAR MOV DL,0ROTATE: CMP AL,[BX] JNZ NEXT2 INC DL NEXT2: INC BX LOOP ROTATE RETSEARCH ENDPDISP_CRLFPROC NEAR LEA DX,CRLF MOV AH,09H INT 21H RETDISP_CRLFENDPCSEG ENDS END START四、试验结果与分析1.调试程序1运行有错,应该把JMP SHORTIN_C

温馨提示

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

评论

0/150

提交评论