汇编实验一

合集下载

实验1_认识汇编语言

实验1_认识汇编语言

实验一 认识汇编语言1.1 实验目的(1)理解汇编语言的概念及其与高级语言的区别(2)了解MASM6.11和TASM软件包的安装及配置(3)了解常用汇编语言集成环境(4)掌握汇编语言程序的上机过程1.2 预备知识1.2.1 系统环境对汇编语言的初学者来说,DOS环境的优点是:DOS操作系统简单,程序员可以管理系统的所有资源,访问和修改系统中的所有内存(包括内存控制块、中断向量表),直接对I/O端口进行读写,便于对知识的学习和理解。

其缺点是:单任务的DOS操作系统只有一个运行级别,任何进程与DOS操作系统都是同等级别的,致使系统中各个进程会相互影响。

如果某个进程死机,整个系统就会瘫痪。

但是DOS系统已经退出历史舞台,目前的学生只熟悉Windows环境而对DOS知之甚少,继续要求学生在DOS系统的命令行界面下编写和调试程序,无疑存在巨大的困难。

目前,IBM PC及其兼容机配置的Intel系列微处理器可以工作在实模式、保护模式和虚拟86三种模式下。

实模式是汇编语言入门的基础,是汇编语言教学中无法跨越的阶段。

了解实模式是理解内存分段式管理和寻址方式的基础。

保护模式是Windows系统的工作模式,虚拟86模式则是在保护模式下提供的模拟8086处理器工作的模式,为学习汇编语言提供了便利。

DOS汇编程序在Win32环境中运行时,操作系统会模拟实模式运行16位进程。

对于一些可能会影响整个操作系统工作的指令,windows操作系统会拒绝执行。

64位的Windows 环境则不提供16位应用的虚拟环境。

因此,采用Win32环境进行汇编语言程序的编辑工作,在虚拟控制台环境中学习(汇编、连接和调试)汇编语言是最佳方案。

下面我们将逐步给大家讲解如何安装和配置汇编语言的编译调试环境,并选择适合的编辑软件来组建汇编语言的集成环境。

最后,叙述如何使用Visual Studio 2008 Express作为汇编语言的工作环境。

1.2.2 汇编语言上机过程汇编语言程序需要经过编辑、汇编、连接、调试与执行等过程才能实现其具体功能。

软件实验一 报告

软件实验一 报告

软件实验一:汇编编程一、实验目的掌握用汇编语言设计、编写、调试和运行程序的的方法。

二、实验内容1、学生实验:分别编程实现两个16位无符号数相加,结果存放在40H41H中;两个16位的无符号数相减,结果存放在30H31H中。

相加程序思路:①输入加数高8位,加数低8位,被加数高8位,被加数低8位;②将加数低8位和被加数低8位相加,结果存入41H;③将加数高8位、被加数高8位和进位相加,结果存入40H。

相减程序思路:①输入减数高8位,减数低8位,被减数高8位,被减数低8位;②将减数低8位和被减数低8位相减,结果存入31H;③将减数高8位、被减数高8位相减,结果存入30H。

2、学生实验:编程实现X (X≥40)Y= 2X (20<X<40)0(X≤20)实验程序如下:ORG 0000HLJMP MAINORG 0030HMAIN:CMP40: CJNE R2,#40,NEXT0 ;X与40比较,结果由CY读出NEXT0: JNC BIGGER40 ;判断C的值,C为0时则X大于或者等于40,跳到BIGGER40 JC CMP20 ;判断C的值,C不为0时则X小于40,跳到CMP20CMP20: CJNE R2,#21,NEXT1 ;X与21比较,结果由CY读出NEXT1: JNC BIGGER20 ;判断C的值,C为0时则X大于或者等于21(即X大于20),跳到BIGGER20JC SMALLER20 ;判断C的值,C不为0时则X小于20,跳到SMALLER20 BIGGER40: MOV A,R2 ;X>=40时,将X的值赋给存放Y的值的R3MOV R3,ASJMP $BIGGER20: MOV A,R2 ;20<X<40时,将X的值乘以2再赋给存放Y的R3 MOV B,#02MUL ABMOV R3,ASJMP $SMALLER20: CLR A ;X<20时,将0赋给YMOV R3,ASJMP $3、学生实验:编写80个数相加,结果存放在30H31H中。

汇编实验报告1

汇编实验报告1

实验一汇编语言程序设计上机及debug的使用一、实验目的及要求1.学会使用EDIT、MASM、LINK、DEBUG等软件工具。

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

二、实验内容一,.编辑一个源程序经汇编,链接成可执行程序,然后debug,练习各种指令的用法;编辑源程序:开始汇编如图:执行程序:DEBUG:采用执行过程命令P进行调试,g输出结果;二,,DEBUG的使用;1.进入DEBUG,使用A命令将源程序写入内存并汇编,然后使用G命令执行程序,接着用D命令观察运算结果后,再用U命令反汇编,用Q命令退出DEBUG,返回DOS提示符。

用A 指令写入程序,用E命令将0102H, 0304H分别写入 0120H和0122H单元如图:用G执行程序,用D输出结果:用U命令反汇编程序和用Q退出程序如图:2.进入DEBUG,先显示200H处开始的一片单元,接着用E命令将一段机器代码指令写入200H~208H,然后用G命令执行,再用U命令反汇编。

具体操作如下:(1)首先进入DEBUG,接着显示200H处开始的一片单元(如果不指明显示范围,则默认显示128个存储单元),如图12所示。

_d 200(2)用E命令将机器代码指令写入200H开始的内存单元,如图13所示。

接着观察由200H开始的单元,确实写入的机器指令代码,如图14所示。

(3)用G命令从200H处开始执行程序,如图15所示。

执行结果是在屏幕上显示字符“3”。

(4)用U命令反汇编,显示200H处存放的程序,如图:3.进入DEBUG,用A命令写入程序,接着用R命令显示状态,并用T命令单条执行,注意在执行命令的同时观察相应寄存器的状态。

具体操作如下:(1)进入DEBUG,用A命令写入汇编源程序,Ctrl+C退出A命令,如图:(2)用R命令显示寄存器状态,可以只显示AH和AL寄存器状态,也可以显示所有寄存器状态,如图18和图19所示。

由图中可以看出,在没有执行指令之前,AH和AL寄存器没有被赋值,其值为0。

实验一 熟悉汇编程序调试步骤

实验一 熟悉汇编程序调试步骤

实验一汇编语言环境一、实验目的1.熟悉汇编语言的上机环境,学习EDIT,MASM,LINK程序的使用,掌握建立、汇编、链接、运行汇编语言程序的过程。

2.熟悉DEBUG有关命令的使用方法。

二、实验原理建立、汇编、链接、运行汇编语言程序的过程方法。

三、主要仪器及耗材计算机、MASM软件包。

四、实验内容与步骤内容:1.输入、编辑汇编语言程序。

2.对汇编语言程序进行汇编、连接和运行。

步骤:1.在DOS提示符下,进入MASM目录。

2. 在MASM目录下启动EDIT编辑程序,输入源程序,并对其进行汇编、连接和运行。

1) 调用edit输入、编辑源程序并保存在指定的目录中;例:edit no1.asm,进入编辑窗口code segmentassume cs:codestart:mov ah,08hint 21hmov ah,4chint 21hcode endsend start编辑完后,何在退出edit窗口2) 用汇编程序masm对源程序汇编产生目标文件obj。

例:masm no1不断修改错误,直至汇编通过为止,产生no1.obj。

3) 用连接程序link产生执行文件exe.例:link no14) 执行程序:可直接从DOS执行程序,即在DOS环境中,输入文件名no1即可。

再次熟悉汇编连接,运行过程。

1.在DOS提示符下,进入MASM目录。

2. 在MASM目录下启动EDIT编辑程序,输入源程序,并对其进行汇编、连接和运行。

1) 调用edit输入、编辑源程序并保存在指定的目录中;例:edit no2.asm,进入编辑窗口DATAS SEGMENTbuf db 'I am a student!$' ;此处输入数据段代码DATAS ENDSSTACKS SEGMENTdb 200 dup(0);此处输入堆栈段代码STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AXlea dx,bufmov ah,9int 21h;此处输入代码段代码MOV AH,4CHINT 21HCODES ENDSEND START编辑完后,何在退出edit窗口2) 用汇编程序masm对源程序汇编产生目标文件obj。

《汇编语言程序设计》实验报告(一)

《汇编语言程序设计》实验报告(一)
MESS1 DB 'MATCH!’,13,10,’$'
MESS2 DB 'NO MATCH!’,13,10,’$'
DATA ENDS
对以上源程序重新汇编、连接、运行,结果输出为:MATCH!
七、实验总结
通过这次上机实践,我对汇编程序和连接程序的使用开始有一点了解。但刚开始还是很不顺的,总是出现找不到文件,后来经过同学的指导,终于知道自己的错误,原来是路径错误。所以还需要勤加练习,多多实践。
四、实验材料、工具、或软件
多媒体计算机、WINDOWS XP系统或纯DOS系统、MASM6.11以上版本或汇编语言程序设计实验集成环境。
五、实验要求
1. 编写一程序,要求比较两个字符串STRING1和STRING2所含字符是否相同,若相同则显示‘MATCH’,若不相同则显示‘NO MATCH’。用串比较功能来完成程序所要求的功能。
2.完成课堂例题,并用DEBUG运行,观察结果。
六、试验内容与步骤:(附上必要的调试过程及运行结果截图,可加附页)
试编写一程序,要求比较两个字符串STRING1和STRING2所含字符是否相同,若相同则显示‘MATCH’,若不相同则显示‘NO MATCH’。用串比较功能来完成程序所要求的功能。上机步骤如下:
《汇编语言程序设计》实验报告(一)
姓名
学号
系别
班级
指导教师
实验日期
课程名称
《汇编语言程序设计》
同组实验者
一、实验名称:实验一汇编程序和连接程序的使用
二、实验目的:
1. 熟悉汇编语言的上机环境;
2. 学习EDIT,MASM,LINK程序的使用;3. 掌握建立、汇、链接、运行汇编语言程序的过程。

汇编实验实验一

汇编实验实验一

《汇编》实验报告一、实验内容1、试编制一程序,计算下列公式的值,并存放在FUN存储单元中。

F=[10*(x+y)-3*(z-1)]/22、试编制一程序,从键盘输入一字符串,并将该字符串从屏幕上显示出来。

例如:显示’hello computer!’二、实验目的及要求1、实验目的:1.了解熟悉DEBUG命令;2.熟悉数据传送指令、算术运算指令、逻辑指令、段寄存器装在的内容;3.掌握简单的汇编语言程序编写与调试。

2、实验要求:1.仔细阅读有关DEBUG命令的内容,对有关命令,要求事先准备好使用的例子;2.阅读数据传送指令、算术运算指令、逻辑指令、段寄存器装在的内容;3.用DEBUG的有关命令调试本实验中的求多项式结果程序段与从键盘输入一字符串并将该字符串从屏幕上显示出来的程序段。

三、设计分析第一题的设计分析:一、实现变量的三个步骤:①、在数据段中定义变量并赋予初值,为计算多项式做准备;②、利用算术指令ADD、SAL、SUB、INC、DEC、SAR实现多项式的运算。

二、计算变量与计算变量结果的存放:①、代码段第三条指令开始计算变量,倒数第三条指令存放变量的结果,即多项式的计算终止;②、变量的奇数倍用ADD与SAL指令完成,而偶数倍只需SAL指令完成;③、注意MOV指令的操作数不能同时为存储单元。

第二题的设计分析:一、实现字符串输入,需要分成三个步骤:①、在数据段中定义一个缓存区为存放字符串做准备;②、DOS系统功能调用0AH号子功能,(DS:DX)= 输入缓冲区首址;③、在输入的字符串尾加上‘$’字符,以作为输出结束条件。

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

四、程序的调试过程第一题:第二题:五、运行结果分析第一题的运行结果分析:第二题的运行结果分析:六、附件:带注释的源程序第一题的源代码:TITLE EXAMPLE PROGRAMDATA SEGMENTVARX DW 123H ;定义X变量VARY DW 456H ;定义Y变量VARZ DW 789H ;定义Z变量FUN DW ? ;定义存放结果的存储单元DATA ENDSSTACK1 SEGMENT PARA STACKDW 20H DUP(0)STACK1 ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK1START: MOV AX,DATAMOV DS,AXMOV AX,VARX ;取变量XADD AX,VARY ;计算(X+Y)MOV BX,AXSAL AX,1 ;计算2*(X+Y)SAL AX,1 ;计算4*(X+Y)ADD AX,BX ;计算5*(X+Y)SAL AX,1 ;计算10*(X+Y)MOV BX,VARZ ;取变量ZDEC BX ;计算(Z-1)MOV CX,BXSAL BX,1 ;计算2*(Z-1)ADD BX,CX ;计算3*(Z-1)SUB AX,BX ;计算10*(X+Y)-3*(Z-1) SAR AX,1 ;计算[10*(X+Y)-3*(Z-1)]/2 MOV FUN,AX ;存放结果MOV AH,4CH ;终止用户程序,返回DOS INT 21HCODE ENDSEND START第二题的源代码:DATA SEGMENTN EQU 50MAXLEN DB N ;缓冲区字符的最大长度ACTLEN DB ? ;实际字符个数STRING DB N DUP(?) ;字符空间CR DB 0AH,0DH,'$'DATA ENDSSTACK1 SEGMENT PARA STACKDW 200H DUP(0)STACK1 ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK1START: MOV AX,DATAMOV DS,AXLEA DX,MAXLENMOV AH,0AHINT 21H ;字符串输入MOV AH,09H ;字符串输出LEA DX,CR ;回车换行INT 21HMOV BL,MAXLEN+1 ;取实际的字符长度MOV BH,0LEA SI,MAXLEN+2 ;取字符开始的首地址MOV BYTE PTR [SI+BX],'$' ;输出结尾要加上$ MOV DX,SI ;把开始存放字符的首地址赋给DX MOV AH,09H ;字符串输出INT 21HMOV AH,4CH ;终止用户程序,返回DOSINT 21HCODE ENDSEND START。

汇编实验一实验报告

汇编实验一实验报告

汇编语言程序设计实验报告课程名称汇编语言程序设计班级姓名学号指导教师汇编语言程序设计实验一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。

一直监视AX 和IP 寄存器的内容变化,尤其是标志位的变化。

实验一汇编语言上机及Debug调试

实验一汇编语言上机及Debug调试

实验一汇编语言程序上机过程以及调试(1)一、预习内容1.工具软件MASM、LINK的使用2.常用DEBUG命令的使用: G,D,R,T,U,Q3.完整程序设计方法的格式。

二、目的要求1.掌握常用工具软件MASM、LINK的使用2.掌握常用DEBUG命令: G,D,R,T,U,Q 能灵活使用这些命令调试程序3.掌握完整程序设计方法的格式,能正确书写数据段,代码段等。

三、实验内容比较两个字符串string1和string2所含的字符是否相同,如果相同则显示’Match'否则显示’No match’.请读程序,并将程序补充完整。

DSEG SEGMENTstring1 db 'Move the cursor backward.'string2 db 'Move the cursor backward.'mess1 db 'Match.',13,10,'$'mess2 db 'No match.',13,10,'$'DSEG ENDSCSEG SEGMENTassume cs:CSEG, ds:DSEG, es:DSEG,MAIN PROC FARstart: mov ax, dsegmov ds, axmov es, axlea si ,string1①cld②repz cmpsbjz matchlea dx,mess2jmp short dispmatch:lea dx,mess1disp: mov ah,09hint 21hmov ax, 4c00hint 21hMAIN ENDPCSEG ENDSend start实验步骤:1)用文字编辑工具(记事本或EDIT)将源程序输入完整后保存在d:\masm下,注意保存时将文件扩展名改为.asm(如test1.asm)。

2)屏幕左下角”开始”–“运行”输入cmd ,进入dos命令操作,先用d: 和cd mas m 命令改变路经,接着用”masm + 文件名” (如masm test1,这里文件名可以不带扩展名)对源文件进行汇编,产生.obj文件和.LST文件。

实验一-8086汇编语言上机调试及基本操作.

实验一-8086汇编语言上机调试及基本操作.

实验一:8086汇编语言上机调试及基本操作(验证性)1、实验目的:(1)掌握常用DEBUG命令: G,D,R,T,U,Q。

(2)掌握工具软件EMU8086。

(3)掌握完整程序设计方法的格式,能正确书写数据段,代码段等。

(4)掌握简单的数值转换算法2、实验说明:计算机中的数值有各种表达方式,这是计算机的基础。

掌握各种数制之间的转换是一种基本功。

3、程序框图:对于0-999(即000H-3E7H)范围内的二进制数4、参考程序:; 将AX中的三位数拆为三个BCD码, 并存入Result 开始的三个单元DATA SEGMENT; 数据段RESULT_1 DB 1RESULT_2 DB 1RESULT_3 DB 1DATA ENDSSTACK SEGMENT STACK ; 堆栈段STA DB 64 DUP(0)STACK_TOP DB 0STACK ENDSCODE SEGMENT; 代码段ASSUME CS:CODE , DS:DATA , ES:DATA , SS:STACKSTART:MOV AX, DATAMOV DS, AX ; 设置数据段MOV AX, STACKMOV SS, AX ; 设置堆栈段LEA SP, STACK_TOP ; 设置栈顶指针MOV AX, 2afHMOV CL, 100DIV CLMOV RESULT_1, AL ; 除以100, 得百位数MOV AL, AHMOV AH, 0MOV CL, 10DIV CLMOV RESULT_2, AL ; 余数除以10, 得十位数MOV RESULT_3, AH ; 余数为个位数MOV AX,4C00H ; 返回DOSINT 21H ;CODE ENDSEND START ; 最后一行要按回车键5、实验及报告要求:1)用合适的编辑软件编辑以上源文件并存入合适目录;要求补充注释未注释的伪指令和指令;2)分别在DOS和Windows下编译、连接生成可执行文件,比较两个环境下生成的机器码的长度和内容;试指出第2、5、7、10、14条指令的IP和机器码。

汇编语言实验报告

汇编语言实验报告

实验一汇编程序的汇编及运行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)编写源程序。

实验一 汇编语言程序设计EMU8086基础实验

实验一  汇编语言程序设计EMU8086基础实验

实验一汇编语言程序设计EMU8086基础实验1、实验目的和要求:了解使用EMU8086(8086汇编模拟工具)学习汇编的方法。

2、实验内容:编写汇编程序,计算2010H+2011H,并把和存入RESULT单元。

8086汇编模拟工具,结合了一个先进的原始编辑器、汇编器、反汇编器、具除错功能的软体模拟工具(虚拟 PC),还有一个循序渐进的指导工具。

这对刚开始学汇编语言的人会是一个很有用的工具。

它会在模拟器中一步一步的编译程式码并执行,视觉化的工作环境让它更容易使用。

你可以在程式执行当中检视暂存器、标志以及内存。

模拟器会在虚拟 PC 中执行程式,这可以隔绝你的程式,避免它去存取实际硬体,像硬盘、内存,而在虚拟机器上执行汇编程序,这可以让除错变得更加容易。

3、实验仪器与器材:计算机及EMU8086汇编软件等。

4、实验原理:自己总结5、实验过程与测试数据(含电路图/程序框图):A、打开EMU8086 v4.08软件,新建工程,选EXE模板,清屏,编写8086程序代码。

B、保存程序代码为*.asm文件,编译保存为可执行文件.exe,编译保存没有错误则模拟运行。

如果有错误返回修改。

运行有单步运行、全速运行等。

实验一参考程序DATA SEGMENTX DW 2010HY DW 2011HRESULT DW ?DATA ENDSCODE SEGMENTMAIN PROC FARASSUME CS:CODE,DS:DATASTART: PUSH DSMOV AX,0PUSH AXMOV AX,DATAMOV DS,AXMOV AX,XADD AX,YMOV RESULT,AXRETMAIN ENDPCODE ENDSEND START6、实验分析:自己分析7、实验体会自己总结。

汇编语言编程实验报告

汇编语言编程实验报告

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

二、实验二: (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方法)方法)。

汇编实验报告一实验总结

汇编实验报告一实验总结

汇编实验报告一实验总结
实验报告一:汇编实验总结
实验目的:通过汇编实验,掌握汇编语言的基本语法和编程技巧,加深对计算
机底层工作原理的理解。

实验过程:在实验中,我们首先学习了汇编语言的基本语法和指令格式,包括
寄存器的使用、内存地址的访问、算术运算和逻辑运算等。

随后,我们进行了
一系列的编程练习,包括编写简单的程序来实现加法、乘法、比较大小等功能。

在实验的最后阶段,我们还学习了如何调用系统中断来实现输入输出操作。

实验结果:通过本次实验,我们深入了解了汇编语言的编程技巧和应用场景。

我们不仅掌握了汇编语言的基本语法,还学会了如何编写简单的汇编程序来实
现一些基本的功能。

同时,通过实验,我们对计算机底层的工作原理有了更深
入的理解,对计算机系统的运行机制有了更清晰的认识。

实验总结:本次汇编实验让我们深入了解了汇编语言的基本知识和编程技巧,
为我们今后的学习和工作打下了坚实的基础。

通过实验,我们不仅学会了如何
使用汇编语言编写程序,还对计算机系统的底层工作原理有了更深入的理解。

希望在今后的学习和工作中,我们能够继续深入研究汇编语言,不断提高自己
的编程水平,为计算机科学技术的发展贡献自己的力量。

微机原理-实验一-汇编语言-冒泡排序

微机原理-实验一-汇编语言-冒泡排序

微机原理实验报告班级:XXXXX姓名:XXXX学号:20XXXXXXXXX大学信息科学与技术学院信息工程系实验一汇编语言程序设计-(具体题目)一、实验目的(根据实际情况修改):1、熟悉MASM编译环境,了解程序的汇编方法;2、熟悉常用汇编指令,学习汇编程序设计方法;3、学习汇编语言的调试过程,通过调试过程认识CPU执行程序的方式;4、了解冒泡法原理,学习多重循环的编程方法。

二、实验内容:编写程序,用冒泡法实现将数据段内9,8,7,6,5,4,3,2,1按照由小到大的顺序重新排列。

三、程序流程图和程序代码1、流程图2、代码与注释(代码不能和指导书完全一样,写出注释,写出寄存器尤其是DS的值)data segmentbuf1 db 8,7,6,5,4,3,2,1data endscode segmentassume cs:code,ds:datastart: mov ax,data //传送数据段datamov ds,axmov dx,7 //dx放外循环7次L3: mov cx,dx //cx放内循环7次lea si,buf1 //将db里的数据传送到siL2: mov al,[si]cmp al,[si+1] //比较[si]与[si+1]jb L1 //[si]<[si+1],跳转到L1xchg al,[si+1] //[si]>[si+1],两两交换mov [si],alL1: inc si //si减1loop L2 //循环L2dec dx //外循环减1,没减到0则跳转到L3 jnz L3 //入内循环,计数初值mov ah,4chint 21hcode endsend start四、调试过程及遇到的问题1、程序执行截图2、调试用到的命令-U命令:查看数据段地址;-d命令:查看运行前后存储器内容;-g命令:运行程序;-t命令:查看运行前后寄存器和存储器内容。

3、遇到的问题及解决办法问题:运行程序后,数据1在存储器地址末尾没变。

汇编实验一 实验报告

汇编实验一 实验报告

实验一查看CPU和内存用机器指令和汇编指令编程
一、实验目的
1.掌握debug的使用方法,会用基本的D,R命令查看、显示内存和寄存器
2.了解汇编指令编程的方法。

二、实验任务
1检查在存储器低端的BIOS数据区的内容。

(1)检查串行与并行端口
(2)检查系统设备
(3)检查键盘Shift状态
(4)检查显示状态
2 考察ROM BIOS
目的:检查在存储器高端的ROM BIOS中的数据。

(1)检查版本通告
(2)检查ROM BIOS数据
3.用D、R命令查看、显示内存和寄存器,可对寄存器内容进行修改。

三、实验结果及分析
1、检查在存储器低端的BIOS数据区的内容
(1)检查串行与并行端口
说明:检查后发现有四个串行端口,分别是03F8、02F8、03E8、02E8;并行端口也有四个,分别是03BC、03BC、0378、0278、9FC0
(2)检查系统设备
(3)检查键盘Shift状态
(4)检查显示状态
2、考察ROM BIOS (1)检查版本通告
(2)检查ROM BIOS数据
3、用D、R命令查看、显示内存和寄存器,可对寄存器内容进行修改
四、实验总结(心得、体会)
1、通过对检查在存储器低端的BIOS数据区的内容的查看,可以了解计算机的各种状态,而考察ROM BIOS可以鉴定计算机的出厂信息。

2、通过用D、R命令查看、显示内存和寄存器,可以了解计算机运行的过程步骤,并且可以通过偏移地址读取内容。

3、在读取时需要注意的是,在DEBUG显示中是低位至高位的显示,而我们需要的是高位至低位的显示方式,所以在操作时对于双字节的读取,需要将前后字节地址内容互换。

汇编实验一显示字符串

汇编实验一显示字符串

汇编实验一显示字符串标签:汇编程序开始的时候有点畏惧写汇编的程序,因为汇编的程序有太多的指令需要记忆了,同时这个语言有点让人难以理解,但是经过我的一番复习之后,发现其实也并不是那么难,正所谓说:只要下功夫,没有事是不能成功的。

由于是第一次写我自己的汇编程序,所以今次我特别详细的写下的编程过程。

我的整个开发过程如下:首先要理解汇编编程的过程:一,建立.asm文件,将masm.exe,debug.exe,link.exe复制到与源程序同一个文件目录下。

打开.asm文件,在里面编写好程序二,编写好程序之后,要检查程序有没有问题,这里要打开dos界面,进行对程序编译,cd是打开文件夹的意思,masm命令就是用来编译文件了,我建立的是1.asm文件,所以直接打上masm 1.asm就可以编译了,假如有错误系统与直接提示错误的地方和行,根据提示就可以进行修改了。

三,link 1.obj就可以生成.exe文件了。

直接运行exe文件文件就可以看到你所需要的结果,例如本实验就是显示字符串了。

讲完如何进行汇编写程序,编译程序和生成可执行文件,下面我来讲讲汇编程序具体怎么写,其实写汇编程序有一定的格式,这些格式一般都是固定的不需要修改直接套用就可以了。

汇编的一些固定格式:;sample program display message;注释行stack segment para stack'stack';定义堆栈段db 1024 dup(0);在存储器的某个区域建立一个堆栈区stack ends data segment;定义数据段message db'This is asample program.';在存储器中存放供显示的数据db 0dh,0ah,'$'data ends code segment;定义代码段assume cs:code,ds:data,ss:stack start proc far;将程序定义为远过程程序开始。

汇编语言

汇编语言
汇编语言上机实验一
汇编语言程序实验一 题目: 题目: EDIT, MASM, LINK程序使用 程序使用 实验步骤: 实验步骤: 1. 进入命题窗口
汇编语言上机实验一
2. 输入EDIT 命令 进入EDIT 编辑器窗口 输入 进入
汇编语言上机实验一
3. 输入一下代码,并保存在E:\masm\文件夹下, 输入一下代码,并保存在 文件夹下, 文件夹下 命名为hello.asm 命名为 实验步骤: 实验步骤: 1. 用EDIT编辑程序,并保存 编辑程序, 编辑程序 2. 用MASM程序,汇编刚才保 程序, 程序 存的程序, 存的程序,产生 .obj文件 文件 3. 用LINK程序,链接第 步产 程序, 程序 链接第2步产 生的obj文件 文件, 生的 文件,产生 .Exe文件 文件 4. 运行产生的 文件查看结果 运行产生的exe文件查看结果
汇编语言上机实验一
பைடு நூலகம்
4. 推出EDIT 编辑器 推出
汇编语言上机实验一
5. 在dos下,通过CD命令进入 下 通过 命令进入E:\MASM文件夹 文件夹 命令进入 输入MASM指令,输入hello.asm, 然后回车, 指令,输入 然后回车, 输入 指令 回车,产生目标文件hello.obj 回车,产生目标文件
汇编语言上机实验一
6. 在dos下, 输入link指令,输入hello.boj, 然后 下 输入 指令,输入 指令 回车,回车,产生目标文件hello.exe 回车,回车,产生目标文件
汇编语言上机实验一
7. 在dos下, 输入hello,回车,则刚才写的程序 下 输入 ,回车, 执行了。 执行了。结果如下
汇编语言上机实验一
8. 重复上面的操作,加入代码, 重复上面的操作,加入代码, 把作业上的自己写的程序进行调试 9. 自己编写指令,把我们所有的数据传送指令进 自己编写指令, 行验证和调试。 行验证和调试。

汇编实验报告

汇编实验报告

《汇编程序设计》实验报告班级网络工程3班姓名院系计算机科学学院学号指导教师郭荣佐计算机科学学院目录实验一Debug命令的使用一,实验目的及要求1,汇编语言调试环境Debug的使用,重点掌握常用命令(A R D E T)的使用,其他指令在以后的学习中逐步掌握。

2,利用Debug命令,调试采用不同寻址方式的指令的执行结果,从实践中加深对寻址方式和MOV指令的理解。

二,实验内容1,Debug程序的调入和退出2,Debug常用调试命令的使用3,MOV.XCHG.XLAT指令的调试三,实验步骤(一)、DOS常用命令练习:1.查看目录下所有的文件:2.键入 CD进入上级目录,再查看的结果:3.用COPY复制一个文件:4.用RENAME重命名一个文件:4.用DEL删除一个文件:(二)、DEBUG练习1,输入代码2,分步执行代码3,显示内存4,修改0100处的指令5,修改2000单元的值四,扩展题1,MOV指令的调试2,XCHG指令的调试3,XLAT指令的调试五、18条指令1。

.2.比较命令3.显示命令D:4.修改命令E:5‘填充内存指令F:6执行命令G:7.十六进制算求算运算指令H:8.断口输入命令I:9.读盘命令L:10.内存搬家命令M:11.命名待读/写文件命令N:12.段口输出命令O:13.结束debug返回DOS命令Q14.显示修改寄存器命令R15.搜索指定寄存器内容命令S16.执行并显示系统环境命令T 17.反汇编命令U18.写盘命令W实验二、基本汇编指令的使用一、实验目的及要求1.继续熟悉汇编语言调试环境Debug的使用,掌握常用调试命令。

2.用基本指令编写的程序段,并在Debug环境中调试,从实践中加深对基本汇编语言指令的执行过程的理解。

3.实验前要做好充分准备,包括汇编程序段清单、调试步骤、调试方法,以及对程序结果的分析等二、实验内容1单步调试一下程序段,给出每条指令执行后AL的值,以及CF、ZF、SF、OF 的状态。

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

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

实验报告实验名称汇编语言程序设计||专业班级:信息安全学号:姓名:实验一汇编语言上机过程和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)。

“汇编语言程序设计”实验报告
学院:计算机学院班级:1202班
姓名:张加玲学号:123110010
成绩:
实验一表格查找的实现
一. 实验目的
掌握汇编语言源程序的建立及.asm文件生成.exe文件的方法;学习调试工具Debug的使用。

二. 实验主要内容
1.汇编语言程序的生成.
2.表格查找tabsrch的实现.(流程图)
三.实验的过程及总结
1.汇编语言程序的建立及执行过程.
(1)tabsrch代码:
;*************************************************
datasg segment para 'data'
messl db 'stock nember?',13,10,'$'
;
stoknin label byte
max db 3
act db ?
stokn db 3 dup(?)
;
stoknab db '05',' Excavators '
db '08',' Lifters '
db '09',' Presses '
db '12',' Valves '
db '23',' Processors '
db '27',' Pumps '
descrn db 14 dup(20h),13,10,'$'
mess db 'Not in table!','$'
datasg ends
;************************************************** codesg segment para 'code'
assume cs:codesg,ds:datasg,es:datasg
;---------------------------------------------------- main proc far
push ds ;save old data segment
sub ax,ax ;put zero in AX
push ax ;save it on stack
mov ax,datasg ;data segment addr
mov ds,ax ; into DS register
mov es,ax ; into ES register
;MAIN PART OF PROGRAM GOES HERE
start:
lea dx,messl
mov ah,09
int 21h
lea dx,stoknin
mov ah,0ah
int 21h
cmp act,0
je exit
mov al,stokn
mov ah,stokn+1
mov cx,06
lea si,stoknab
a20:
cmp ax,word ptr[si]
je a30
add si,21
loop a20
lea dx,mess
mov ah,09
int 21h
jmp exit
a30:
mov cx,07
lea di,descrn
rep movsw
lea dx,descrn
mov ah,09
int 21h
jmp start
exit:
ret
main endp
;-------------------------------------------------- codesg ends
;*************************************************** end main
(2)编译生成tabsrch.obj
(3)连接成tabsrch.exe
2.表格查找tabsrch的实现及调试工具Debug的使用.运行tabsrch.exe
debug调试:
总结:
因为,基于win7环境下实验,原masm,link等软件不兼容,所以装载DOSBOS软件,在该环境下完成所有实验。

初始,在字符串长度定义时与循环条件si的增值不符,致使除第一个数据“05”能正常输出,其他均显示,调整si增值与字符串长度一样后,成功完成实验。

相关文档
最新文档