川师汇编实验报告(含截图)

合集下载

【2018-2019】汇编实验报告1 (6000字)-优秀word范文 (5页)

【2018-2019】汇编实验报告1 (6000字)-优秀word范文 (5页)

本文部分内容来自网络整理,本司不为其真实性负责,如有异议或侵权请及时联系,本司将立即删除!== 本文为word格式,下载后可方便编辑和修改! ==汇编实验报告1 (6000字)汇编实验报告1.实验名称顺序与分支程序设计2.实验目的1) 掌握顺序程序设计方法。

2) 掌握分支程序的结构及分支程序的设计,调试方法。

3) 学习数据传送及算术和逻辑运算指令的用法。

4) 熟悉在PC机上建立、汇编、连接、调试和运行汇编语言程序的过程。

3.实验内容1) 从键盘上接收一位十进制数X,计算Y值,并以十六进制形式显示出来,Y 按下列公式计算。

???Y?????XXXX2?X(X?3)?2X(X?4)(X?5)/2(X?6)2222) 从键盘上接收两个一位十六进制数X和Y,然后再输入一个A-D之间的一个字符,按下列要求计算。

a)b) c) d)当输入字符为A,则计算X+Y,并以十六进制形式显示出来当输入字符为B,则计算|X-Y|,并以十六进制形式显示出来当输入字符为C,则计算X*Y,并以十六进制形式显示出来当输入字符为D,则计算X/Y,并以十六进制形式显示出来4.源程序1)DATA SEGMENTTABLE DW L1,L2,L3,L4X DB ? ;存放键盘输入的数 DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA START:MOV AX,DATAMOV DS,AX ;将DATA装入DS寄存器MOV AH,1INT 21H;输入一个数存入AL寄存器 CMP AL,33HJB L10 CMP AL,36H JA L10 ;判断输入的数是否在3-6之间AND AL,0FH ;转换成数字MOV X,AL SUB AL,3 SHL AL,1 XOR AH,AHLEA BX,TABLE ADD BX,AXJMP [BX];程序转移指令L1: MOV AL,X MUL AL ADD AL,XJMP L5 ;X^2+XL2: MOV AL,X MUL AL SHL X,1SUB AL,XJMP L5 ;X^2-2XL3: MOV AL,X MUL ALJMP L5 ;X^2L4: MOV AL,XMUL AL SHR AL,1 JMP L5 ;(X^2)/2L5: MOV BL,AL MOV CL,4 SHR AL,CL CMP AL,9H JBE L8ADD AL,7L8: ADD AL,30HMOV DL,AL MOV AH,02H INT 21H ;输出高位结果 MOV DL,BL AND DL,0FH CMP DL,9 JBE L7ADD DL,7L7: ADD DL,30HMOV AH,2 INT 21H ;输出低位结果L10: MOV AH,4CHINT 21H ;结束程序CODE ENDS END START 2)DATA SEGMENTTABLE DW L1,L2,L3,L4X DB ? ;存放键盘输入的数x Y DB ? ;存放键盘输入的数y Z DB ? ;存放键盘输入的数z DATA ENDS CODE SEGMENTASSUME CS:CODE,DS:DATA START:MOV AX,DATAMOV DS,AX ;将DATA装入DS寄存器 MOV AH,1INT 21H;输入一个数存入AL寄存器 CMP AL,30H JB L10CMP AL,46HJA L10 ;判断输入的数是否在0-F之间 CMP AL,41HJB L5SUB AL,07H L5: SUB AL,30H MOV X,AL ;完成输入16进制数存入X中MOV AH,1 INT 21H;输入一个数存入AL寄存器CMP AL,30HJB L10 CMP AL,46H JA L10 ;判断输入的数是否在0-F之间JMP L12 L10:JMP L11 L12:CMP AL,41H JB L6SUB AL,07HL6: SUB AL,30H ;转换成数字 MOV Y,AL ;完成输入16进制数存入Y的功能MOV AH,1INT 21H;输入一个数存入ALMUL YAND AX,00FFH MOV DL,ALJMP L9 ;X*Y L4: MOV AX,0 MOV AL,X MOV BL,Y DIV BLMOV DL,AL JMP L9 ;X/Y寄存器CMP AL,41H JB L10 CMP AL,44H JA L10 ;判断输入的数是否在A-D之间SUB AL,40H MOV Z,AL ;将A-Z转换成1-4存入Z中MOV AL,Z DEC ALSHL AL,1 XOR AH,AHLEA BX,TABLE ADD BX,AXJMP [BX];程序转移指令L9: MOV BL,DL MOV CL,4SHR DL,CL CMP DL,9H JBE L8 ADD DL,7L1: MOV DL,X ADD DL,Y5.运行结果:JMP L9 ;X+Y L2:MOV BL,YCMP X,BLJBE L15SUB X,BLJMP L13 L15:SUB BL,XMOV DL,BLJMP L9 L13:MOV DL,XJMP L9 ;|X-Y| L3: MOV AL,XL8: ADD DL,30H MOV AH,02H INT 21H ;输出高位结果 MOV DL,BL AND DL,0FH CMP DL,9 JBE L7 ADD DL,7L7: ADD DL,30HMOV AH,2 INT 21H ;输出低位结果L11: MOV AH,4CH INT 21H CODE ENDS END START6.对实验的分析和总结CF是进位标志位,向左移位时,最高位进入CF。

汇编语言程序设计实验报告

汇编语言程序设计实验报告

汇编语言程序设计实验报告汇编语言程序设计实验报告引言:汇编语言是计算机中最基本的语言,通常用于处理硬件相关问题。

在这个实验中,我们学习了汇编语言的基础知识和编程技巧,并实践了用汇编语言编写程序的方法和技巧。

以下是我们的实验报告。

正文:1. 实验环境我们使用的实验环境是Intel 8086微处理器与高级汇编语言。

微处理器使用的是PCB-512主板,而高级汇编语言是MASM。

2. 实验目的我们的实验目的主要是学习汇编语言的基础知识和编程技巧,包括了汇编语言的寄存器、指令、内存管理等方面的知识。

我们的另一个目的是掌握汇编语言的常用编程技巧,能够独立完成一些简单的汇编程序。

3. 实验内容我们的实验内容主要包括以下几点:(1)学习汇编语言的基础知识,包括寄存器、指令、内存管理等方面的知识。

(2)掌握汇编语言的常用编程技巧,包括数据输入输出、运算、跳转等基本操作。

(3)实践用汇编语言编写程序,如计算器、菜单等实用程序。

(4)了解8086微处理器的结构和原理。

4. 实验过程在这个实验过程中,我们完成了以下几个程序:(1)计算器计算器是一个简单的程序,主要用于实现两个数之间的加、减、乘、除等基本运算。

我们通过输入输出指令、存储指令等指令实现了这个程序的功能。

(2)菜单菜单是一个实用程序,主要用于展示一个简单的菜单并实现用户选择相关功能的功能。

我们使用了汇编语言中的跳转指令、输入输出指令等实现了这个程序。

5. 实验结果在我们的实验中,我们成功完成了上述两个程序。

我们通过输入输出指令、存储指令等指令实现了这个程序的功能。

6. 实验总结在这个实验过程中,我们学习汇编语言的基础知识和编程技巧,并实践了用汇编语言编写程序的方法和技巧。

我们通过编写计算器和菜单等简单实用程序,加深了对汇编语言的理解和认识。

我们认为这个实验对我们今后的学习和工作都有很大的帮助。

结论:通过这个实验,我们学习了汇编语言的基础知识和编程技巧,并实践了用汇编语言编写程序的方法和技巧。

【实验】汇编实验报告

【实验】汇编实验报告

【关键字】实验实验一汇编程序的汇编及运行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的值为多少?DA TA SEGMENTORG 20HNUM1=8NUM2=NUM1+10HDA1 DB ‘IBM PC’DA2 DB 0AH, 0DHCOUNT EQU $-DA1DATA ENDSEND(2)输入有错误的文件,修改错误语句。

(MASM没有出现错误即可。

不必连接、运行。

)DA TA SEGMENTV AR1 DB 0, 25, ODH, 300V AR2 DB 12H, A4H, 6BHV AR3 DB ’ABCDEF’V AR4 DW 1234H, 5678HV AR5 DW 10H DUP(?)DATA ENDSCODE SEGMENTASSUME CS: CODE, DE: DA TABEING MOV AX, DA TAMOV DS, AXLEA SI, V AR5MOV BX, OFFSET V AR2MOV [SI], 0ABHMOV AX, V AR1+2MOV [BX], [SI]MOV V AR5+4, V AR4MOV AH, 4CHINT 21HCODE ENDSEND START(3)输入正确的程序,汇编、连接、运行STACKS SEGMENT STACKDW 128 DUP(?)STACKS ENDSDATAS SEGMENTSTRING DB ‘WELCOME!’, 13, 10, ‘$’DATAS ENDSCODES SEGMENTASSUME CS: CODES, DS: DATAS START:MOV AX, DA TASMOV DS, AXLEA DX, STRINGMOV AH, 9INT 21HMOV AH, 4CHINT 21HCODES ENDSEND START 1.算法描述及实验步骤1.(1)生成1.st文件(2)用EDIT查看文件2.修改后正确算法:DATA SEGMENTV AR1 DB 0, 25, 0DH, 30V AR2 DB 12H, 0A4H, 6BHV AR3 DB 'ABCDEF'V AR4 DW 1234H, 5678HV AR5 DW 10H DUP(?)DATA ENDSCODE SEGMENTASSUME CS: CODE, DS: DATA BEING: MOV AX, DATAMOV DS, AXLEA SI, V AR5MOV BX, OFFSET V AR2MOV byte ptr[SI], 0ABHMOV AL, V AR1+2MOV AX, [SI]MOV [BX], AXMOV AX, V AR4MOV V AR5+4, AXMOV AH, 4CHINT 21HCODE ENDSEND BEING5.调试过程1.程序没有错误,结果:2.程序运行出现错误:问题及改正:(1). 2.asm(2): error A2009: Symbol not defined: ODH 表示没有定义ODH;出错语句VAR1 DB 0, 25, ODH, 300,这里的 ODH应该为 16进制数的0DH。

完整word版,汇编实验报告,推荐文档

完整word版,汇编实验报告,推荐文档

实验一(1)熟悉汇编语言程序调试环境及顺序程序设计一、实验目的及要求:1.学习及掌握汇编语言源程序的书写格式和要求,明确程序中各段的功能和相互之间的关系。

2.学会使用EDIT、MASM、LINK、DEBUG等软件工具。

3.熟练掌握在计算机上建立、汇编、连接、调试及运行程序的方法。

二、熟悉汇编语言程序调试环境1.汇编语言源程序的建立本例中给出的程序是要求从内存中存放的10个无符号字节整数数组中找出最小数,将其值保存在AL寄存器中。

设定源程序的文件名为ABC。

DATA SEGMENTBUF DB 23H,16H,08H,20H,64H,8AH,91H,35H,2BH,7FHCN EQU $-BUFDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: PUSH DSXOR AX,AXPUSH AXMOV AX,DATAMOV DS,AXMOV BX,OFFSET BUFMOV CX,CNDEC CXMOV AL,[BX]INC BXLP: CMP AL,[BX]JBE NEXTMOV AL,[BX]NEXT: INC BXDEC CXJNZ LPMOV AH,4CHINT 21HCODE ENDSEND START键入以下命令:C:\>EDIT ABC.ASM此时屏幕的显示状态如图1所示。

图1 用EDIT编辑ABC.ASM程序窗口程序输入完毕后一定要将源程序文件存入盘中,以便进行汇编及连接,也可以再次调出源程序进行修改。

2.将源程序文件汇编成目标程序文件一般情况下,MASM汇编程序的主要功能有以下3点:(1)检查源程序中存在的语法错误,并给出错误信息。

(2)源程序经汇编后没有错误,则产生目标程序文件,扩展名为.OBJ。

(3)若程序中使用了宏指令,则汇编程序将展开宏指令。

源程序建立以后,在DOS状态下,采用宏汇编程序MASM对源程序文件进行汇编,其操作过程如图2所示。

汇编程序及接口技术实验报告

汇编程序及接口技术实验报告

汇编程序及接口技术实验报告
一、实验目的
本实验的主要目的是了解汇编语言程序的编写和调试方法,并掌握接口技术的应用。

二、实验内容
1.编写一个求给定数的阶乘的汇编程序。

2.利用串口实现汇编程序的输入输出。

三、实验步骤
1.阅读8086汇编语言的使用手册,了解汇编语言的基本语法和指令集。

2.编写一个求阶乘的汇编程序。

程序的基本思路是利用循环和累加的方法来实现阶乘的计算。

3.编写串口输入输出的汇编程序。

使用串口的输入输出功能,实现程序与外部设备的交互。

4.将阶乘程序与串口输入输出程序进行整合,测试程序的功能是否正常。

五、实验结果与分析
经过调试和测试,本实验成功实现了求阶乘的功能,并能通过串口与外部设备进行交互。

实验结果与预期一致。

六、实验总结
通过本次实验,我对汇编语言的编写和调试方法有了更深的了解。

同时,我们也学会了如何利用接口技术来实现程序与外部设备的交互。

这对我们以后的学习和工作都将有很大的帮助。

汇编程序设计实验报告

汇编程序设计实验报告
四.实验结果(包括必要的截图)
1)程序未执行前,相关寄存器的内容: (AX)= 0000H ,(BX)= 0000H ,(SI)= 0000H , (DI)= 0000H ,(CS)= 0B32H ,(IP)= 0100H 。
2)在程序未执行前,DS:0200H,DS:0204H、DS:0208H 单元的内容
5)程序运行结果:(AX)= 00ABH ,(BX)= 00ABH DS:0208H四字节单元的内容: 00AB00ABH
附加题实验结果:1)运算结果:FF89 2)BX 的内容为 1234,1 的个数为 5 3)DS:0 27 均为 CC
五.实验体会
经过这次试验,对于 debug 环境有了一个基本的了解,同时通过对指令的使 用而对计算机的数据传送、算术运算、逻辑和移位操作、串操作、控制转移 和循环等指令有了更深的理解和更熟悉。通过实验也发现了不少平时在看书 是容易忽视,不太理解和误解的地方,例如,串操作指令是对一个一个字节 进行操作的,在 debug 环境下,所有的控制转移和循环指令后面的操作数都 可以是地址,E 命令后面一定要接上地址,在 debug 环境下以字母开头的十 六进制数前面不用加零等。总之,通过实践,使自己学到了很多。
0B3F:0100 MOV AX, [0000]
0B3F:0103 MOV BX, [0002]
0B3F:0107 MOV DX, 0
0B3F:010A IMUL BX
0B3F:010C ADD AX, [0004]
0B3F:0110 ADC DX, 0
0B3F:0113 SUB AX, 021C
0B3F:0116 SBB DX, 0
开始
AX←DATA DS←AX
AX←(X) DX,AX←(AX)*(Y)

汇编实验一实验报告

汇编实验一实验报告

汇编实验⼀实验报告汇编语⾔程序设计实验报告课程名称汇编语⾔程序设计班级姓名学号指导教师汇编语⾔程序设计实验⼀DEBUG 程序使⽤技巧1.寄存器和内存开始Debug 程序。

输⼊“Q ” 退出程序。

再次启动Debug。

输⼊“r ”来显⽰CPU的当前状态和寄存器中的当前内容。

输⼊“r AX ”和“1234”,AX 寄存器中的内容变为1234。

输⼊“r DS ”和“2000”,DS 寄存器中的内容变为2000。

输⼊“d DS:1000 ”来显⽰数据段中80H 字节数据,把数据抄在这⾥:输⼊“f DS:1000 1100 77 ”再显⽰⼀次这80H 字节。

判断这条指令的作⽤是什么?答:从DS:1000地址七,将1100H字节的内容赋值为77H再输⼊“d 2000:1000 ”来显⽰数据段中80H 字节数据。

观察与前⾯的数据有⽆不同。

输⼊“d 1900:0100 ”和“d 1ff0:0100 ”来显⽰两个存储段中的内容。

⽐较其中2000:0000 段中的数据。

相同段落中的数据相同么?根据你的观察,得出结论,是否程序员可以⽤不同的段起始地址和偏移量组合,把不容内容存⼊相同的内存段中。

答:相同段落中的数据相同, 程序员可以⽤不同的段起始地址和偏移量组合,把不容内容存⼊相同的内存段中。

2.输⼊机器码,使⽤单步和断点退出Debug,再重新启动Debug。

输⼊“r ”观察CPU 的状态,下⼀条指令是什么?答:下⼀条指令是ADD [BX+SI],AL使⽤两种⽅式输⼊⼀段程序,第⼀种⽅式:直接输⼊机器码。

输⼊“u ”来显⽰程序段中的指令序列。

然后输⼊“d CS:100 ” 来显⽰代码段中的数据。

观察显⽰内容。

“u CS:100 106 ”做反汇编,就是显⽰出汇编语句。

将这⼏句汇编语句记录下来:使⽤输⼊“r ”观察CPU 的状态,使⽤“t ”来跟踪程序,直⾄最后⼀条指令执⾏完毕。

注意,跟踪程序前,要让IP 寄存器中的值是100H。

汇编(循环、分支、子程序)实验报告

汇编(循环、分支、子程序)实验报告
1.设计:
分别为十个成绩、成绩总个数、分段的5个区间申请内存单元,初始化数据段;将AX,BX,CX压栈,保留原始数据。选取第一个成绩,存入AX中,该数据除以10,得到商存入BX,判断商的所属区间,给所属区间加1,继续下一个,循环直到十个全部判断结束,pop出栈,得到属于各区间的成绩个数,程序结束。
2.源程序清单
2.源程序清单
datasegment
xdw 1ah
ydw 0ah
zdw 01h
maxdw ?
dataends ;数据段定义
codesegment
assume ds: data, cs: code
start:
mov ax, data
mov ds, ax ;初始化数据段
mov ax, x
cmp ax, y
《汇编语言程序设计》实验报告
实验名循环、分支、子程序设计实验室实验楼实验日期2014-06-09
一、实验目的及要求
1.熟悉命令格式,功能,加强对指令系统的理解
2.编写简单循环、选择、子程序的结构程序
3.单步跟踪调试,观察寄存器的变化和指令执行的结果
二、实验环境
硬件环境:一台微型计算机
软件环境:windows xp,debug环境,masm
2.源程序清单
datarea segment;定义数据段
buffer db 80 dup(?) ;预申请了以buffer为首地址的内存单元
flag db ?
datarea ends
prognam segment;定义编码段
main proc far
assume cs:prognam,ds:datarea
(5).初始数据段
(6).分别将AX,BX,CX,SI压栈,保留初始数据,

汇编语言程序设计实验报告

汇编语言程序设计实验报告
2.掌握汇编语言源程序的执行过程。
二、实验内容
P131作业29。
实验三子程序设计实验
一、实验目的
1.掌握汇编语言源程序子程序设计方法;
2.会使用CV软件工具。
二、实验内容
把实验二作为子程序,编写主程序来对能否构成三角形进行10判断。
实验四宏汇编程序设计实验
一、实验目的
1.掌握宏汇编程序编程技术及宏调用的方法;
2.主模块程序完成子程序的调用,及判断结果的显示,程序名为:ZHU.asm。
实验五混合程序的开发实验
一、实验目的
1.了解混合调用中的参数设置;
2.掌握混合调用的方法;
二、实验内容
P156第5题。
实验一单指令功能测试实验
一、实验目的
1.会使用DEBUG软件;
2.利用DEBUG单步执行功能测试指令的执行。
二、实验内容
判断从键盘输入的ASCII码数字,若是小于等于5,显示“C”,若是大于5显示“D”。假设输入的只可能是0~9数字。
实验二完整的汇编语言程序设计实验
一、实验目的
1.掌握完整的汇编语言源程序的设计方法;
实验五多模块程序设计实验
一、实验目的
1.掌握汇编段的属性的含义;
2.掌握利用LINK将多模块连接起来的方法;
3.掌握利用库文件将多模块连接起来的方法。
二、实验内容
假设内存单元中有三个字a、b和c,编写一个程序,它可判断它们能否构成一个三角形,若能,显示“Y”,否则,显示“N”;
具体要求:
1.三角形的判断程序为一模块子程序,程序名为:ABC.asm。入口参数:字节变量a、b、c。出口参数:字节变量d=1是三角形,d=0不是三角形。
2.了解COM文件的编程方法及特点;

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

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

成 绩 评 定 教师签名: 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

汇编语言编程实验报告

汇编语言编程实验报告

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

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

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

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

’字符,以作为输出结束条件。

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

’。

三. 源程序清单DATA SEGMENTN EQU 50MAXLEN DB N ;MAXLEN DB N ;缓冲区字符的最大长度缓冲区字符的最大长度缓冲区字符的最大长度ACTLEN DB ? ;ACTLEN DB ? ;实际字符个数实际字符个数实际字符个数STRING DB N DUP(?) ;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(注:以下程序采用b方法)方法)。

汇编实验报告

汇编实验报告

实验一Debug程序的使用一.实验目的1.熟悉DEBUG程序中的命令,学会在DEBUG下调试运行汇编语言源程序。

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

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

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

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

三.实验过程和程序直接寻址m ov 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,2[si]add ax,[di]adc dx,2[di]mov[bx],axmov2[bx],dx四.实验结果(包括必要的截图)五.实验体会通过实验了解到汇编语言的编译、运行方法。

汇编语言的寻址方式有直接寻址,寄存器寻址,基址变址寻址,相对基址变址寻址等等,掌握这些都是编写汇编程序很重要的环节。

在编写汇编程序时,应该注意特别容易出现的错误特别是通过亲自实验,体验到了对内存、寄存器的修改和使用,加深了对内存寻址和寄存器间接寻址的理解,正确认识了在寄存器名中加入“[]”的作用。

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

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

汇编循环程序设计(一)实验报告

汇编循环程序设计(一)实验报告

§1《微机原理与接口技术》课程实验报告一、实验目的1. 掌握循环程序设计的方法2. 掌握正确分配与使用寄存器。

二、实验环境1.硬件环境: 微型计算机一台。

2.软件环境: 装有MASM 5.0, DEBUG, LINK, EDIT等应用程序。

三、实验重点及难点循环程序的结构及程序设计方法。

四、实验内容假设有一组数据: 5, -4, 0, 3, 100, -51, 请编一程序, 判断: 每个数是大于0, 等于0, 还是小于0;并输出其判断结果Y。

1, 当X >0Y= 0, 当X =0-1, 当X <0五、实验分析和实验体会(1)实验分析:程序代码:DATA SEGMENTX DB 5,-4,0,3,100,-51NUM EQU $-XY DB 6 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE;DS:DATASTART:MOV AX,DATAMOV DS,AXLEA SI,XLEA DI,YMOV CX,NUMBJ: MOV AL,[SI]CMP AL,0JGE BIGEMOV BL,-1JMP NEXT BIGE:JE ZEROMOV BL,1JMP NEXT ZERO:MOV BL,0 NEXT:MOV [DI],BLINC SIINC DILOOP BJMOV AX,4CHINT 21H CODE ENDSEND START运行过程:(2)实验体会:通过本次实验使我掌握循环程序设计的方法, 同时了解了循环指令的使用方法;掌握正确分配与使用寄存器, 通过对寄存器的合理分配和使用, 可以使我们的程序更加简洁易懂。

汇编语言编程实验报告

汇编语言编程实验报告

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

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

二、实验目的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文件只是个文本文件,计算机无法执行。

汇编实验报告

汇编实验报告

汇编实验报告姓名:管仕敏班级:软件124学号:129074257 指导老师:陆勤实验一汇编运行环境及方法、简单程序设计1.程序说明:本程序用来比较两个字符串string1和string2所含的字符是否相同。

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

在程序的数据段先定义两个字符串string1和string2,再定义两个字符串mess1和mess2,分别代表‘Match’和‘Nomatch’。

再代码段比较字符串string1和string2,通过比较判断是否相同。

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

2.程序代码(比较两字符串):datarea segmentstring1 db 'Move the cursor backward.'string2 db 'Move the ecursor backward.'mess1 db 'Match.',13,10,'$'mess2 db 'No match!',13,10,'$'datarea endsprognam segmentmain proc farassume cs:prognam,ds:datarea,es:datareastart:push dssub ax,axpush axmov ax,datareamov ds,axmov es,axlea si,string1lea di,string2cldmov cx,25repz cmpsbjz matchlea dx,mess2jmp short disp match:lea dx,mess1 disp:mov ah,09int 21hretmain endpprognam endsend start 3.截图:该程序是用来判断两字符串string1和string2是否相同,相同则显示match。

川师汇编实验报告

川师汇编实验报告

实验编号: 1 四川师大《汇编语言》实验报告2016年 9月 17 日计算机科学学院 2015 级3班实验名称DEBUG程序的调用
姓名:邓小卫学号:2015110309 指导老师:__吴贞东__ 实验成绩:
一.实验目的及要求
DEBUG程序的调用
汇编及反汇编命令A、U 的使用练习
显示及修改内存单元命令D、E 的使用练习
显示或修改寄存器命令R 的使用练习
单步及连续执行命令T、G 的使用练习
退出命令Q 的使用练习
二.实验内容
DEBUG程序的调用
汇编及反汇编命令A、U 的使用练习
显示及修改内存单元命令D、E 的使用练习
显示或修改寄存器命令R 的使用练习
单步及连续执行命令T、G 的使用练习
退出命令Q 的使用练习
三.实验主要流程、基本操作或核心代码、算法片段(该部分如不够填写,请另加附页)
四.实验结果的分析与评价(该部分如不够填写,请另加附页)
通过了此次的实验,对于陌生的debug命令有了一定的了解,能够使用部分debug指令完成实验要求。

对于指令T、G还较为陌生,需要进一步的理解和练习。

注:实验成绩等级分为(90-100分)优,(80-89分)良,(70-79分)中,(60-69分)及格,(59分)不及格。

汇编语言程序设计实验报告

汇编语言程序设计实验报告

实验报告实验名称汇编语言程序设计||专业班级:信息安全学号:姓名:实验一汇编语言上机过程和Debug常用调试命令一.实验目的:学习程序设计的基本方法和技能,熟练掌握用汇编语言设计、编写、调试和运行程序的方法。

二.实验题目:熟悉与实验有关的系统软件(如编辑程序、汇编程序、连接程序和调试程序等)的使用方法。

在调试过程中,学习及掌握debug程序的各种操作命令。

三.问题描述:试编写一程序:比较两个字符串string1和string2所含的字符是否相同,若相同则显示‘match’; 否则,显示‘no match’。

四.方法说明:a) 使用ws、tc或EDIT编辑程序来建立源文件,然后存盘,使系统返回DOS。

b) 用汇编程序masm(或asm)对源文件汇编产生目标文件obj如:汇编指示出错则需重新调用编辑程序修改错误,直至汇编通过为止。

c) 用连接程序link 产生执行文件EXE.d) 执行程序,可直接从DOS执行程序。

e) 使用debug程序调试程序的方法。

五.实验步骤:1.调用字处理程序EDIT 建立以sample.asm文件datarea segmentstring1 db ‘move the cursor backward.’string2 db ‘move the cursor backward.’mess1 db ‘Match..’,13,10,’$’mess2 db ‘No match!..’,13,10,’$’datarea endsprognam segmentmain proc farassume cs:prognam,ds:datarea,es:datarea start:push dssub ax,axpush axmov ax,datareamov ds,axmov es,axlea si,string1lea di,string2cldmov cx,25repz cmpsbjz matchlea dx,mess2jmp short dispmatch:lea dx, mess1disp:mov ah,09int 21hretmain endpprognam endsend start2.对源文件汇编产生目标文件obj D:\masm 文件名。

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

《汇编程序设计》实验报告班级姓名院系学号指导教师计算机科学学院目录:一、实验一Debug命令的使用 (3)1.(内容)Debug程序的调入和退出 (3)2.(步骤)Debug常用调试命令的使用 (3)3.(扩展)MOV指令、XCHG指令、XLAT指令的调试 (5)二、实验二基本汇编指令的使用 (7)1.(内容)实验内容 (7)2.(步骤) (13)3.(扩展) (15)三、实验三DOS环境下的汇编语言编程环境使用 (18)1. 判断是否是闰年 (18)四、实验四内存操作数及寻址方法 (18)1.内存操作数及各种寻址方式使用 (18)2.求累加和程序: (20)3.多字节加法程序。

(22)五、实验五数据串传送和查表程序 (25)1.利用查表方法把DX的内容(十六进制数)转换成ASCII码 (25)2.数据串搬家程序: (28)3.段寄存器概念及字符串传送指令练习 (30)六、实验六屏幕字符显示程序 (33)七、实验七二进制加、减法编程实验 (33)1.实验内容 (33)2.实验步骤 (34)八、实验八十进制数的BCD加、减法编程实验 (36)1.实验内容 (36)2.实验步骤 (38)九、实验九二进制乘、除法编程实验(设计性实验) (41)1.实验的内容 (41)2.实验步骤 (43)十、实验十逻辑运算编程实验(验证性实验) (45)1.实验内容 (45)2.实验步骤 (45)十一、实验十一移位操作编程实验(设计性实验) (47)十二、实验十二ASCII码表示的十进制数、二进制数和BCD的互换编程实验 (47)十三、实验十三循环程序设计 (47)1.实验内容 (47)2.实验步骤 (50)十四、实验十四分支程序设计 (53)1.实验内容 (53)2.实验步骤 (55)十五、实验十五子程序设计 (57)1.实验内容 (57)一、实验一Debug命令的使用1.(内容)Debug程序的调入和退出2.(步骤)Debug常用调试命令的使用-A137B:0100 mov ax,20137B:0103 mov bx,ax137B:0105 add ax,bx137B:0107 mov [2000],ax137B:010A-T=0100AX=0020 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=137B ES=137B SS=137B CS=137B IP=0103 NV UP EI PL NZ NA PO NC 137B:0103 89C3 MOV BX,AX-T=0103AX=0020 BX=0020 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=137B ES=137B SS=137B CS=137B IP=0105 NV UP EI PL NZ NA PO NC 137B:0105 01D8 ADD AX,BX-TAX=0040 BX=0020 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=137B ES=137B SS=137B CS=137B IP=0107 NV UP EI PL NZ NA PO NC 137B:0107 A30020 MOV [2000],AXDS:2000=000-TAX=0040 BX=0020 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=137B ES=137B SS=137B CS=137B IP=010A NV UP EI PL NZ NA PO NC137B:010A 0000 ADD [BX+SI],AL DS:0020=FF-D 2000 L2137B:2000 40 00修改0100处的指令mov ax,20 将AX的初始值改为10,并重新运行-A 0100137B:0100 mov ax, 10137B:0103最后一条指令执行的结果如下:AX=0020 BX=0010 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=137B ES=137B SS=137B CS=137B IP=010A NV UP EI PL NZ NA PO NC 137B:010A 0000 ADD [BX+SI],AL DS:0010=DF查看2000单元的值为0020H-D 2000 l2137B:2000 20 00修改2000单元的值,由20h改为30h 并重新显示-E 2000137B:2000 20.30-D 2000 l2137B:2000 30 003.(扩展)MOV指令、XCHG指令、XLAT指令的调试(1)MOV指令的调试程序段:MOV AL, 55HMOV AH, ALMOV BX, 1000HMOV BYTE PTR[BX], 66HMOV WORD PTR[BX+2], 77HMOV [BX+4], AX(2)XCHG指令的调试程序段:MOV AX, 0203HMOV BX, 0405HXCHG AX, BXXCHG BL, BH(3).XLAT指令的调试用E命令从DS:200地址开始输入数据10H、20H、30H、40H、50H用A命令输入以下程序段:MOV BX, 200 ;将数据的首地址送给BXMOV AL, 4用MOV ;将要查找的数据的偏移地址送给ALXLAT查看结果寄存器AL中的值,以及从DS:200开始的存储单元的值。

二、实验二基本汇编指令的使用1.(内容)实验内容(1)单步调试以下程序段,给出每条指令执行后AL的值,以及CF、ZF、SF、OF的状态。

MOV AL, 89HADD AL, ALADD AL, 9DHCMP AL, 0BCHSUB AL,ALDEC ALINC ALAL=H,OF=1,SF=0,ZF=0,CF=1;AL=AFH,OF=0,SF=1,ZF=0,CF=0;AL=AFH,OF=0,SF=1,ZF=0,CF=1;AL=00H,OF=0,SF=0,ZF=1,CF=0;AL=FFH,OF=0,SF=1,ZF=0,CF=0;AL=00H,OF=0,SF=0,ZF=1,CF=0。

(2)编写程序段,分别完成11223344H与55667788H的加/减计算,并调试、观察结果。

加法:减法:(3)单步调试以下程序段,给出每条指令执行后AL的值,以及CF、ZF、SF、OF的状态。

MOV AX, 1470HMOV BX, 3060HAND AX, BXOR AX, BXXOR AX, AXNOT AXTEST AX,0F0F0HAL=70H,OF=0,SF=0,ZF=0,OF=0;AL=70H;OF=0,SF=0,ZF=0,OF=0;AL=60H;OF=0,SF=0,ZF=0,OF=0;AL=60H;OF=0,SF=0,ZF=0,OF=0;AL=00H;OF=0,SF=0,ZF=1,OF=0;AL=FFH;OF=0,SF=0,ZF=1,OF=0;AL=FFH;OF=0,SF=0,ZF=1,OF=0;(4)设(AX)=1234H,写出执行下列每条指令后AX寄存器的内容,并观察CF的变化。

SHL AX, 1MOV CL, 2SHL AX, CLSHR AX, 1ROL AX, 1MOV CL, 3ROL AX, CLRCR AX,1MOV CL, 2RCR AX, CLAX=2468H;CF=0;AX=2468H;CF=0AX=91A0H,CF=0;AX=48D0H,CF=0;AX=91A0H,CF=0;AX=91A0H,CF=0;AX=8D40H,CF=0;AX=4682H,CF=0;AX=4682H,CF=0;AX=11A0H,CF=1;2.(步骤)利用单步执行命令T逐条执行指令,观察寄存器及相关状态位的值以实验内容2中的加法为例,实现加法运算:注:下划线部分为程序员输入的内容。

(1)-A1373:0100 MOV AX, 3344 ;DX.AX<- 11223344H1373:0103 MOV DX, 11221373:0106 ADD AX, 7788 ; DX.AX+55667788H->DX.AX1373:0109 ADC DX, 55661373:010D-T=100AX=3344 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=1373 ES=1373 SS=1373 CS=1373 IP=0103 NV UP EI PL NZ NA PO NC 1373:0103 BA2211 MOV DX,1122-TAX=3344 BX=0000 CX=0000 DX=1122 SP=FFEE BP=0000 SI=0000DI=0000DS=1373 ES=1373 SS=1373 CS=1373 IP=0106 NV UP EI PL NZ NA PO NC 1373:0106 058877 ADD AX,7788-TAX=AACC BX=0000 CX=0000 DX=1122 SP=FFEE BP=0000 SI=0000 DI=0000 DS=1373 ES=1373 SS=1373 CS=1373 IP=0109 OV UP EI NG NZ NA PE NC 1373:0109 81D26655 ADC DX,5566-TAX=AACC BX=0000 CX=0000 DX=6688 SP=FFEE BP=0000 SI=0000 DI=0000 DS=1373 ES=1373 SS=1373 CS=1373 IP=010D NV UP EI PL NZ NA PE NC 1373:010D 0000 ADD [BX+SI],AL DS:3.(扩展)(1)编写程序段:将DX.AX中的双字右移一位。

(2)编写程序段:将AX寄存器的最低4位置1,最高3位清0,第7、8、9位取反,其余位不变。

设AX中原来的值为0AAH。

(3)设AX=2AH,BX=30H,编写程序段计算:AX/BX,并将结果送BX.CX。

三、实验三DOS环境下的汇编语言编程环境使用1. 判断是否是闰年多次出现错误,最后终于还是做出来了.......逻辑方面问题较多,语言使用不够熟练。

四、实验四内存操作数及寻址方法1.内存操作数及各种寻址方式使用程序内容:MOV AX,1234MOV [1000],AXMOV BX,1002MOV BYTE PTR[BX],20MOV DL,39INC BXMOV [BX],DLDEC DLMOV SI,3MOV [BX+SI],DLMOV [BX+SI+1],DLMOV WORD PTR[BX+SI+2],2846操作步骤(1)用A命令键入上述程序,并用T命令逐条运行。

相关文档
最新文档