合肥工业大学汇编语言实验报告

合集下载

合肥工业大学编译原理实验

合肥工业大学编译原理实验

宣城校区实验报告课程名称编译原理专业班级计算机0001班学生姓名及学号赵保飞 2015216768 指导教师李芒宏实验地点计算机中心楼第四机房2017 ~2018 学年第一学期《编译原理》课程实验报告实验名称词法分析设计姓名赵保飞系院专业计算机科学与技术班级计算机01班学号2015216768实验日期2017.10.18 指导教师李芒宏成绩一、实验目的和要求通过本实验的编程实践,使学生了解词法分析的任务,掌握词法分析程序设计的原理和构造方法,使学生对编译的基本概念、原理和方法有完整的和清楚的理解,并能正确地、熟练地运用。

二、实验原理(1)实验数据结构说明K[]String数组-关键字表;s[]char数组—分界符;m[]char数组—算术运算符;r[]String数组—关系运算符;ArrayList型String数组ci—常数;ArrayList型String数组id—标识符(2)实验算法描述(3)算法流程图三、源程序代码和测试结果package lexicalAnalysis;import java.util.*;import java.io.*;public class lexicalAnalysis{static Stringk[]={"for","main","if","while","void","public","static","printf","scanf","asm","do","return","typedef","auto","double","break", "short","using","default","long"};//关键字static char s[]={',',';','(',')','[',']','{','}'};//2分界符static char m[]={'+','-','*','/'};//3算术运算符static String r[]={"<","<=","=",">",">=","<>"};//4关系运算符ArrayList<String>ci=new ArrayList<String>();//5常数ArrayList<String>id=new ArrayList<String>();//6标识符String tempToken="";//临时存放组成一个“词”单位串int pint,row=1,line=1;//当前指针指示,行数,列数char ch;//存放最新读入源程序字符String instring;//存放输入de源程序代码public static void main(String[]args)throws Exception{// TODO Auto-generated method stublexicalAnalysis one=new lexicalAnalysis();System.out.println("单词"+"\t二元序列"+"\t类型"+"\t位置(行,列)");one.readtext();}boolean isdigit(char c){//判断所读字符是否为数字,是则返回ture,否则返回falseif(c>=48&&c<=57)return true;elsereturn false;}boolean isletter(char c){//判断所读字符是否为字母,是则返回true,否则返回falseif((c>64&&c<91)||(c>96&&c<123))return true;elsereturn false;}boolean isline(char c){//判断字符c是否是下划线"_"if(c=='_')return true;elsereturn false;}boolean remove(){//用于在判断关系运算符时,判断是否是要再读一个字符char b=instring.charAt(pint+1);//string类charAt() 方法用于返回指定索引处的字符。

汇编语言实验报告

汇编语言实验报告

汇编语言实验报告实验一实验目的:1. 掌握程序结构2. 掌握七种寻址方式3. 掌握三种类型指令(传送指令,算术指令,逻辑指令)4. 掌握数据定义方式及存储方式5. 掌握不同进制,正负数值,字符的表示实验要求:1. 编制完整顺序结构程序2. 包含上述七种寻址方式3. 至少三种以上数据定义4. 调试每条指令的执行结果,做好记录5. 记录内存地址分配和变化结果实验结果:1.部分代码及分析;=======================数据段=============D1 SEGMENTA1 DW 1122HA2 DB 5A3 DW 3344HA4 DW?COUNT EQU 6COUNT1 DW 0COUNT2 DW 0M DB 13,10,'MASM for Windows1213243524365 MASM for WINDOWS 121',13,10,'$'L DB50 DUP(0)N DW50D1 ENDS;代码段;=====A1+A2结果存放到AX中=====MOV AX,A1MOV BX,A3ADD AX,BX;=======七种寻址方式=====MOV BX,A4 ;立即数寻址,将a4的值赋到bx中mov AX,BX 将BX的值传送到AX,;MOV BX,[2000] ;直接寻址,bx的值由ds和所给的偏移地址确定SUB AX,BX ;AX-BX并将结果存入AX中MOV BX,AX ;寄存器寻址,将AX中的操作数赋值到BX中ADD AX,BX ;将BX于AX的值相加,并将结果存入AX中。

MOV CX,AX ;将AX的值赋到CX中。

MOV AX,[BX] ;寄存器间接寻址,操作数的物理地址由堆栈段寄存器SS与BX中的偏移地址构成;SUB AX,CX ;AX-CX并将结果存入AX中MOV BX,COUNT[BP]; 基址寻址,偏移地址是指令中给定的偏移量count和基数指针BP的内容之和。

汇编语言实验报告

汇编语言实验报告

实验一汇编程序的汇编及运行1.实验目的和要求1、熟悉汇编程序的汇编、连接、执行过程2、生成LST文件,查看LST文件3、生成OBJ文件,修改语法错误4、生成EXE文件5、执行2.实验环境IBM—PC机及其兼容机实验的软件环境是:操作系统:DOS 2.0以上;调试程序:;文本编程程序:EDIT.EXE、WPS.EXE;宏汇编程序:MASM.EXE(或ASM .EXE);连接装配程序:LINK .EXE;交叉引用程序:CREF.EXE(可有可无)。

3.实验内容及实验数据记录1、将数据段输入,取名1.txt,保存在MASM文件夹下。

生成LST文件,(不必连接、运行)用EDIT查看1.LST文件。

试回答:DA1,DA2的偏移量分别是多少?COUNT的值为多少?DATA SEGMENTORG 20HNUM1=8NUM2=NUM1+10HDA1 DB ‘IBM PC’DA2 DB 0AH, 0DHCOUNT EQU $-DA1DATA ENDSEND2、输入有错误的文件,修改错误语句。

(MASM没有出现错误即可。

不必连接、运行。

)DATA SEGMENTVAR1 DB 0, 25, ODH, 300VAR2 DB 12H, A4H, 6BHVAR3 DB ’ABCDEF’VAR4 DW 1234H, 5678HVAR5 DW 10H DUP(?)DATA ENDSCODE SEGMENTASSUME CS: CODE, DE: DATA BEING MOV AX, DATAMOV DS, AXLEA SI, VAR5MOV BX, OFFSET VAR2MOV [SI], 0ABHMOV AX, VAR1+2MOV [BX], [SI]MOV VAR5+4, VAR4MOV AH, 4CHINT 21HCODE ENDSEND START3、输入正确的程序,汇编、连接、运行STACKS SEGMENT STACKDW 128 DUP(?)STACKS ENDSDATAS SEGMENTSTRING DB ‘WELCOME!’, 13, 10, ‘$’DATAS ENDSCODES SEGMENTASSUME CS: CODES, DS: DATASSTART:MOV AX, DATASMOV DS, AXLEA DX, STRINGMOV AH, 9INT 21HMOV AH, 4CHINT 21HCODES ENDSEND START4.算法描述及实验步骤(1)编写源程序。

汇编语言编程实验报告

汇编语言编程实验报告

汇编语言编程实验报告学号:姓名:成绩:目录一、实验一: ................................................... 错误!未定义书签。

二、实验二: (4)三、实验三: (8)四、实验四: (10)五、实验五: ................................................... 错误!未定义书签。

六、实验六: (19)七、汇编实验总结 (23)实验一一.实验题目【汇编语言补充作业T20】编写完整程序,利用DOS系统功能调用,从键盘输入一个字符串,并将该字符串从屏幕上换行后并输出。

二.程序流程及思路实现字符串输入,需要分成三个步骤:1、在数据段中定义一个缓存区为存放字符串做准备;2、DOS系统功能调用0AH号子功能,(DS:DX)= 输入缓冲区首址;3、在输入的字符串尾加上‘$’字符,以作为输出结束条件。

实现字符串输出,则需要注意的问题是:1、缓冲区第三个字节才开始存放输入的字符,前两个字节分别存放缓冲区长度和字符串实际字符数;2、输出回车换行可利用字符串:CR DB 0AH,0DH,’$’。

三.源程序清单DATA SEGMENTN EQU 50MAXLEN DB N ;缓冲区字符的最大长度ACTLEN DB ? ;实际字符个数STRING DB N DUP(?) ;字符空间CR DB 0AH,0DH,'$'DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART: MOV AX,DATAMOV DS,AXLEA DX,MAXLENMOV AH,0AHINT 21H ;字符串输入MOV AH,09HLEA DX,CRINT 21H ;回车换行MOV BL,MAXLEN+1 ;取实际的字符长度MOV BH,0LEA SI,MAXLEN+2 ;取字符开始的首地址MOV BYTE PTR [SI+BX],'$' ;输出结尾要加上$MOV DX,SI ;把开始存放字符的首地址赋给DX MOV AH,09HINT 21HMOV AH,4CHINT 21HCODE ENDSEND START四.结果拷屏实验二一. 实验题目【汇编语言补充作业T23】假设CX:BX中存放了4为非压缩的BCD码表示的十进制数4386,请编写完整程序将这个数转化成2进制数并存放到DI寄存器中。

计算机汇编语言实验报告

计算机汇编语言实验报告

计算机汇编语言实验报告一、实验目的本实验旨在通过编写计算机汇编语言程序,加强对计算机组成原理和汇编语言的理解,同时熟悉实际编写和调试过程。

二、实验内容1.用汇编语言编写一个简单的计算器程序,实现加法和减法操作。

2.编译并运行程序,测试其功能的正确性。

3.运用调试工具进行程序的调试,检查代码的运行流程。

三、实验步骤1.确定程序功能和设计思路:本次实验的目标是编写一个计算器程序,能够对两个数进行加法和减法操作。

我们可以通过定义一些操作码来表示不同的操作,再通过输入不同的操作码来执行相应的操作。

2.编写汇编语言程序:首先,需要定义一些变量和常量来存储输入的数和操作码。

然后,使用汇编语言的运算指令和控制指令来实现加法和减法操作,并将结果存储到指定的变量中。

最后,使用输出指令来显示结果。

3.编译并运行程序:将汇编语言程序编译为机器码,并通过计算机的指令集执行程序。

4.调试程序:利用调试工具,逐步执行程序,检查代码的运行流程和结果的正确性。

如有错误,进行适当的修改和调试。

5.测试功能和性能:使用不同的数和操作码进行测试,验证程序的功能和正确性。

四、实验结果经过编写、编译和调试,我们成功实现了一个简单的计算器程序。

程序能够根据输入的操作码,对两个数进行加法和减法操作,并将结果显示出来。

经过多次测试,程序的功能、正确性和性能都符合预期要求。

五、实验感想通过本次实验,我们对计算机组成原理和汇编语言有了更深入的理解。

在编写程序的过程中,我们发现汇编语言相比高级语言更加底层,需要考虑更多的细节和机器指令的使用。

同时,我们也意识到了调试的重要性,调试工具能够帮助我们分析和修正代码的错误,提高程序的质量。

六、实验总结通过本次实验,我们对计算机汇编语言的应用有了更深入的了解。

我们掌握了汇编语言程序的基本结构和语法规则,学会了使用汇编语言指令进行计算和控制。

同时,我们也提升了调试和测试的能力,加深了对计算机组成原理和汇编语言的理解。

汇编语言实验报告

汇编语言实验报告

汇编语言实验报告实验一汇编语言的源程序的输入一、实验目的1.通过实验了解和熟悉微机系统的配置2.学习在DEBUG状态下输入汇编源程序的方法3.初步掌握调试(在DEBUG状态下)的过程二、实验原理1.本实验在DEBUG状态下输入汇编源程序,并且用DEBUG命令进行调试,用单步跟踪的方法试验指令的功能;2.以下是给定的参考程序,并在实验时每条指令的“;”等号右边按要求填写指令的分析结果。

三、实验步骤1.开机后进入DOS系统2.用DEBUG的REGISTER命令检查所有寄存器内容,并作记录R[寄存器名]3.用DEBUG的ASSEMBLE命令输入汇编源程序A[内存地址]4.用DEBUG的UNASSEMBLE命令反汇编U[起始地址][终止地址]5.用DEBUG的TRACE命令单步跟踪程序T[起始地址][终止地址]6.用DEBUG的DUMP命令显示存贮器单元的内容四、参考程序及结果MOV AX,2000 ;AL=00MOV DS,AX ;DS=2000NOT AX ;AX=DFFFXOR AX,AX ;AX=0000DEC AX ;AX=FFFFINC AX ;AX=0000MOV BX,2030 ;BH=20MOV SI,BX ;SI=2030MOV [SI],BL ;[2030H]=30MOV WORD PTR[SI],10F ;[2030H]=0F [2030H]=01 MOV DI,SI ;DI=2030MOV [DI+50],BH ;[DI+50]=20MOV BH,[SI] ;BH=0FMOV BL,[DI+50] ;BL=20MOV SP,5000PUSH AX ;AX=0 [SS:4FFEH]=00H [SS:4FFFH]=00H PUSH BX ;BX=0F20 [SS:4FFCH]=20H [SS:4FFDH]=0FH POP AX ;AX=0F20POPF ;F=00000000NEG BX ;BX=F0E0XCHG BX,AX ;BX=0F20STD ;F=01010001STI ;F=01110001CLD ;F=00110001CLI ;F=00010001ADC DI,2050 ;DI=4081 F=00000010ADC SP,DI ;SP=9081 F=10010010ADC AX,1500 ;AX=05E0 F=00000001SUB AX,BX ;AX=F6C0 BX=0F20SHL AH,1 ;AH=ECRCL AX,1 ;AX=D981SHR BX,1 ;BH=07RCR BL,1 ;BL=90MOV CL,4MOV DX,80F0ROL DX,CL ;DX=0F08 CL=04INT 20 ;CS=00A7 IP=1072实验二数据的建立与传送程序一、实验目的1.学习DEBUG命令2.验证指令的功能二、实验原理在DEBUG状态下,输入程序,用G命令进行连续方式执行程序,用DUMP命令查看建立的数据块内容三、参考程序及结果1.在内存1000单元开始,建立00H~0FH~00H 31个数,要求00H~0FH数据逐渐增大,0FH~00H逐渐减小,程序从内存CS:0100H地址开始输入MOV AX ,100HMOV DS ,AXMOV SI,0MOV CL ,0FHXOR AX,AXPPE1: MOV [SI] ;ALINC SI ;INC ALDEC CLJNZ PPE1MOV CX,10HPPE2:MOV[SI],ALINC SIDEC ALLOOP PPE2INT 20H数据块的内容1000:0000:00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 1000:0100:0E 0D 0C 0B 0A 09 08 07 06 05 04 03 02 01 002.把上一程序的执行结果分几种方式传送到以下指定区域(a)该程序从内存CS:0150H开始输入,把数据块传送到15050H 开始的存储区域中MOV AX,1000HMOV DS,AXMOV SI,0MOV DI,5050HMOV CX,1FHPPEA: MOV AL,[SI]MOV [DI],ALINC SIINC DILOOP PPEAINT 20H结果:1000:5050 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 1000:5060 0E 0D 0C 0B 0A 09 08 07 06 05 04 03 02 01 00(b)用串传送指令MOVSB,把数据块传送到15150H开始的区域,该程序从内存CS:0200H开始输入MOV AX,100HMOV DS,AXMOV ES,AXMOV SI,0MOV DI,5150HMOV CS,1FHCLDPPEB: MOVSBLOOP PPEBINT 20H结果:1000:5150 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 1000:5160 0E 0D 0C 0B 0A 09 08 07 06 05 04 03 02 01 00(C)用重复串操作指令”REP MOVSB”把数据传送到15250H开始的区域,该程序从CS:250H地址开始输入MOV AX,1000HMOV DS,AXMOV ES,AXMOV SI,0MOV DI,5250HMOV CX,1FHCLDREPZMOVSBINT 20H结果:1000:5250 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 1000:5260 0E 0D 0C 0B 0A 09 08 07 06 05 04 03 02 01 00(c)用串操作的减量工作方式,把数据传送到25050H开始的区域,该程序从CS:0300H开始输入MOV AX,1000HMOV DS,AXADD AX,AXMOV ES,AXMOV SI,1EHMOV DI,506EHMOV CX,1FHSTDREP MOVSBINT 20H结果:2000:5050 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 2000:5060 0E 0D 0C 0B 0A 09 08 07 06 05 04 03 02 01 00实验四统计学生成绩程序一、实验目的进一步掌握分支程序和循环程序的编写方法二、实验原理设有10个学生的成绩分别为56,69,84,82,73,88,99,63,100和80分。

汇编语言实验报告

汇编语言实验报告

实验报告一:汇编语言实验基础一.实验目的:1. 熟悉汇编语言程序的开发过程以及汇编语言常用软件的使用方法2. 掌握DEBUG常用命令的使用方法二、实验内容:1.DEBUG 命令使用2.8088常用指令练习三、实验步骤:(一)DEBUG 命令使用:1、打 DEBUG 进入 DEBUG 控制,显示提示符'_ '。

2、用命令 F 100 10F 'A' 将'A'的ASCII码填入内存。

3、用命令 D 100 10F 观察内存中的16进制码及屏幕右边的ASCII字符。

4、用命令 F 110 11F 41 重复上二项实验,观察结果并比较。

5、用命令 E 100 30 31 32 …… 3F将30H-3FH写入地址为100开始的内存单元中,再用D命令观察结果,看键入的16进制数是什么字符的ASCII码? 6、用H命令检查下列各组16进制数加减结果并和你的手算结果比较:(1)34H,22H (2)56H,78H (3)A5,79H (4)1284H,5678H(5)A758,347FH7、用R 命令检查各寄存器内容,特别注意AX,BX,CX,DX,IP及标志位中ZF,CF 和AF的内容。

8、用R命令将AX,BX内容改写为1050H及23A8H。

(二)8088常用指令练习1、传送指令1)用A命令在内存100H处键入下列内容:MOV AX,1234MOV BX,5678XCHG AX,BXMOV AH,35MOV AL,48MOV DX,75ABXCHG AX,DX2)用U命令检查键入的程序,特别注意左边的机器码。

3)用T命令逐条运行这些指令,注意有关寄存器及IP的变化情况。

并注意标志位有无变化。

2、加减法指令:1)用A命令在内存100H处键入下列内容:MOV AH,34MOV AL,22ADD AL,AHSUB AL,78MOV CX,1284MOV DX,5678ADD CX,DXSUB CX,AXSUB CX,CX2)用U命令检查键入的程序及对应的机器码。

(完整版)汇编语言实验报告5574277

(完整版)汇编语言实验报告5574277

合肥工业大学计算机与信息学院实验报告课程:汇编语言程序设计专业班级:学号:姓名:实验一Debug程序的使用一.实验目的1、熟悉DEBUG程序中的命令,学会在DEBUG下调试运行汇编语言源程序。

2、掌握8086/8088的寻址方式及多字节数据的处理方法。

二.实验内容1、利用DEBUG程序中的“E”命令,将两个多字节数“003F1AE7H”和“006BE5C4H”分别送入起始地址为DS:0200H和DS:0204H两个单元中。

2、分别用直接寻址方式和寄存器间接寻址方式编写程序段,实现将DS:0200H单元和DS:0204H单元中的数据相加,并将运算结果存放在DS:0208H单元中。

要求:本次实验的内容均在DEBUG下完成,实现数据的装入、修改、显示;汇编语言程序段的编辑、汇编和反汇编;程序的运行和结果检查。

三.实验过程和程序1.e ds:0200 78 56 34 12e ds:0204 98 BA DC FE2.直接寻址:mov ax,[0200]mov bx,[0202]add ax,[0204]adc bx,[0206]mov [0208 ],axmov [020a],bx间接寻址:mov si,[0200]mov di,[0204]mov bx,[0208]mov ax,[si]mov dx,[si+2]add ax,[di]adc dx,[di+2]mov [bx],axmov [bx+2],dx附加题1e ds:0000 1c 02e ds:0002 01 00e ds:0004 FF FFe ds:0006 38 04e ds:0008 00 00Microsoft Windows [???? 6.1.7600]???????? (c) 2009 Microsoft Corporation???????????????? C:\Users\Administrator>debug-e ds:0000 1c 02-e ds:0002 01 00-e ds:0004 FF FF-e ds:0006 38 04-e ds:0008 00 00-a13B3:0100 mov ax,[0000]13B3:0103 mov bx,[0002]13B3:0107 imul bx13B3:0109 mov cx,ax13B3:010B mov bx,dx13B3:010D mov ax,[0004]13B3:0110 cwd13B3:0111 add cx,ax13B3:0113 adc bx,dx13B3:0115 sub cx,21c13B3:0119 sbb bx,013B3:011C mov ax,[0006]13B3:011F cwd13B3:0120 sub ax,cx13B3:0122 sbb dx,bx13B3:0124 mov bx,[0000]13B3:0128 idiv bx13B3:012A mov [0008],ax13B3:012D-g =0100 012dAX=0002 BX=021C CX=FFFF DX=0001 SP=FFEE BP=0000 SI=0000 DI=0000DS=13B3 ES=13B3 SS=13B3 CS=13B3 IP=012D NV UP EI PLZR AC PE CY13B3:012D 0000ADD [BX+SI],AL DS:021C=00-四.实验结果1.利用DEBUG程序中的“E”命令,将两个多字节数“003F1AE7H”和“006BE5C4H”分别送入起始地址为DS:0200H和DS:0204H两个单元中。

汇编语言编程实验报告

汇编语言编程实验报告

一、实验目的与要求1.掌握汇编程序由编辑、编译、连接到调试的全过程;2.通过汇编调试工具加深对机器指令执行的过程掌握。

二、实验逻辑原理图与分析(汇编—流程图)2.1 画实验逻辑原理图2.2 逻辑原理图分析(所应用单板机内部资源及外围接口芯片的核心分析)三、程序分析3.1 DEBUG命令综合应用试验1-A …………………………进入debug命令;Mov AX,0102 ADD AX,BXMov [0120],AX MOV [0124],AXMOV BX,0304MOV [0122],BXC+BREAK退出A命令。

-T 10………………………………执行程序。

此程序是讲0102和0304分别存入到0120H和0122H单元。

并且相加得最后结构存入到0124H单元中。

3.2 DEBUG命令综合应用试验2-E 200 b2 33 84 02 cd 21 cd 20-G 200 208-U 200 208此段代码是讲一段机器代码指令写入200-208,然后用G命令执行,最后用U命令反汇编。

3.3 DEBUG命令综合应用试验3-F 100 10f FF-D 100 10f-M 100 10f 200-E 201 ee ee ee-C 100 10f 200此段命令是将FF装入 100-10F单元中。

在用D命令显示,用M命令讲100-10F单元的内容复制到200-20F单元中。

再用E命令修改201,202,203,里面的内容为EE,最后用C命令比较100-10F和200-20F单元里面的内容的不同。

四、实验数据和结果分析4.1 实验结果数据4.1.1 DEBUG命令综合应用试验1实验结果数据。

-d 0124 012505 064.1.2 DEBUG命令综合应用试验2实验结果数据。

3B233 MOV DL,33B402 MOV AH 02CD21 INT 21CD20 INT 204.1.3 DEBUG命令综合应用试验3实验结果数据。

汇编语言课程实验1_1

汇编语言课程实验1_1

汇编语言第一次实验报告班级软091学号099074140姓名陈浩指导教师陆勤安徽工业大学实验一 显示AL 寄存器中的两位十六进制 一、 程序流程图二、 程序源代码 mov ch, 2 mov al,27h mov bl,al again:mov cl, 4 rol bl, cl mov dl, bl and dl, 0fh add dl, 30h cmp dl, 3ah jl print add dl, 7hprint:mov ah, 2int 21hdec chjnz again 三、DEBUG调试验五循环程序实验一、实验目的:1、掌握循环程序的设计方法。

2、进一步熟悉利用DEBUG程序修改参数的方法,并检查和验证结果的正确性。

3、学会针对不同的问题,选用不同的组织循环的方法。

二、实验内容:编写一个程序,显示AL寄存器中的两位十六进制数。

三、编程提示:利用DOS功能调用INT21H的1号功能从键盘输入字符和2号功能在显示器上显示一个字符。

四、实验报告:1、程序说明。

说明程序的功能、结构。

2、调试说明。

包括上机调试的情况、上机调试步骤、调试所遇到的问题是如何解决的,并对调试过程中的问题进行分析,对执行结果进行分析。

3、画出程序框图。

4、写出源程序清单和执行结果。

实验报告系班级学号姓名同组者指导教师实验六分支程序实验一、实验目的:1、掌握分支程序的设计方法。

2、掌握利用DEBUG修改参数、检查结果的方法。

3、掌握汇编语言源程序的编辑、汇编、连接及调试过程。

二、实验内容:编写一个程序,判别键盘上输入的字符;若是1~9字符,则显示之;若是A~Z 或a~z字符,则显示’c’;若是回车字符<CR>(其ASCII码为ODH),则结束程序;若是其它程序则不显示,继续等待新的字符输入。

三、编程提示:利用DOS功能调用INT21H的1号功能从键盘输入字符和2号功能在显示器上显示一个字符。

四、实验报告:1、程序说明。

合肥工业的大学编译原理实验报告材料(完整代码版)

合肥工业的大学编译原理实验报告材料(完整代码版)

计算机与信息学院编译原理实验报告专业班级信息安全13-1班学生姓名及学号马骏 2013211869 课程教学班号任课教师李宏芒实验指导教师李宏芒实验地点实验楼机房2015 ~2016 学年第二学期实验1 词法分析设计一、实验目的通过本实验的编程实践,使学生了解词法分析的任务,掌握词法分析程序设计的原理和构造方法,使学生对编译的基本概念、原理和方法有完整的和清楚的理解,并能正确地、熟练地运用二、实验要求1、编程时注意编程风格:空行的使用、注释的使用、缩进的使用等。

2、将标识符填写的相应符号表须提供给编译程序的以后各阶段使用。

3、根据测试数据进行测试。

测试实例应包括以下三个部分:全部合法的输入。

各种组合的非法输入。

由记号组成的句子。

4、词法分析程序设计要求输出形式:例:输入VC++语言的实例程序:If i=0 then n++;a﹤= 3b %);输出形式为:单词二元序列类型位置(行,列)(单词种别,单词属性)for (1,for ) 关键字(1,1)i ( 6,i ) 标识符(1,2)= ( 4,= ) 关系运算符(1,3) 120 ( 5,0 ) 常数(1,4)then ( 1,then) 关键字(1,5)n (6,n ) 标识符(1,6)++ Error Error (1,7); ( 2, ; ) 分界符(1,8)a (6,a ) 标识符(2,1)﹤= (4,<= ) 关系运算符(2,2)3b Error Error (2,4)% Error Error (2,4)) ( 2, ) ) 分界符(2,5); ( 2, ; ) 分界符(2,6)三、实验内容用 VC++/VB/JAVA 语言实现对 C 语言子集的源程序进行词法分析。

通过输入源程序从左到右对字符串进行扫描和分解,依次输出各个单词的内部编码及单词符号自身值;若遇到错误则显示“Error”,然后跳过错误部分继续显示;同时进行标识符登记符号表的管理。

汇编语言实验报告含代码(合肥工业大学)

汇编语言实验报告含代码(合肥工业大学)

合肥工业大学实验报告课程:汇编语言程序设计专业班级:学号:姓名:实验一Debug程序的使用一.实验目的1、熟悉DEBUG程序中的命令,学会在DEBUG下调试运行汇编语言源程序。

2、掌握8086/8088的寻址方式及多字节数据的处理方法。

二.实验内容实验内容:1、利用DEBUG 程序中的“E”命令,将两个多字节数“12345678H”和“FEDCBA98H”分别送入起始地址为DS:0200H 和DS:0204H 两个单元中。

2 、分别用直接寻址方式和寄存器间接寻址方式编写程序段,实现将DS:0200H 单元和DS:0204H 单元中的数据相加,并将运算结果存放在DS:0208H 单元中。

实验要求:本次实验的内容均在DEBUG 下完成,实现数据的装入、修改、显示;汇编语言程序段的编辑、汇编和反汇编;程序的运行和结果检查。

三.实验过程和程序1、启动DOS 操作系统2、运行 程序(若当前盘为C)C: >DEBUG ↙–;(“–”为DEBUG 提示符,仅当屏幕出现该提示符后,才可输入DEBUG命令)3、用“A”命令编辑和汇编源程序–A ↙186E :0100 MOV AX,[0200]↙186E :0103 MOV BX,[0202]↙186E :0107 ADD AX,[0204]↙186E :010B ADC BX,[0206]↙186E :010F MOV [0208],AX ↙186E :0112 MOV [020A],BX ↙186E :0116 ↙4、用“U ”命令反汇编验证源程序–U CS:0100 ↙186E :0100 A10002 MOV AX,[0200]186E :0103 8B1E0202 MOV BX,[0202]186E :0107 03060402 ADD AX,[0204]186E :010B 131E0602 ADC BX,[0206]186E :010F A30802 MOV [0208],AX186E :0112 891E0A02 MOV [020A],BX186E :0116–注意:检查源程序是否有错误,若有则返回到第3 步用“A 地址”命令进行修改,直到程序无错误。

《汇编语言》实验报告模板实验一

《汇编语言》实验报告模板实验一

成 绩 评 定 教师签名: 2015 年 月 日
1. 熟练操作宏汇编的开发环境,熟悉汇编语言的编译工具(MASM6.11)及调试器
(Windbg)的使用。
2. 掌握汇编语言的寻址方式和常用指令。 3. 掌握汇编语言基本的程序设计方法和调试手段。 4. 掌握子程序和宏指令的设计和调试手段。
实验要求:
1. 上机前应做好充分的准备。对选定的实验题要先进行设计包括程序框图、数据
2、执行结果截图
内容包括:总结经验提高编程及调试能力。调试情况,如上机时遇到的问题及解决的办 法,观察到的现象及其分析,对程序设计技巧的总结及分析等;程序的输出结果及对结 果的分析;实验的心得体会等。
实 验 结 果 分 析 及 心 得 体 会
通过本次实验熟悉了汇编语言的寻址方式和一些常用指令(运算,循环,过程及 其调用) ,了解了汇编语言中程序的特点,掌握了汇编语言中程序编写的方法,完善了 编写一个完整的简单程序的整体思维结构。
grade 2 ? percent 2 ? grade 3 ? percent 3 ? 75 20 82 60
score is : 81 提示: 总评成绩 = (期中成绩×百分比 1+实验成绩×百分比 2+期末成绩×百分比 3)/100
1、程序清单。 数据段:
.DATA ; reserve storage for data grade1 DWORD ? grade2 DWORD ? grade3 DWORD ? string BYTE 20 DUP (?) prompt1 BYTE "Please input the grade1 : ",0 prompt2 BYTE "Please input the percent of the grade1 : ",0 prompt3 BYTE "Please input the grade2 : ",0 prompt4 BYTE "Please input the percent of the grade2 : ",0 prompt5 BYTE "Please input the grade3 : ",0 prompt6 BYTE "Please input the percent of the grade3 : ",0 prompt7 BYTE "The result is : ",cr,lf,0 sum DWORD ? result BYTE 20 DUP (?) BYTE cr,lf,0

汇编实验报告总结

汇编实验报告总结

汇编实验报告总结
在本次汇编实验中,我们学习了汇编语言的基础知识和汇编程序的编写方法,通过实验锻炼了自己的编程能力和解决问题的能力。

在实验中,我们首先学习了X86汇编语言的基本语法,包括数据类型、指令格式、寻址方式等。

通过实践,我们掌握了汇编语言的基本编写方法,能够编写简单的汇编程序。

接着,我们学习了汇编程序的调试方法和工具,如调试器和监视器等。

通过调试,我们可以发现程序中的错误和问题,并及时进行修正和改进。

最后,我们学习了如何编写实用的汇编程序,如计算器、排序算法等。

通过实践,我们对汇编语言的应用有了更深入的了解,并提高了自己的编程技能。

通过本次实验,我们不仅学习了汇编语言的基本知识和编程方法,还锻炼了自己的思维能力和实践能力。

相信这些经验和知识将对我们以后的学习和工作有所帮助。

- 1 -。

合肥工业大学单片机实验报告

合肥工业大学单片机实验报告

《单片机原理与程序设计》课程实验报告姓名:**学号: **********班级:通信工程17-1班指导老师:王昕,吴从中目录实验一系统认识 (2)(一)实验目的 (2)(二)实验内容及要求 (2)(三)实验过程和结果 (2)实验二查表程序设计 (11)(一)、实验目的 (11)(二)实验内容及要求 (11)(三)程序框图 (11)(四)设计说明 (12)(五)运行结果 (13)(六)心得体会 (13)实验三十进制数1-100累加运算 (14)(一)实验目的 (14)(二)程序设计实验报告要求 (14)(三)程序框图 (14)(四)设计说明 (15)(五)程序运行结果 (17)(六)心得 (17)实验四数据交换程序设计 (18)(一)实验目的 (18)(二)程序设计实验报告要求 (18)(三)程序框图 (18)(四)设计说明 (19)(五)运行结果 (20)(六)心得体会 (21)实验五定时器应用实验 (22)(一)实验目的 (22)(二)实验程序框图 (22)(三)实验内容及步骤。

(23)(四)硬件仿真结果及程序分析 (25)(五)心得体会 (25)实验六并行口应用—模拟广告灯实验 (26)(一)实验目的 (26)(二)实验程序框图 (26)(三)实验内容及步骤 (27)(四)试验箱仿真结果 (32)(五)实验心得体会 (34)实验一系统认识(一)实验目的1、学习及掌握在Keil C51开发平台上建立、汇编、连接、调试及运行汇编程序的方法和步骤。

2、学习及掌握μVision2系统项目窗口、调试窗口和存储器窗口等常用平台的操作。

3、学习及掌握MCS-51汇编源程序的书写格式和汇编语言的语法规则。

(二)实验内容及要求1、以《单片机原理及应用实验教程》(第2版)“第2章实验1”中示例汇编语言源程序为蓝本,学习及掌握在μVision2平台上开发单片机应用程序的一般步骤。

2、学习μVision2平台项目窗口、调试窗口和存储器窗口等常用平台的使用。

汇编语言编程实验报告

汇编语言编程实验报告

汇编语言编程实验报告汇编语言程序设计实验报告(一)汇编语言程序设计实验报告(一)一、预备知识汇编语言程序设计是一门实践性很强的课程。

编写程序、上机调试、运行程序是进一步学习和掌握汇编语言程序设计的必要手段。

二、实验目的1、掌握实验运行汇编语言所用的计算机机型2、熟悉常用编辑程序(行编辑程序EDLIN、全屏幕编辑程序QE及其它用于文件编辑的应用程序。

)3、掌握汇编程序ASM、宏汇编程序MASM1.0以上。

4、LINK连接程序5、DEBUG调试程序三、汇编语言源程序上机操作过程2、编辑源文件根据给定的任务,可编写程序。

如果经过检查认为所编程序无错时,就可在计算机上通过编辑程序建立源程序文件了。

一般在编辑过程中总会有错误产生,因此还要进行人工检查、修改以致重新编辑,直到所编辑的源程序无误为止,然后以一个源程序文件(ASM文件)存盘。

将包含QE文件的工作磁盘插入驱动器A:。

进入QEA\QE进入全屏幕后可以开始编程。

文件名取为Myprog。

asm;Ddisplystring (09H)CODESEGMENTPUBLICASSUME CS:CODE,DS:CODEORG 100HSTART:JMP BEGINMSG DB‘Hi ! This ia a dollar sign terminated string.’,’$’BEGIN:MOV AX,CS ;set up to display messageMOV DS,AXMOV DX,OFFSET,SG ;set up to display messageMOV AH,09H;display string function requestINT 21H ;call DOSMOV AH ,4CH ;terminate propram funct requestINT 21H ;Call DOSCODE ENDS;end of code segmentEND START;strat is the entry point输入完毕后,按ALT---X,存盘返回DOS3、汇编源程序文件(ASM,MASM)由编辑程序所建立的ASM文件只是个文本文件,计算机无法执行。

汇编语言实验报告模板

汇编语言实验报告模板

合肥工业大学计算机与信息学院实验报告课程:汇编语言程序设计专业班级:学号:姓名:实验一Debug程序的使用一.实验目的1、熟悉DEBUG程序中的命令,学会在DEBUG下调试运行汇编语言源程序。

2、掌握8086/8088的寻址方式及多字节数据的处理方法。

二.实验内容1、利用DEBUG程序中的“E”命令,将两个多字节数“003F1AE7H”和“006BE5C4H”分别送入起始地址为DS:0200H和DS:0204H两个单元中。

2、分别用直接寻址方式和寄存器间接寻址方式编写程序段,实现将DS:0200H 单元和DS:0204H单元中的数据相加,并将运算结果存放在DS:0208H单元中。

要求:本次实验的内容均在DEBUG下完成,实现数据的装入、修改、显示;汇编语言程序段的编辑、汇编和反汇编;程序的运行和结果检查。

三.实验过程和程序四.实验结果(包括必要的截图)五.实验体会实验二汇编语言程序设计(顺序、循环)一.实验目的1、掌握顺序和循环程序结构和设计方法;2、熟悉在PC机上建立、汇编、连接、调试和运行8086/8088汇编语言程序的过程。

二.实验内容1、X、Y、Z、V均为字变量,在X、Y、Z、V字单元中存放是16位带符号数。

试编写汇编语言程序完成以下功能:①计算表达式值(V–(X*Y+Z-720))/X;②将上述表达式运算结果整数放在SUM1单元,余数放在SUM2单元。

2、求一个班50名学生成绩的平均值(附加题:最大值和最小值,并将结果显示出来)3、从键盘读入一个字符串,以Enter结束,字符串不超过50个字符,并打印该字符串(附加题:查找中间是否有‘asm’子串。

如果有,输出‘Yes’;否则,输出‘No’)。

三.实验过程和程序四.实验结果(包括必要的截图)五.实验体会实验三汇编语言子程序设计(分支、子程序)一.实验目的1、掌握分支和子程序结构和设计方法;2、熟悉在PC机上建立、汇编、连接、调试和运行8086/8088汇编语言程序的过程。

汇编语言实验报告

汇编语言实验报告

汇编语言实验报告实验一、汇编运行环境及方法、简单程序设计一、程序说明本程序用来比较两个字符串string1和string2所含的字符是否相同。

若相同’,否则显示‘No match’。

则显示‘Match在程序的数据段先定义两个字符串string1和string2,再定义两个字符串mess1’和‘Nomatch’。

再代码段比较字符串string1和string2,和mess2,分别代表‘Match通过比较判断是否相同。

若相同则显示‘Match’,否则显示‘No match’。

二、调试说明再EDIT中建立ASM文件,再用汇编程序对源程序汇编产生目标文件Obj,再用连接程序产生执行文件EXE。

再用Debug进行调试。

其中常用到的指令有:用-g命令来用运行程序,用-u命令来显示程序,用-d 命令来查看数据段的情况,-e或-f命令来修改需要改正的部分,用-t指令来逐步执行程序,用-r指令来查看寄存用器和修改寄存器的值,-q命令用来退出debug程序。

在这些命令的后面加上地址,可以将命令执行到相应的地方。

如用-g指令运行程序后,再用-u指令显示程序的执行借给如下:若将string2改为'Move the cursor backwards.',程序的其他部分不做改动,执行结果:若将mov cx,25语句改成mov cx,24,结果为:此时少做了一次循环,得到的结果就不正确了。

实验二、用DEBUG编程:使用堆栈段将AX和BX的内容进行交换等一、程序说明本实验包括两个部分,第一个部分是将AX和BX的内容进行交换,并用堆栈作为两寄存器交换内容的中间存储单元;第二部分是用DEBUG的命令将存储器偏移地AH, 0BH,0CH,0DH,0EH。

在DEBUG状态址300H,304H连续单元顺序装入0 下送入给出的程序中。

第一个程序先将AX的内容进栈,然后将BX的内容赋给AX,再将出栈的内容赋给BX即可。

第二个程序是在进入debug后,用-a指令输入给出的程序,然用-r指令安要求修改内存的内容,再用-t指令逐步执行每条指令,看修改的内存内容对指令执行结果的影响。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Mov bx,y
Imul bx
Mov cx,ax Mov bx,dx Mov ax,z Cwd Add cx,ax Adc bx,dx Sub cx,720 Sbb bx,0 Mov ax,v Cwd Sub ax,cx Sbb dx,bx Mov bx,x Idiv bx Mov sum1,ax Mov sum2,dx
mov dl,23h ;"#"
mov ah,2 int 21h
mov bx,sum2 mov ch,4 mov cl,4 again1: rol bx,cl mov dl,bl and dl,0fh cmp dl,0ah jl next1 add dl,37h ;"A"-"F" jmp down1 next1: add dl,30h ;"0"-"9" down1: mov ah,2 int 21h dec ch jnz again1
mov dl,23h ;"#"分开不同数据 mov ah,2 int 21h
mov bl,avg2 ;平均值的余数 call sub
mov dl,23h ;"#"分开不同数据 mov ah,2 int 21h
mov bl,max ;最大值 call sub
mov dl,23h ;"#"分开不同数据 mov ah,2 int 21h
–G =100 0116 ↙ 9、再用“D”命令观察 DS:0200H~DS:020BH 字节单元中的内容
–D 200 20B↙ 10、用“T”单步操作命令对源程序单步执行,观察 AX、BX、CS、IP 寄存器内容的变
化,并与预计的结果相比较。
四. 实验结果(包括必要的截图)
五. 实验体会 这次的实验让我学会了 DEBUG 的运用,了解到了 DEBUG 对于程序的调试
mov bl,min ;最小值 call sub
mov ax,4c00h int 21h
sub proc
mov ch,2 mov cl,4 again2: rol bl,cl mov al,bl and al,0fh
cmp al,0ah jl next2 add al,37h ;"A"-"F" jmp down1 next2: add al,30h ;"0"-"9" down1: mov dl,al mov ah,2 int 21h dec ch jnz again2 ret sub endp code ends end start
合肥工业大学 计算机与信息学院
实验报告
课 程:汇编语言程序设计 专业班级:计算机科学与技术 13-1 班 学 号:梁壮壮 姓 名: 2013211622
实验一 Debug 程序的使用
一. 实验目的 1、熟悉 DEBUG 程序中的命令,学会在 DEBUG 下调试运行汇编语言源程序。 2、掌握 8086/8088 的寻址方式及多字节数据的处理方法。
start: mov ax,data
mov ds,ax
lea dx,buf
;输入字符串
mov ah,10
int 21h
lea dx,crlf
;输出换行
mov ah,9
int 21h
mov bl,buf+1 mov bh,0 mov byte ptr buf+2[bx], '$' lea dx,buf+2 mov ah,9 ;输出字符串 int 21h
6、程序未执行前,用“R”命令观察,相关寄存器的内容。 –R↙
如:(AX)= ,(BX)= ,(SI)= , (DI)= ,(CS)= ,(IP)= 。
7、在程序未执行前,用“D”命令观察 DS:0200H,DS:0204H、DS:0208H 单元的内 容
–D 200 20B ↙ 8、用“G”命令运行源程序
3. data segment buf db 50 ;定义缓冲区 db 40 db 40 dup(0) crlf db 0dh,0ah,'$' ;回车换行 data ends
stack segment stack db 100 dup(0) stack ends
code segment
assume ds:data, ss:stack, cs:code
三. 实验过程和程序
程序:
1.
Data segment
X dw 1
Y dw 720
Z dw -1
V dw 1
Sum1 dw ?
Sum2 dw ?
Data ends
Code segment
Assume cs:code ds:data
Start:
mov ax,data
Mov ds,ax
Mov ax,x
;x*y
;计算字符串实际字符个数 ;在串尾补入'$'
mov ah,4ch int 21h code ends
end start
四. 实验结果(包括必要的截图) 第 1 题截图
第 2 题截图
第 3 题截图
五. 实验体会 在这一次的实验中用到 CBW 和 CWD 命令来扩展符号位,解决处理数据的
时候数据类型不匹配的问题。同时也学到了从键盘上读取字符以及打印字符的 方法。
二. 实验内容 1、利用 DEBUG 程序中的“E”命令,将两个多字节数“003F1AE7H”和 “006BE5C4H”分别送入起始地址为 DS:0200H 和 DS:0204H 两个单元中。 2、分别用直接寻址方式和寄存器间接寻址方式编写程序段,实现将 DS:0200H 单元和 DS:0204H 单元中的数据相加,并将运算结果存放在 DS:0208H 单元中。 要求:
功能。
实验二 汇编语言程序设计(顺序、循环)
一. 实验目的
1、掌握顺序和循环程序结构和设计方法; 2、熟悉在 PC 机上建立、汇编、连接、调试和运行 8086/8088 汇编语言程序的过程。
二. 实验内容 1、X、Y、Z、V 均为字变量,在 X、Y、Z、V 字单元中存放是 16 位带符号数。 试编写汇编语言程序完成以下功能: ①计算表达式值(V–(X*Y+Z-720))/X; ②将上述表达式运算结果整数放在 SUM1 单元,余数放在 SUM2 单元。 2、求一个班 50 名学生成绩的平均值(附加题:最大值和最小值,并将结果显示 出来) 3、从键盘读入一个字符串,以 Enter 结束,字符串不超过 50 个字符,并打印 该字符串(附加题:查找中间是否有‘asm’子串。如果有,输出‘Yes’;否则, 输出‘No’)。
本次实验的内容均在 DEBUG 下完成,实现数据的装入、修改、显示;汇编 语言程序段的编辑、汇编和反汇编;程序的运行和结果检查。
三. 实验过程和程序
1、启动 DOS 操作系统 2、运行 程序(若当前盘为 C)
C:>DEBUG↙ – ;(“–”为 DEBUG 提示符,仅当屏幕出现该提示符后,才可输入 DEBUG 命令) 4、用“A”命令编辑和汇编源程序 –A ↙ 186E:0100 MOV AX,[0200]↙ 186E:0103 MOV BX,[0202]↙ 186E:0107 ADD AX,[0204]↙ 186E:010B ADC BX,[0206]↙ 186E:010F MOV [0208],AX↙ 186E:0112 MOV [020A],BX↙ 186E:0116 ↙ 5、用“U”命令反汇编验证源程序 –U CS:0100↙ 186E:0100 A10002 MOV AX,[0200] 186E:0103 8B1E0202 MOV BX,[0202] 186E:0107 03060402 ADD AX,[0204] 186E:010B 131E0602 ADC BX,[0206] 186E:010F A30802 MOV [0208],AX 186E:0112 891E0A02 MOV [020A],BX 186E:0116 –
;------循环开始-------MOV CX, 8 GOGO: SHL AL,1 ;-------跳转------------JC EXIT add dx,3 LOOP GOGO ;************************ EXIT: MOV AH,9 LEA SI,JMPTABLE ADD SI,DX JMP SI JMPTABLE: JMP NEAR PTR L1 JMP NEAR PTR L2 JMP NEAR PTR L3 JMP NEAR PTR L4 JMP NEAR PTR L5 JMP NEAR PTR L6 JMP NEAR PTR L7 JMP NEAR PTR L8 L1: LEA DX,S1 JMP DONE L2: LEA DX,S2 JMP DONE L3: LEA DX,S3 JMP DONE L4: LEA DX,S4 JMP DONE L5:
;x*y+z
;x*y+z-720 ;v-(x*y+z-720) ;(v-(x*y+z-720))/x ;sum1 存商,sum2 存余数
mov bx,sum1 mov ch,4 mov cl,4 again: rol bx,cl mov dl,bl and dl,0fh cmp dl,0ah jl next add dl,37h ;"A"-"F" jmp down next: add dl,30h ;"0"-"9" down: mov ah,2 int 21h dec ch jnz again
mov si,0;找最小值 mov cx,50 mov al,grade[0] again1: cmp al,grade[si] jna next1 mov al,grade[si] next1: inc si loop again1 mov min,al
相关文档
最新文档