汇编语言第四次上机实验报告

合集下载

西安交通大学第四次汇编上机报告

西安交通大学第四次汇编上机报告

西安交通大学第四次汇编上机报告80x86 汇编语言程序设计课内实验报告班级实验时间2021.6.10姓名学号实验内容概述(1)试编制一程序,要求测出一个子程序的运行时间(指该子程序从被调用、执行、再返回调用程序所花费的时间),并把其运行时间按照时分秒(HH:MM:SS)的形式在屏幕上输出。

(使用时钟服务INT 1AH)(2)编写程序,使类型1CH 的中断向量指向中断处理程序COUNT,COUNT 统计1CH 中断次数并存入字变量单元NUM 中。

程序启动后等待用户输入,输入字符Q 后退出,并将NUM 值用十六进制形式显示出来。

例如NUM 的内容为1234h,则在屏幕上显示1234h。

(3)编写一个程序,接收从键盘输入的10 个十进制数字(你的学号),输入回车符则停止输入,然后将这些数字加密后(用XLAT 指令变换)存入内存缓冲区BUFFER。

实验步骤(1)定义时分秒数据段,调用子程序ENCRYPT,子程序中调用DOS 系统的INT1AH 中的时钟服务,将得到的值赋给HH、MM、SS,最后调用INT21H 的9号功能,在屏幕上显示出来(2)定义数据段,修改1 号中断为COUNT,保存1CH 中断向量,然后使类型1CH 的中断向量指向中断处理程序COUNT,COUNT 统计1CH 中断次数并存入字变量单元NUM 中。

调用INT21H0A 号功能读取用户在缓存区的键入字符,当检测到输入字符Q 后退出,用02 号功能将NUM 值用十六进制形式显示出来(3)调用INT21H0A 号功能将键盘输入读取至缓存区,接收从键盘输入的10个十进制数字,同时判断当输入回车符则停止输入,然后将这些数字加密后(用XLAT 指令变换)存入内存缓冲区BUFFER。

实验中遇到的问题及其解决方法本次实验主要是做了对DOS 和BIOS 功能的使用,过程很顺利,没有遇到困难。

实验结果正确年月日建议无备注无。

微机原理与应用第四次实验报告

微机原理与应用第四次实验报告

微机原理与应用第四次实验报告实验6 汇编语言程序结构一、实验目的1.掌握汇编语言项目上机过程2.掌握汇编语言程序结构和常用伪操作3.掌握汇编语言程序设计和调试方法4.掌握MSP430F1xx基本I/O控制方法二、实验任务1.学习汇编指示性语句(可在simulator下完成)在EWH8下新建项目Lab_6,编写下面程序L6_directives.s43(程序清单见后页,该程序只是为了学习指示性语句,程序本身并没有实现什么特定功能),利用project/remove移出模板文件test_asm.s43,点击project/add/files将L6_directives.s43添加到项目中。

1) 利用EW430下的view/memory查看DATA16_C段中定义的存储单元内容和地址,在memory/go的窗口内输入存储单元的符号(如number1)即可查看到该符号对应的存储单元地址和内容,注意在L6_directives.s43程序中使用这些存储单元的内容和地址的方法;利用view/disassembly反汇编程序,对比源程序,利用每条指令后的注释,学习其中用到的指示性操作,如:#define、SFB、SFE、SIZEOF、$等,并能在今后的程序设计中使用。

2) 在L6_directives.s43中,number4和number1分别被定义成了什么?二者有何不同?#number4和#number1这两个操作有何不同?MOV #number4, R7和MOV number4, R7执行的结果会相同吗?为什么?3) 如图6-1所示,点击项目中的msp430x14x.h文件,了解该文件中用到的指示性语句,今后的实验中会用到该文件中的定义。

答2.编程控制实验板上发光二级管按下面4种规律循环显示1) 8个LED灯顺时针一个一个单独点亮,每次只有一个灯亮,其他灯灭;2) 4个奇数号LED灯和4个偶数号LED灯交替点亮各一次;3) 8个LED灯两两点亮,顺序为LED1和8,LED2和7,LED3和6,LED4和5,每次只有两个灯亮,其他灯灭;4) 8个LED灯全亮,全灭注意:在灯的状态变化中,需留一定延时,以便视觉能感受到灯的亮灭,要求编写一延时子程,需要延时的地方,用CALL指令调用该子程。

汇编语言第四次上机实验报告

汇编语言第四次上机实验报告

汇编语言第四次上机实验报告时间: 2013/5/10 7:00-9:30 地点:南一楼803实验人员:计科10班王涛学号: U201114445一、题目1、用三种方式获取中断类型码10H对应的中断处理程序的入口地址。

(1)直接运行调试工具(TD.EXE),观察中断矢量表中的信息,指出中断类型码10H 对应的中断处理程序的入口地址。

(使用TD观看即可)。

使用TD观看时,在调试工具下调入以前编好的运行程序,跟踪执行INT 21H(即进入中断处理程序,方法是:执行到INT 21H 时,按ALT+F7),观察CS及IP是否改变成了前面记录的值。

(2)编写程序,用DOS系统功能调用方式获取,观察相应的出口参数与(1)看到的结果是否相同(使用TD观看即可)。

(3)编写程序,直接读取相应内存单元,观察读到的数据与(1)看到的结果是否相同.2、编制时钟显示程序。

要求每隔1s在屏幕右下角显示“年-月-日时:分:秒”,并将程序驻留在内存。

3、安装MASM32软件包,以其中的一个例子(如example\3dframes)为例,试用软件包中的集成汇编、连接和调试(TD32.EXE)功能。

软件包从汇编教学网站上下载,操作参见《80X86汇编语言程序设计上机指南》第七章。

二、实验要求1. 在调试工具下调入之前编好的运行程序,跟踪执行INT 21H(即进入中断处理程序,方法是:执行到INT 21H时,按ALT+F7),观察CS及IP是否改变成了前面记录的值。

操作提示:由于INT 21H内部的代码较长,为便于从中断处理程序返回到主程序,可在主程序INT 21H后面的指令上先设置好断点,当不再想跟踪中断处理程序时按F9即可。

实验报告的3、4、5 三个部分不用写。

2. 提示:CMOS内部07,08,09单元中分别存放着日、月、年的信息,“年”只显示低2位即可。

汇编教学网站(http://202.114.1.86)上有CMOS参考资料。

汇编上机实验报告心得体会

汇编上机实验报告心得体会

汇编语言程序设计第一次上机作业1.从键盘上接受一个字符,找出他的前导字符和后继字符,按顺序显示这三个字符。

寄存器分配: AL :存输入值x DL :输出显示 流程图:如右图所示 DA TA SEGMENTA DB 0DA TA ENDSSTACK SEGMENT STACKDB 200 DUP(0) STACK ENDSCODE SEGMENT ASSUME DS:DA TA,SS:STACK,CS:CODE S: MOV AX,DA TAMOV DS,AX MOV AH,1INT 21H INC AL MOV DL,AL MOV AH,2 INT 21HDEC ALMOV DL,AL MOV AH,2 INT 21H DEC AL MOV DL,AL MOV AH,2 INT 21H CODE ENDS END S2.从键盘上输入一个数字字符,如不是,显示‘not odd ’,否则显示‘odd ’。

寄存器分配: AL :存输入值x DL :输出显示流程图:如右图所示 程序代码如下:DA TA SEGMENT A DB 0BUF DB,'NOT ODD$' EA DB,'ODD$' DA TA ENDSSTACK SEGMENT STACK DB 200 DUP(0) STACK ENDSCODE SEGMENTASSUME DS:DA TA,SS:STACK,CS:CODE S: MOV AX,DA TA MOV DS,AX MOV AH,1 INT 21H CMP AL,'0' JNGE B CMP AL,'9' JGE B LEA DX,EA MOV AH,9 INT 21H JMP CB: LEA DX,BUF MOV AH,9 INT 21HC: MOV AH,4CH INT 21H CODE ENDS END S第二次上机作业1.将以H为首地址的字节存储区中的技能被3整除又能被13整除的无符号整数的个数(假定<=9)显示出来;同时对应的显示它们分别对应的地址偏移量。

汇编语言实验报告四

汇编语言实验报告四

实验4实验学时: 2 实验地点:二综实验日期:一、实验目的掌握汇编编程规范,熟悉编程环境。

二、实验内容编程计算3550H-2320H,按16进制输出计算所得的差1230H。

再输出3550H-2321H的差,检验程序的正确性。

提示:考虑依次将1230H(即0001 0010 0011 0000B)从高位到低位,每4位二进制数一组分离出来,再将4位二进制数转换为ASCII码,利用DOS系统功能调用的2号子功能输出,就得到16进制数据的输出效果。

本题要求综合应用移位操作、逻辑操作等指令,并利用条件转移指令实现简单的循环程序,程序流程如图1所示。

DOS系统功能调用的2号子功能格式见dos调用表。

图1 16进制数据输出程序流程图三、实验步骤算法及关键代码1.分析1)关于rol指令rol bx,t:把目的地址中的数据循环左移t次,每次从最高位(最左)移出的数据位都补充到最低位(最右),最后从最高位移出的数据位保存到CF标志位。

2)将dl4位二进制转换为ASCII码add dl,30h2.主要代码如下DATAS SEGMENT;此处输入数据段代码DATAS ENDSSTACKS SEGMENT;此处输入堆栈段代码STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV bx,3550hMOV ax,2320hsub bx,axmov cx,4;此处输入代码段代码B: rol bx,1rol bx,1rol bx,1rol bx,1mov dl,bland dl,00001111badd dl,30h;二进制转换为ASCII码mov ah,02hint 21hloop BMOV AH,4CHINT 21HCODES ENDSEND START3.运行4.执行结果如下四.实验小结(简单说明实验过程中出现的问题和解决方法)1. 出现错误“MOV AH,2h INT 21H ”未写在主程序段B内,导致没有输出。

《汇编语言》实验报告

《汇编语言》实验报告

《汇编语言》实验报告实验名称:汇编语言实验报告实验目的:通过实验了解汇编语言的基本概念、语法结构和程序设计方法,掌握汇编语言的编写方法。

实验时间:2024年1月1日实验地点:实验室一、实验背景汇编语言是计算机硬件和软件之间的桥梁,通过汇编语言可以直接操作计算机的底层硬件。

汇编语言是一种低级语言,使用汇编语言可以实现对计算机内存、寄存器等硬件资源的直接操作,从而实现程序的功能。

本实验通过编写汇编语言程序,加深对汇编语言的理解。

二、实验过程1. 确定实验环境:使用DOSBox模拟DOS环境进行汇编程序编写和调试。

2. 编写第一个汇编程序:编写一个简单的汇编程序,将字符串“Hello, World!”输出到屏幕上。

3.程序分析:a.定义要输出的字符串,将字符串存储在数据段中。

b.设置段寄存器,将数据段地址加载到DS寄存器中。

c.设置显示模式和光标位置。

d.将字符串逐个字符输出到屏幕上。

e.关闭显示模式。

4. 编译运行:使用汇编语言的编译器将汇编程序转换成机器码,并在DOSBox中运行程序。

5.调试程序:根据程序运行结果和分析,调试程序中存在的错误,并进行改正。

三、实验结果与分析经过多次编写和调试,我们成功实现了将字符串“Hello, World!”输出到屏幕上的功能。

通过程序分析和调试过程,加深了对汇编语言的理解和掌握。

四、实验总结通过本次实验,我们深入了解了汇编语言的基本概念、语法结构和程序设计方法。

通过实际编写汇编语言程序,对汇编语言的编写方法有了更加深入的认识。

同时,通过调试程序的过程,我们也提高了自身的问题解决能力和分析能力。

在今后的学习和工作中,我们将继续学习和深入研究汇编语言,提高自己的编程能力和创新思维能力。

总体而言,本次实验给我们带来了很大的收获,我们以后将更加努力地学习汇编语言,提高自己的编程水平,为以后的学习和工作做好充分的准备。

汇编上机实验报告

汇编上机实验报告

汇编上机实验报告实验目的:通过进行汇编语言上机实验,掌握汇编语言的基本语法和编程技巧,培养汇编程序设计能力。

实验内容:实验一:汇编程序的简单输入输出1.编写一个汇编程序,要求从键盘输入两个整数,然后将其相加,并将结果输出到屏幕上。

2. 利用调试器(如DOSBox或emu8086)执行并调试程序,观察程序运行过程和实际输出结果。

实验二:汇编程序的条件跳转1.编写一个汇编程序,要求从键盘输入一个整数,判断其是否大于10,若是,则将其打印到屏幕上;否则,将其乘以5并打印到屏幕上。

2. 利用调试器(如DOSBox或emu8086)执行并调试程序,观察程序运行过程和实际输出结果。

实验三:汇编程序的循环1.编写一个汇编程序,要求计算1到10的累加和,并将结果打印到屏幕上。

2. 利用调试器(如DOSBox或emu8086)执行并调试程序,观察程序运行过程和实际输出结果。

实验四:汇编程序的数组操作1.编写一个汇编程序,要求定义一个长度为10的数组,并将数组中的值初始化为0,然后利用循环将数组中的每一个元素加1,并将每个元素的值打印到屏幕上。

2. 利用调试器(如DOSBox或emu8086)执行并调试程序,观察程序运行过程和实际输出结果。

实验结果:实验一:汇编程序的简单输入输出编写的汇编程序通过键盘输入两个整数,实现了相加并将结果输出到屏幕上的功能。

程序运行正常,输出结果与预期一致。

实验二:汇编程序的条件跳转编写的汇编程序通过键盘输入一个整数,根据条件判断,实现了将输入数大于10时打印在屏幕上,否则将其乘以5并打印在屏幕上的功能。

程序运行正常,输出结果与预期一致。

实验三:汇编程序的循环编写的汇编程序通过循环计算1到10的累加和,并将结果打印在屏幕上。

程序运行正常,输出结果与预期一致。

实验四:汇编程序的数组操作编写的汇编程序通过定义一个长度为10的数组,并将数组中的值初始化为0,利用循环将数组中的每一个元素加1,并将每个元素的值打印到屏幕上。

汇编语言实验报告4

汇编语言实验报告4

程及屏幕字符显示程序一、实验目的1、熟练掌握汇编语言的程序格式,程序设计方法;学会使用masm6.11对源程序进行编译、链接、调试和运行2、利用DOS功能调用INT21H的2号和9号功能进行屏幕显示的方法。

3、利用^Break退出程序的方法及局限性。

4、汇编程序的编写二、实验任务1学习汇编语言程序的上机过程2. 利用INT 21的09H号功能调用显示字符串。

验证以下程序1)用A命令在100H处键入下列程序:MOV AH, 9MOV DX,110INT 21INT 202)用A命令在110H处键入下列字符串的ASCII码:DB 'This is a sample!$'3)用N命令和W命令将此程序(包括数据区)存入文件名为的磁盘文件中。

(存入前BX:CX必须置为文件长度值)。

4)用Q命令退出DEBUG。

5)在DOS命令下打AA,运行此程序,即在屏幕上显示'This is a sample!'字符串,若不出现,用DEBUG 检查程序有无错误。

(给出结果截图)3、利用INT 21H 2号功能显示字符: 1)用A命令在100H处键入下列程序: XOR DL,DLMOV CX,100LOP: MOV AH,2INT 21INC DLPUSH CXMOV CX,8DELY: PUSH CXMOV CX,256J: LOOP JPOP CXLOOP DELYPOP CXLOOP LOPINT 202)用G命令运行程序,即在屏幕上依次缓慢的显示256个ASCII字符。

仔细观察每个字符,和IBM-PC ASCII码表对照,看07H-0DH处控制字符显示结果与表上有何不同?3)按CTRL+BREAK退出此程序,若一次不行可多做几次。

4 编写一个简化的段定义结构程序:先提示输入数字“Input number:0-9”,然后在下一行显示输入的数字,结束;如果不是键入了0-9 数字,就提示错误“ERROR!”,继续等待输入数字。

汇编第四次实验报告

汇编第四次实验报告

实验四字符及字符串的输入和输出一、实验目的1.熟悉如何进行字符及字符串的输入输出。

2.掌握简单的DOS系统功能调用。

二、实验预习要求1.复习系统功能调用的1、2、9、10号功能。

2.按照题目要求预先编写好实验中的程序段。

三、实验任务1.输入以下程序段并用F8键单步运行,执行INT 21H指令时,在键盘上按“5”键。

MOV AH,1INT 21H(1)运行结束后,(AL)=?它是哪一个键的ASCII码?(AL)=35。

他代表的是5的ASCII码。

(2)重复运行以上程序段,并分别用“A”、“B”、“C”、“D”键代替“5”键,观察运行结果有何变化?“A”、“B”、“C”、“D”分别是得到41、42、43、44.他们分别是A、B、C、D的ASCII码值。

2.在DS:1000H开始的内存区域设置如下键盘缓冲区:DS:1000H 5,0,0,0,0,0,0然后输入以下程序段并用F8键单步运行,执行INT 21H指令时,在键盘上键入“5”、“4”、“3”、“2”、“1”、〈回车〉这六个键。

LEA DX,[1000H]MOV AH,0AHINT 21H程序段运行完后,检查DS:1000H开始的内存区域:(1)DS:1001H单元的内容是什么?它表示了什么含义?DS:1001H内容为04H,他表示实际输入的字符个数。

(2)从DS:1002H开始的内存区域中的内容是什么?其中是否有字符“1”的ASCII码?为什么?从DS:1002H开始的内存区域中的内容分别是5、4、3、2和回车键的ASCII码。

其中没有字符“1”的ASCII码,因为实际长度只有4位,其中有一位是回车键,所以没有字符“1”的ASCII码。

3.输入以下程序段并运行之。

MOV DL,‘A’MOV AH,2INT 21H(3)观察屏幕上的输出,是否显示了“A”字符?显示了A了。

(在敲入代码的时候不可以直接敲入‘A’,而应该是敲入A的ASCII码即41)如下图:(4)分别用“#”、“X”、“Y”、“$”、“?”代替程序段中的“A”字符,观察屏幕上的输出有何变化。

汇编语言上机报告

汇编语言上机报告

汇编语言上机报告班级: 09软件本1 姓名:龚伟成学号:0915024125 成绩:实验1:8086的微处理器结构(现场)的认识实验一、实验目的1、通过DEBUG工具了解8086的寄存器2、了解DEBUG工具二、预习要点1、8086微处理器的内部特性。

2、8086的寄存器类型、名称和作用。

3、debug工具的作用和特点三、实验项目在DOS下利用Debug调试工具的R命令查看8086微处理器的现场(数据结构)四、实验设备环境PC机1台,DOS操作系统,Debug调试工具五、实验方法在DOS下利用Debug调试工具的R命令查看8086微处理器的现场(数据结构)。

六、实验要求1、写出R命令的功能。

R功能的命令是查看、改变CPU寄存器的内容2、写出8086的当前现场的所有数据部件(寄存器)的名称及作用。

EAX:通用寄存器。

相对其他寄存器,在进行运算方面比较常用。

在保护模式中,也可以作为内存偏移指针(此时,DS作为段寄存器或选择器)EBX:通用寄存器。

通常作为内存偏移指针使用(相对于EAX、ECX、EDX),DS是默认的段寄存器或选择器。

在保护模式中,同样可以起这个作用。

ECX:通用寄存器。

通常用于特定指令的计数。

在保护模式中,也可以作为内存偏移指针(此时,DS作为寄存器或段选择器)。

EDX:通用寄存器。

在某些运算中作为EAX的溢出寄存器(例如乘、除)。

在保护模式中,也可以作为内存偏移指针(此时,DS作为段寄存器或选择器)。

CS(Code Segment):代码段寄存器;ESI:通常在内存操作指令中作为“源地址指针”使用。

当然,ESI可以被装入任意的数值,但通常没有人把它当作通用寄存器来用。

DS是默认段寄存器或选择器。

EDI:通常在内存操作指令中作为“目的地址指针”使用。

当然,EDI也可以被装入任意的数值,但通常没有人把它当作通用寄存器来用。

ES是默认段寄存器或选择器。

EBP 和ESP :作为指针的寄存器,也可作为16位寄存器BP, SP 使用,常用于椎栈操作。

微机原理汇编语言的上机过程 实验报告

微机原理汇编语言的上机过程 实验报告

微机原理技术与接口实验报告学院:专业:班级:姓名:学号:汇编语言程序的上机过程实验目的通过简单地操作了解汇编语言程序的基本内容,体会汇编语言的运行,为以后的实验打下一定的基础。

实验原理及操作步骤一、上机环境❖要运行调试汇编语言程序,至少需要以下程序文件:▪编辑程序:或其他文本编辑工具软件,用于编辑源程序。

▪汇编程序:MASM.EXE,用于汇编源程序,得到目标程序。

▪连接程序:LINK.EXE,用于连接目标程序,得到可执行程序。

▪调试程序:DEBUG.EXE,用于调试可执行程序。

二、上机过程❖汇编语言程序上机操作包括:编辑、汇编、连接和调试几个阶段。

1.编辑源程序❖用文本编辑软件创建、编辑汇编源程序。

常用编辑工具有:、记事本、Word等。

❖无论采用何种编辑工具,生成的文件必须是纯文本文件,所有字符为半角,且文件扩展名为.asm(文件名不分大小写,由1~8个字符组成)。

2.汇编❖用汇编工具对上述源程序文件(.asm)进行汇编,产生目标文件(.obj)等文件。

❖汇编程序的主要功能是:检查源程序的语法,给出错误信息;产生目标程序文件;展开宏指令。

❖汇编过程如下:❖在DOS状态下,输入命令:MASM MYFILE.ASM(回车),即启动了汇编程序。

❖此命令执行后,会出现下面的3行信息,依次按回车键(即选择默认值)即可建立3个输出文件,其扩展名分别为:.OBJ(目标文件),.LST(列表文件)和.CRF(交叉引用文件)。

Object Filename [MYFILE.OBJ]:Source Listing [Nul.LST]:Cross Reference [Nul.CRF]:依次按回车键,进行选择后,汇编程序就对汇编源程序进行汇编。

如果汇编过程中发现有语法错误,则屏幕上会显示出错语言的位置和出错的类型。

此时,需要进行修改,然后再进行汇编。

❖如此进行,直至汇编无错误,得到目标文件为止。

3.连接❖汇编产生的目标文件(.obj)并不是可执行的程序,还要用连接程序把它转换为可执行的EXE文件。

微机原理第四次上机实验报告_PB

微机原理第四次上机实验报告_PB

微机原理第四次上机实验报告学号:PB12203254 姓名:**潇上机时间:每周五晚上【一、实验目的和要求】:1,熟练掌握分支程序的两种结构形式:即相当于高级语言中的IF_THEN_ELSE语句和CASE语句。

2,熟练掌握使用条件转移指令实现分支程序设计的基本方法。

3,熟练掌握使用跳转表方法实现CASE结构的分支程序的设计。

【二、实验内容和过程】程序1:编写一个程序将一个数组中正数和负数分成两个数组并分别屏幕显示正数和负数的个数。

(一)程序的算法:1,首先是待处理数组的创建:我们通过21H号中断调用的0A号功能调用输入数字串,存于BUFF字符串区(设定为0A号调用的键入缓冲区),这里只负责将键入的以回车符(0DH)结尾的字符串读入数据段,不检查输入是否合法。

但是,我们通过输出提示告知用户键入的数字之间应该使用空格符(20H)来分隔。

实际上,我们在处理数字的时候就是以空格符(当然,还包括尾后输入的回车符)作为一个数字的字符串形式结束的标志(回车符还标识所有数字处理完毕)。

另一方面,我们计划给每个数字分配一个字的储存空间,故我们支持的数字范围为-32768~32767,这同样有键入提示字符串提示。

2,数字处理阶段:----预备处理阶段:初始化用来作为指针和数据暂存的寄存器(DI指向保存正数的数组NUM1,SI指向保存负数对应补码的数组NUM2,BX指向键入缓存区BUFF,数据暂存的CX清0,将要用来读数和处理的AX清0),计数器清零(L1,L2清0,他们分别记录存入NUM1和存入NUM2的元素的个数)。

----正式处理阶段:(a)开始:我们通过BX指向BUFF,通过MOV AL,[BI]j将一个字节读入AL。

(b)判断,是否为回车符(0DH):TURE,所有数字处理完毕,跳转到输出阶段;FALSE,继续执行接下来的指令。

(c)判断,是否为回车(20H):TURE,尚未开始下一个数字的输入,回跳(a)重新读入下一个字节的内容;FALSE,继续执行接下来的指令。

第四次汇编语言实验报告

第四次汇编语言实验报告

汇编语言实验报告Assembly Language Programming Lab Reports______________________________________________________________________________ 班级:姓名:学号:实验日期:学院:专业:实验顺序:原创:___ 实验名称:循环程序设计实验分数:_______ 考评日期:________ 指导教师:______________________________________________________________________________ 一.实验目的1、掌握两种循环结构,DO WHILE的循环结构用CMP指令和条件转移指令构成。

DO UNTIL用loop,loope,loopne这三种指令实现。

2、掌握以下指令掌握循环指令,loop,loope,loopne。

掌握串处理指令,movs,cmps,scas,lods,stos 以及和他们联合使用的重复前缀指令rep,repz,repnz。

掌握伪指令 EQU 及操作符 '$'的使用。

掌握cmp,test和条件转移指令构成的循环结构。

3、掌握循环程序的设计过程,写出设计方法,给出程序框图,写出循环程序。

4、掌握多重循环中,可以由内层循环向外层循环跳转,或者直接向外层程序跳转,但是不允许从外向内跳转。

5、会用循环实现排序算法。

______________________________________________________________________________二.实验环境操作系统:windows 8编译程序:masm 5.0______________________________________________________________________________三.实验原理原理:①loop循环②两层、三层循环的嵌套______________________________________________________________________________四.实验步骤及结果分析1.简单的循环程序。

汇编语言上机实验报告

汇编语言上机实验报告

汇编语言上机实验报告实验时间:XXXX年XX月XX日实验课程:XXXXX实验室地点:XXXXX一、实验目的:1.熟悉汇编语言的基本语法和指令格式;2.掌握汇编语言程序的编写和调试方法;3.理解汇编语言与计算机硬件之间的关系。

二、实验设备与环境:1.实验设备:个人计算机或计算机终端;2. 实验环境:汇编语言开发工具,如Masm、TASM等。

三、实验内容:本实验通过编写汇编语言程序,实现以下功能:1.输入两个整数,求出其和并输出;2.输入一个正整数,判断其是否为素数并输出结果;3.输入一段字符串,判断其中是否存在一些字符,并输出字符的位置。

四、实验原理与方法:1.汇编语言基本语法:包括数据定义、指令格式、寄存器、标志位等;2.输入输出操作:通过中断调用实现从键盘输入、向屏幕输出;3.常用指令:包括数据传送指令、算术运算指令、逻辑运算指令等;4.判断与分支:通过条件判断指令实现程序流程控制。

五、实验步骤:1. 打开汇编语言开发工具,新建文件,并保存为.asm文件;2.编写程序,包括数据定义、指令编写等;3.进行程序调试,检查程序的正确性和运行结果;4.运行程序,查看程序的输出结果;5.对程序进行优化,确保程序的效率和稳定性;6.编写实验报告,记录实验过程和结论。

六、实验结果与数据分析:1.第一个功能的结果:输入两个整数进行相加并输出;2.第二个功能的结果:输入一个正整数,判断是否为素数并输出结果;3.第三个功能的结果:输入一段字符串,判断是否存在一些字符,并输出字符的位置。

七、实验总结:通过本次实验,我对汇编语言的基本语法和指令格式有了更深入的了解,掌握了汇编语言程序的编写和调试方法,加深对汇编语言与计算机硬件之间关系的理解。

在实验过程中,我遇到了一些困难和问题,但通过不断学习和尝试,最终解决了这些问题。

通过实验,我对汇编语言的应用有了更深入的认识,并体会到了编程的乐趣和挑战。

实验完成后,我深刻感受到了汇编语言的底层性能和灵活性,同时也意识到了其编码复杂和调试困难的一面。

实验四(报告)汇编语言编程的软件实训(实验报告)

实验四(报告)汇编语言编程的软件实训(实验报告)

实验四汇编语言编程实验报告
专业:班级:学号:姓名:
一.实验目的
熟悉汇编语言的编辑(如、QE.EXE及记事本等),汇编(MASM.EXE),连接(LINK.EXE)以及调试(DEBUG.EXE)软件。

二.实验设备
硬件环境:IBM/PC及其兼容机
软件环境:操作系统DOS 2.0版本以上;
汇编语言的编辑程序(如EDIT、QE、Windows操作系统自带的记事本等)、
汇编程序程序MASM、连接程序LINK及调试程序DEBUG。

三.实验要求
1. 试按下列给定的公式编写程序:编写源程序,参照P232 x1,x2,x3,x4在16位二进制数的范围内,且有意义)
(3*X1-(X2*X3+7*X4-200))/X3
其中,X1, X2, X3, X4为16位带符号数的字变量。

计算结果的商存在AX中,余数存放在DX中。

2.用编辑软件生成扩展名为.ASM的源文件,如:TEST.ASM,ABC.ASM等;
3.用汇编程序MASM.EXE对已编辑的源文件进行汇编并生成扩展名为.OBJ的目标程序名,如:TEST.OBJ,ABC.OBJ等;
4.用连接程序LINK.EXE进行连接生成扩展名为.EXE的可执行文件,如:TEST.EXE,ABC.EXE等;
5.应用调试程序DEBUG.EXE的主要命令对所生成的可执行文件进行调试。

四.实验过程及结果:
1.汇编生成目标文件结果如下:
2.连接生成可执行程序结果如下:
3.调试结果FUN的值为:
四.课后设计题:1.源程序:
2.计算结果:。

微机原理汇编语言的上机过程 实验报告

微机原理汇编语言的上机过程 实验报告

微机原理技术与接口实验报告学院:专业:班级:姓名:学号:汇编语言程序的上机过程实验目的通过简单地操作了解汇编语言程序的基本内容,体会汇编语言的运行,为以后的实验打下一定的基础。

实验原理及操作步骤一、上机环境要运行调试汇编语言程序,至少需要以下程序文件:▪编辑程序:或其他文本编辑工具软件,用于编辑源程序。

▪汇编程序:MASM.EXE,用于汇编源程序,得到目标程序。

▪连接程序:LINK.EXE,用于连接目标程序,得到可执行程序。

▪调试程序:DEBUG.EXE,用于调试可执行程序。

二、上机过程汇编语言程序上机操作包括:编辑、汇编、连接和调试几个阶段。

1.编辑源程序用文本编辑软件创建、编辑汇编源程序。

常用编辑工具有:、记事本、Word等。

无论采用何种编辑工具,生成的文件必须是纯文本文件,所有字符为半角,且文件扩展名为.asm(文件名不分大小写,由1~8个字符组成)。

2.汇编用汇编工具对上述源程序文件(.asm)进行汇编,产生目标文件(.obj)等文件。

汇编程序的主要功能是:检查源程序的语法,给出错误信息;产生目标程序文件;展开宏指令。

汇编过程如下:在DOS状态下,输入命令:MASM MYFILE.ASM(回车),即启动了汇编程序。

此命令执行后,会出现下面的3行信息,依次按回车键(即选择默认值)即可建立3个输出文件,其扩展名分别为:.OBJ(目标文件),.LST(列表文件)和.CRF(交叉引用文件)。

Object Filename [MYFILE.OBJ]:Source Listing [Nul.LST]:Cross Reference [Nul.CRF]:依次按回车键,进行选择后,汇编程序就对汇编源程序进行汇编。

如果汇编过程中发现有语法错误,则屏幕上会显示出错语言的位置和出错的类型。

此时,需要进行修改,然后再进行汇编。

如此进行,直至汇编无错误,得到目标文件为止。

3.连接汇编产生的目标文件(.obj)并不是可执行的程序,还要用连接程序把它转换为可执行的EXE文件。

汇编上机实验报告

汇编上机实验报告

汇编上机实验报告实验名称:汇编上机实验报告1. 实验目的通过完成汇编上机实验,掌握汇编语言的基本概念和语法规则,理解计算机底层运行的原理,加深对计算机体系结构的理解。

2. 实验环境硬件环境:个人电脑一台,操作系统为Windows 10软件环境:MASM汇编语言开发工具(Microsoft Macro Assembler)、DOSBox模拟器3. 实验内容及步骤3.1 实验一:汇编程序基本框架搭建步骤:(1) 在MASM环境下创建一个新的汇编源文件,命名为"lab1.asm"。

(2) 在源文件中编写汇编程序的基本框架,包括段定义、数据定义和代码段等。

(3) 使用MASM汇编器将源文件编译为目标文件。

(4) 使用链接器将目标文件连接为可执行程序。

(5) 在DOSBox模拟器中执行可执行程序,观察程序输出结果。

3.2 实验二:实现简单的数值运算步骤:(1) 按照实验一的步骤,在MASM环境下创建一个新的汇编源文件,命名为"lab2.asm"。

(2) 在源文件中编写汇编程序,实现两个数的相加、相减、相乘和相除等简单的数值运算。

(3) 使用MASM汇编器将源文件编译为目标文件。

(4) 使用链接器将目标文件连接为可执行程序。

(5) 在DOSBox模拟器中执行可执行程序,输入两个数值,观察程序计算结果。

3.3 实验三:字符串处理步骤:(1) 按照实验一的步骤,在MASM环境下创建一个新的汇编源文件,命名为"lab3.asm"。

(2) 在源文件中编写汇编程序,实现字符串的输入、输出和处理。

(3) 使用MASM汇编器将源文件编译为目标文件。

(4) 使用链接器将目标文件连接为可执行程序。

(5) 在DOSBox模拟器中执行可执行程序,输入一个字符串,观察程序对字符串的处理结果。

4. 实验结果与分析实验一:汇编程序基本框架搭建在DOSBox模拟器中成功执行了汇编程序,没有出现任何错误提示,并得到了预期的输出结果。

北京理工汇编语言实验四实验报告

北京理工汇编语言实验四实验报告

汇编语言实验四实验报告——分支和循环程序设计实验(设计性实验)班级:05211102姓名:庞珂学号:1120111306日期:2013.9.10早8:30:00~11:30分支和循环程序设计实验(设计性实验)一、实验要求和目的1.熟悉汇编语言程序设计结构;2.熟悉汇编语言分支程序基本指令的使用方法;3.掌握利用汇编语言实现单分支、双分支、多分支的程序设计方法;4.了解汇编语言循环程序设计的基本流程;5.熟悉汇编语言循环基本指令的使用方法;6.掌握利用汇编语言的循环指令完成循环程序设计方法。

二、软硬件环境1、硬件环境:计算机系统windows;2、软件环境:装有MASM、DEBUG、LINK、等应用程序。

三、实验涉及的主要知识在实际应用中,经常根据一些条件来选择一条分支执行。

汇编语言的条件判断主要是通过状态寄存器中的状态位、无符号数相减或有符号相减而导致的结果来进行。

1.无条件转移指令JMP无条件转移指令JMP 是使程序无条件转移至目标处,又分为段内转移、段间转移。

2.条件转移指令JXX条件转移指令可分为三大类:标志位指令转移条件意义CF JC CF=1 有进位/借位JNC CF=0 无进位/借位ZF JE/JZ ZF=1 相等/等于0JNE/JNZ ZF=0 不相等/不等于0SF JS SF=1 是负数JNS SF=0 是正数OF JO OF=1 有溢出JNO OF=0 无溢出PF JP/JPE PF=1 有偶数个1JNP/JP0 PF=0 有奇数个12).无符号数条件转移指令。

假设在条件转移指令前使用比较指令,比较两个无符号数A,B,指令进行的的操作是A-B,其转移指令如下:指令转移条件意义JA/JNBE CF=0 AND ZF=0 A>BJAE/JNB CF=0 OR ZF=1 A>=BJB/JNAE CF=1 AND ZF=0 A<BJBE/JNA CF=1 OR ZF=1 A<=B3).带符号数条件转移指令。

汇编语言上机实验报告

汇编语言上机实验报告

汇编语言上机实验报告汇编语言上机实验报告引言:汇编语言是一种底层的计算机语言,通过使用汇编语言,我们可以更加深入地了解计算机的运行原理和底层机制。

本次实验旨在通过上机实践,掌握汇编语言的基本语法和编程技巧,同时加深对计算机底层的理解。

实验目的:1. 学习汇编语言的基本语法和指令集;2. 掌握汇编语言的程序设计和调试方法;3. 加深对计算机底层原理的理解。

实验环境:本次实验使用的是Windows操作系统,并安装了MASM汇编语言开发工具。

实验过程:1. 实验一:Hello World程序我们首先编写一个简单的Hello World程序,用于验证汇编语言的环境是否正常。

通过使用MASM工具,我们可以将源代码汇编成可执行文件,并在命令行中运行。

该程序的功能是在屏幕上输出"Hello World"。

```assembly.model small.stack 100h.datamsg db 'Hello World$'.codemain procmov ah, 09hlea dx, msgint 21hmov ah, 4chint 21hmain endpend main```通过编译、链接和运行,我们可以在屏幕上看到"Hello World"的输出。

2. 实验二:计算两个数的和在这个实验中,我们将学习如何编写一个简单的加法程序。

我们定义两个变量a和b,并将其值相加,然后将结果输出到屏幕上。

```assembly.model small.stack 100h.dataa db 10b db 20sum db ?.codemain procmov al, aadd al, bmov sum, almov ah, 09hmov dl, sumadd dl, 30hint 21hmov ah, 4chint 21hmain endpend main```在屏幕上,我们可以看到输出结果为"30",即10加20的和。

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

汇编语言第四次上机实验报告时间: 2013/5/10 7:00-9:30 地点:南一楼803实验人员:计科10班王涛学号: U201114445一、题目1、用三种方式获取中断类型码10H对应的中断处理程序的入口地址。

(1)直接运行调试工具(TD.EXE),观察中断矢量表中的信息,指出中断类型码10H 对应的中断处理程序的入口地址。

(使用TD观看即可)。

使用TD观看时,在调试工具下调入以前编好的运行程序,跟踪执行INT 21H(即进入中断处理程序,方法是:执行到INT 21H 时,按ALT+F7),观察CS及IP是否改变成了前面记录的值。

(2)编写程序,用DOS系统功能调用方式获取,观察相应的出口参数与(1)看到的结果是否相同(使用TD观看即可)。

(3)编写程序,直接读取相应内存单元,观察读到的数据与(1)看到的结果是否相同.2、编制时钟显示程序。

要求每隔1s在屏幕右下角显示“年-月-日时:分:秒”,并将程序驻留在内存。

3、安装MASM32软件包,以其中的一个例子(如example\3dframes)为例,试用软件包中的集成汇编、连接和调试(TD32.EXE)功能。

软件包从汇编教学网站上下载,操作参见《80X86汇编语言程序设计上机指南》第七章。

二、实验要求1. 在调试工具下调入之前编好的运行程序,跟踪执行INT 21H(即进入中断处理程序,方法是:执行到INT 21H时,按ALT+F7),观察CS及IP是否改变成了前面记录的值。

操作提示:由于INT 21H内部的代码较长,为便于从中断处理程序返回到主程序,可在主程序INT 21H后面的指令上先设置好断点,当不再想跟踪中断处理程序时按F9即可。

实验报告的3、4、5 三个部分不用写。

2. 提示:CMOS内部07,08,09单元中分别存放着日、月、年的信息,“年”只显示低2位即可。

汇编教学网站(http://202.114.1.86)上有CMOS参考资料。

程序可参见教材6.2节的例1和例2。

实验报告要完整。

3.在TD32中注意观察调用WIN API函数的指令序列特点,注意感受WINDOWS消息机制,掌握WINDOWS窗口程序的基本调试方法。

实验报告的3、4、5 三个部分不用写。

三、寄存器分配和变量定义说明题目一:(1)略(2)系统功能调用35H,入口参数为AL=10H,取中断信息。

(3)直接把主存中的DS:[40H]→IP,DS:[42H]→CS赋值给寄存器BX和CX题目二:略题目三:略四、流程图题目一:略题目二:题目三:略五、源程序题目一:(1)略(2):.386CODE SEGMENT USE16ASSUME CS:CODESTART: XOR AX,AXMOV DS,AXMOV AX,3510HINT 21HMOV AH,4CHINT 21HCODE ENDS子程序NEW08H 流程框END START(3):.386CODE SEGMENT USE16ASSUME CS:CODESTART:XOR AX,AXMOV DS,AXXOR BX,BXXOR CX,CXMOV BX,DS:[40H]MOV CX,DS:[42H]MOV AH,4CHINT 21HCODE ENDSEND START题目二:.386STACK SEGMENT USE16 STACK ;主程序的堆栈段DB 200 DUP (?)STACK ENDSCODE SEGMENT USE16ASSUME CS:CODE,DS:CODE,SS:STACKCOUNT DB 18 ;“滴答”计数YEAR DB ?,?,'-' ;年的ASCII码MONTH DB ?,?,'-' ;月的ASCII码DAY DB ?,?,' ' ;日的ASCII码HOUR DB ?,?,':' ;时的ASCII码MIN DB ?,?,':' ;分的ASCII码SEC DB ?,? ;秒的ASCII码BUF_LEN = $-YEAR ;计算显示信息长度CURSOR DW ? ;原光标位置OLD_INT DW ?,? ;原INT 08H的中断矢量;新的INT 08H的代码NEW08H PROC FARPUSHFCALL DWORD PTR CS: OLD_INT;完成原功能DEC CS:COUNT ;(倒)计数JZ DISP ;计满18次,转时钟显示IRET ;未计满,中断返回DISP: MOV CS:COUNT,18 ;重置计数返回STI ;开中断PUSHA ;保护现场PUSH DSPUSH ESMOV AX,CS ;将DS、ES指向CSMOV DS,AXMOV ES,AXCALL GET_TIME ;获取当前日期和时间,并转换成ASCII码MOV BH,0 ;获取0号显示页面当前的光标位置MOV AH,3INT 10HMOV CURSOR,DX ;保存原光标位置MOV BP,OFFSET YEAR ;ES:[BP]指向显示信息的起始地址MOV BH,0 ;显示到0号页面MOV DH,25 ;显示在26行MOV DL,80-BUF_LEN ;显示在最后几列(光标位置设到右上角)MOV BL,0AH ;显示字符的属性(亮绿色)MOV CX,BUF_LEN ;显示的字符串长度MOV AL,0 ;BL包含显示属性,写后光标不动MOV AH,13H ;调用显示字符串的功能INT 10H ;在右下角显示出当前时间MOV BH,0 ;对0号页面操作MOV DX,CURSOR ;恢复原来的光标位置MOV AH,2 ;设置光标位置的功能号INT 10H ;还原光标位置(保证主程序的光标位置不受影响)POP ESPOP DSPOPA ;恢复现场IRET ;中断返回NEW08H ENDP;取日期和时间子程序,从RT/COMS RAM中取得年月日时分秒;并转化成ASCII码存放在对应变量中GET_TIME PROCMOV AL,9 ;9是“年”信息的偏移地址OUT 70H,AL ;设定将要访问的单元是偏移值为9的“年信息”JMP $+2 ;延时,保证端口操作的可靠性IN AL,71H ;读取“年”信息MOV AH,AL ;将2位压缩的BCD码转化成未压缩的BCD码AND AL,0FHSHR AH,4ADD AX,3030H ;转换成对应的ASCII码XCHG AH,AL ;高位放在前面显示MOV WORD PTR YEAR,AX;保存到YEAR变量指示的前2个字节中MOV AL,8 ;8是“月”信息的偏移地址OUT 70H,ALJMP $+2IN AL,71H ;读取“月”信息MOV AH,AL ;转换成对应的ASCII码AND AL,0FHSHR AH,4ADD AX,3030HXCHG AH,ALMOV WORD PTR MONTH,AX;保存到MONTH变量指示的前2个字节中MOV AL,7 ;7是“日”信息的偏移地址OUT 70H,ALJMP $+2IN AL,71H ;读取“日”信息MOV AH,AL ;转换成对应的ASCII码AND AL,0FHSHR AH,4ADD AX,3030HXCHG AH,ALMOV WORD PTR DAY,AX ;保存到DAY变量指示的前2个字节中MOV AL,4 ;4是“时”信息的偏移地址OUT 70H,ALJMP $+2IN AL,71H ;读取“时”信息MOV AH,AL ;转换成对应的ASCII码AND AL,0FHSHR AH,4ADD AX,3030HXCHG AH,ALMOV WORD PTR HOUR,AX;保存到HOUR变量指示的前2个字节中MOV AL,2 ;2是“分”信息的偏移地址OUT 70H,ALJMP $+2IN AL,71H ;读取“分”信息MOV AH,AL ;转换成对应的ASCII码AND AL,0FHSHR AH,4ADD AX,3030HXCHG AH,ALMOV WORD PTR MIN ,AX;保存到MIN变量指示的前2个字节中MOV AL,0 ;0是“秒”信息的偏移地址OUT 70H,ALJMP $+2IN AL,71H ;读取“秒”信息MOV AH,AL ;转换成对应的ASCII码AND AL,0FHSHR AH,4ADD AX,3030HXCHG AH,ALMOV WORD PTR SEC ,AX;保存到SEC变量指示的前2个字节中RETGET_TIME ENDP;初始化(中断处理程序的安装)及主程序BEGIN: PUSH CSPOP DSMOV AX,3508H ;获取原08H的中断矢量INT 21H ;系统功能调用35HMOV OLD_INT ,BX ;保存中断矢量MOV OLD_INT+2,ESMOV DX ,OFFSET NEW08HMOV AX,2508H ;系统新的08H中断矢量INT 21H ;系统功能调用35H;... ;主程序的其他工作STI ;开中断MOV DX,OFFSET BEGIN+15;计算中断处理程序占用的字节数,+15是为了在计算节数时能向上取整MOV CL,4SHR DX,CL ;把字节数换算成节数(每节代表16个字节)ADD DX,100H ;驻留的长度还需包括程序前缀的内容MOV AL,0 ;退出码为0MOV AH,31H ;退出时,将(DX)节的主存单元驻留(不释放)INT 21HCODE ENDSEND BEGIN题目三:略六、实验步骤题目一:(1)直接在TD中观察中断矢量表,得出IP和CS的值。

(2)①录入源代码存盘为2.asm,汇编源程序2.asm ,并链接生成EXE文件,若报错则找出错误修改后重新存盘进行汇编,直至完全通过。

②在TD中单步执行2.exe,运行至21H后观察记录BX和ES中的值。

(3)①录入源代码存盘为3.asm,汇编源程序3.asm ,并链接生成EXE文件,若报错则找出错误修改后重新存盘进行汇编,直至完全通过。

②在TD中单步执行3.exe,观察并记录BX和CX中的值。

题目二:①录入源代码存盘为showt.asm,汇编源程序showt.asm ,并链接生成EXE文件,若报错则找出错误修改后重新存盘进行汇编,直至完全通过。

②运行showt.exe,观察结果是否与预想一致。

③在TD中观察程序运行情况。

题目三:①下载并安装MASM32软件包,找到其中的一个例子example\3dframes②汇编源文件 ml /c /coff 3dframes.asm③将资源文件rsrc.rc转换成目标文件 rc rsrc.rccvtres /machine:ix86 rsrc.res④连接link 3dframes.obj rsrc.obj⑤执行3dframes⑥用TD32观察程序运行情况七、实验记录八、心得。

相关文档
最新文档