微机系统与汇编语言实验报告

合集下载

微机原理与汇编语言实验报告

微机原理与汇编语言实验报告

微机原理与汇编语言实验报告学号:********班级:*****姓名:*****指导教师:*****一.实验目的1.通过上机实验进一步熟悉并掌握汇编语言的指令系统和寻址方式;2.熟悉汇编语言程序上机的流程,以及与实验有关的系统软件(如编辑程序、汇编程序、连接程序和调试程序等)3.学习汇编程序设计的基本方法和技能,熟练掌握用汇编语言设计、编写、调试和运行程序的方法4.能够独自编写,调试,并成功运行一个完整的程序。

二.实验内容与步骤1.掌握汇编语言程序上机过程首先,新建文本文档后将扩展名改为.ASM,这是汇编语言源程序的文件格式,以记事本形式打开后在其中键入所编写的程序。

第一次题目是在屏幕上显示一串字符串,在老师的指导下,编写的程序如下:data segmentnote db 'hello','$'data endscode segmentmain proc farassume cs:code,ds:data,es:datastart:push dssub ax,axpush axmov ax,datamov ds,axmov es,axmov ah,09hlea dx,noteint 21hmain endpcode endsend start之后,要进行编译和运行。

源程序经过翻译程序成为机器能够识别的目标程序,目标程序再经过连接程序连接后转换成在机器上可执行的程序。

基本流程图如下:在编译的过程中,程序查出的主要是语法上的错误,如果有错,则不能通过汇编,要纠错后重新汇编直到无错为止。

最后,生成的.EXE文件即为可执行文件,从磁盘调入内存运行,得到运行结果。

上述程序的运行结果为在屏幕上显示出“hello”。

2.编程完成任意两个两位数的加法运算编程任务的基本要求为:从键盘输入任意两个两位数相加,将结果显示在屏幕上。

刚开始拿到题目后,头脑里是比较混乱的。

经过与同学的探讨之后,我们大概确定出要完成整个功能,需经过以下过程:将输入的ASCII码与十进制数值进行转换,并保存在寄存器中;通过调用程序将两个数相加,并将结果保存;将结果显示在屏幕上。

《汇编语言》实验报告

《汇编语言》实验报告

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

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

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

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

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

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

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

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

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

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

e.关闭显示模式。

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

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

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

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

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

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

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

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

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

微机原理实验报告_2

微机原理实验报告_2

实验一汇编语言的编译、链接和调试一、实验目的1、学会使用masm对汇编源程序进行编译、链接、调试、运行。

2、掌握汇编语言的程序格式。

3、巩固所学的汇编语言指令。

二、实验环境1、硬件:PC 微机2、软件:宏汇编MASM 软件三、实验原理1、汇编语言程序的上机与处理过程2、汇编语言的程序格式(1)汇编程序一般由若干段组成,每个段都有一个名字,以SEGMENT作为段的开始,以ENDS作为段的结束,这两者前要冠以相同的名字作为段名。

(2)代码段和堆栈段必不可少,数据段和附加段可根据需要设置。

堆栈段的SEGMENT之后有关键字STACK。

代码段中有伪指令ASSUME告诉汇编程序,在各种指令执行时所要访问的各段寄存器将分别对应哪一段。

(3)源程序的每一段是由若干行汇编语句组成,每一行只有一条语句,且不能超过128个字符,但一条语句允许有后续行,最后均以回车结束。

(4)整个源程序必须以END语句结束,它通知汇编程序停止汇编。

四、实验内容进入DOS环境中相应的目录下。

如汇编软件的文件来为:D:\MASM,则对应的操作为(1)选择windows的“开始”→“程序”→“附件”→“命令提示符”(2)在DOS命令提示符下输入如下命令(其中带下划线部分为输入内容)。

C:\Documents and Settings\new>D:D:\>CD MASMD:\MASM>EDIT TEXT.ASM进入编辑程序,在其环境下输入编好的源程序,然后在盘上生成一个扩展名为.asm的文件。

程序示例DATA SEGMENTDA1 DB 10H,20H,30H,40HDA2 DB 0F0H,0B0H,0A0H,90HDA3 DB 00H,00H,00H,00HDATA ENDSSTACK1 SEGMENT PARA STACKDB 10 DUP(?)STACK1 ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK1START: MOV AX,DATAMOV DS,AXMOV AL,[DA1]ADD AL,[DA2]MOV [DA3],ALMOV AL,[DA1+1]ADC AL,[DA2+1]MOV [DA3+1],ALMOV AL,[DA1+2]ADC AL,[DA2+2]MOV [DA3+2],ALMOV AL,[DA1+3]ADC AL,[DA2+3]MOV [DA3+3],ALCODE ENDSEND START3. 用宏汇编程序MASM,将扩展名为.ASM的源程序汇编成目标程序,即生成盘上扩展名为.OBJ的文件。

微机原理与汇编语言综合性实验报告

微机原理与汇编语言综合性实验报告

微机原理与汇编语言综合性实验报告实验项目名称:A/D转换器 ADC0809数字温度计设计专业班级:信息092 姓名:郭梦瑶学号: 200912030204 实验起止日期: 2011 年 12月13日起 2011 年12月20日止实验目的:掌握A/D转换原理,掌握0809A/D转换芯片的硬件电路和软件编程。

实验要求:包括开发环境要求,技术文档要求两部分。

开发环境要求:软件环境:Windows98/WindowsXP/Windows2000,QTH-8086B环境硬件环境:计算机(Pen4CPU, 256MRAM,60G以上硬盘,输入输出设备)技术文档要求:按照实验报告编写要求进行。

要求流程图绘制规范,软、硬件功能描述清晰,实验总结深刻。

实验内容:一、实验原理1、ADC0809电路连接简图:本实验采用 ADC0809 做 A/D 转换实验。

ADC0809 是一种8路模拟输入、8位数字输出的逐次逼近法A/D器件,转换时间约100us,转换精度为±1/512,适用于多路数据采集系统。

ADC0809片内有三态输出的数据锁存器,故可以与8088微机总线直接接口。

图中ADC0809的CLK信号接CLK=2.385MHZ,基准电压Vref(+)接Vcc。

一般在实际应用系统中应该接精确+5V,以提高转换精度,ADC0809片选信号0809CS和/IOW、/IOR经逻辑组合后,去控制ADC0809的ALE、START、ENABLE信号。

ADC0809的转换结束信号EOC未接,如果以中断方式实现数据采集,需将EOC信号线接至中断控制器8259A的中断源输入通道。

本实验以延时方式等待A/D转换结束,ADC0809的通道号选择线ADD-A、ADD-B、ADD-C 接系统数据线的低3位,因此ADC0809的8个通道值地址分别为00H、01H、02H、03H、04H、05H 、106H、07H。

2、引脚结构IN0-IN7:8条模拟量输入通道ADC0809对输入模拟量要求:信号单极性,电压范围是0-5V,若信号太小,必须进行放大;输入的模拟量在转换过程中应该保持不变,如若模拟量变化太快,则需在输入前增加采样保持电路。

《微机系统与汇编语言实验指导书》-V2.1

《微机系统与汇编语言实验指导书》-V2.1

第一章汇编语言实验概述1.1 实验开设目的汇编语言实验是“微型计算机系统”课程内的重要实验环节。

本实验能帮助学生运用课程中所学到的汇编语言指令、语法和程序设计方法,自己编制相应要求的汇编语言程序或段落,通过上机运行调试等操作,培养学生解决问题和分析问题的实践能力。

使学生深入理解和掌握8086微处理器的汇编语言程序设计方法及指令系统中的常用指令,并对微型计算机系统的部分接口和底层设备进行操控实践。

1.2 总体要求独立完成课程必须完成的实验,选做部分有条件完成的实验。

实验中注意养成独立思考、分析问题和解决问题的能力。

按照各实验的具体要求,认真构思实验方案及解题步骤,勤于实验预习和充分准备,及时书写并按时上交相应实验报告。

实验报告内容与要求:一、实验编号(摘自本实验指导书具体实验项目)二、实验目的(摘自本实验指导书具体实验项目)三、实验要求(摘自本实验指导书具体实验项目)四、实验方案及解题程序的流程图(自己绘制相应的程序流程图)五、实验程序清单(填写自编源程序清单,并加注段落说明和重要指令说明)六、实验运行调试过程:1.写出源程序到可执行程序生成过程及相应操作命令2.写出显示原始数据操作的命令及摘抄机内原始数据3.写出运行程序或程序段落的命令及记录相关寄存器和内存单元值并分析执行结果4.写出程序或原始数据修改意图和修改命令5.重新执行修改后的程序并查看结果,并做出结果分析与实验成败判别七、实验心得与体会。

1.3 实验考核方式与要求1. 实验后按时上交实验报告,内容必须符合要求。

2. 评分方法:设计的程序和方法是否正确以及是否达到试验的基本要求。

3. 实验成绩占课程成绩的比例:15%-20%。

1.4 实验设备与环境每人一台P3以上微机系统,能运行WINDOWS-9X操作系统、及实模式DOS系统。

系统内预先装入MASM5及以上的汇编语言编译、连接及调试应用软件、DEBUG、EDIT 等命令文件。

实验附件:RS232通讯连接线缆。

汇编语言设计(微机实验报告)

汇编语言设计(微机实验报告)

一、实验名称:汇编语言设计二、实验目的:1.熟悉 MASM.EXE 和 LINK.EXE 的使用方法。

2.了解 debug 调试工具,观察程序的执行过程和对寄存器和内存单元的影响。

三、实验内容1、首先在硬盘上建立一个文件夹E:\MASM。

2、下载 MASM.EXE 和 LINK.EXE 到E:\MASM 文件夹里。

3、经过以上两步,已经做好了准备工作,接下来书写程序。

计算y = a × b + c - 18,a、b、c均为带符号的8 位二进制数据,为了实验观看实验结果,假设 a = 34H、b = 56H、c = E7H。

程序源代码如下(分号后面内容为注释内容,可以不输入):CC EQU 18 ;伪指令定义CCSTACK SEGMENT ;堆栈段起始DW 256 DUP(?) ;在堆栈段中预留了256 个字的内容TOP LABEL WORD ;TOP 为栈顶偏移地址STACK ENDS ;堆栈段结束DATA SEGMENT ;数据段起始DAT1 DB 34H ;DAT1为题中操作属数a,为字节,存于数据段中DAT2 DB 56H ;DAT2 为题中操作书b,为字节,存于数据段中DAT3 DB 0E7H ;DAT3 为题中操作书c,为字节,存于数据段中DATY DW ? ;DATY为题中计算结果预留空间,为字,存于数据段中DATA ENDS ;数据段结束CODE SEGMENT ;代码段起始ASSUME CS:CODE,DS:DATA,SS:STACK ;分配段地址对应关系START: MOV AX,DATA ;START为标号,MOV语句将DATA数据段地址送AX MOV DS,AX ;将AX内容送入DS,赋予DS数据段DATA段地址MOV AX,STACK ;将STACK堆栈段地址送入AXMOV SS,AX ;将AX内容送入SS,赋予SS堆栈段STACK的段地址MOV SP,OFFSET TOP ;SP设初值MOV AL,DAT1 ;取a,直接寻址方式MOV BL,DAT2 ;取b,直接寻址方式IMUL BL ;AX <- AL * BL,即将a * b 的值存入AXMOV BX,AX ;将AX 内容保存至BXMOV AL,DAT3 ;取c,直接寻址方式CBW ;由于c 是8位有符号数,所以做符号扩展至AHADD AX,BX ;AX <- AX + BX,完成将a*b+c结果存入AX操作SUB AX,CC ;AX <- AX - 18MOV DATY,AX ;将a*b+c-18的值,存放至数据段中偏移地址DATY的内存中MOV AH,4CH ;将4CH存入AH,为了下句调用DOS 21号中断INT 21H ;调用DOS 21中断,由AH=4CH决定返回DOS操作系统CODE ENDS ;代码段结束END START ;程序结束将以上代码保存为扩展名为.ASM 的文件的方法如下:点击“开始”菜单“运行”notepad,打开记事本程序,在记事本中输入如上代码。

计算机汇编语言实验报告

计算机汇编语言实验报告

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

微机原理软件实验报告

微机原理软件实验报告

实验名称:汇编语言程序设计实验日期:2023年3月10日实验地点:计算机实验室实验者:张三一、实验目的1. 熟悉汇编语言的基本语法和指令系统。

2. 掌握汇编语言程序设计的基本方法。

3. 通过实验,加深对微机原理的理解。

二、实验内容本次实验主要涉及以下内容:1. 数据传送指令的应用2. 算术运算指令的应用3. 控制转移指令的应用4. 子程序设计三、实验步骤1. 编写一个简单的程序,实现以下功能:(1)将数据0x1234存入寄存器AX;(2)将数据0x5678存入寄存器BX;(3)计算AX和BX的乘积,并将结果存入寄存器DX;(4)将乘积的高16位和低16位分别存入寄存器CX和AX。

2. 编写一个程序,实现以下功能:(1)将数据0x1A2B3C4D存入内存单元[0x1000];(2)从内存单元[0x1000]开始,读取连续4个字节的数据;3. 编写一个程序,实现以下功能:(1)定义一个子程序,实现两个整数的加法运算;(2)在主程序中调用该子程序,实现两个整数的加法运算。

四、实验结果与分析1. 数据传送指令的应用(1)将数据0x1234存入寄存器AX;MOV AX, 0x1234(2)将数据0x5678存入寄存器BX;MOV BX, 0x5678(3)计算AX和BX的乘积,并将结果存入寄存器DX;MUL BX(4)将乘积的高16位和低16位分别存入寄存器CX和AX; MOV CX, DXMOV AX, DX2. 算术运算指令的应用(1)将数据0x1A2B3C4D存入内存单元[0x1000];MOV [0x1000], 0x1A2B3C4D(2)从内存单元[0x1000]开始,读取连续4个字节的数据; MOV AX, [0x1000]MOV BX, [0x1000+2]MOV CX, [0x1000+4]MOV DX, [0x1000+6]MOV AH, 0x0EINT 0x103. 控制转移指令的应用(1)定义一个子程序,实现两个整数的加法运算;ADD procedure:ADD AX, BXRET(2)在主程序中调用该子程序,实现两个整数的加法运算;MOV AX, 0x1MOV BX, 0x2CALL ADDMOV CX, AX五、实验心得通过本次实验,我深刻理解了汇编语言的基本语法和指令系统,掌握了汇编语言程序设计的基本方法。

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

《微机系统与汇编语言实验报告》8086汇编语言实验项目一(数值筛选)1.实验目的:进一步熟悉8086指令系统,运用并掌握汇编语言程序设计基本方法,编制能满足题目要求的数据处理类小规模程序。

并通过使用EDIT、MASM、LINK等软件工具,熟悉汇编语言程序书写、输入、编译、连接生成可执行程序的全过程。

进一步提高汇编语言程序调试和结果查找的能力。

2.基本要求:应用8086汇编语言程序设计方法,编制一个程序,使它能对10个字节型有符号常数作如下处理:1.在这10个常数中筛选出所有奇数,并存放到ODD开始的内存单元中;2.在这10个常数中筛选出所有偶数,并存放到EVE开始的内存单元中;3.对所筛选出的奇数、偶数分别求和,求和结果分别存放到每组数的结尾。

掌握用EDIT输入和保存8086汇编语言源程序、用MASM编译、用LINK连接生成可执行程序(EXE文件),并采用DEBUG调试运行自编程序,观察并记录程序运行的结果。

3.实验原理与方法:1.实验原理本实验项目需要运用8086汇编语言程序设计方法,而不是单纯地用DEBUG输入汇编语言指令来解决问题。

为了满足本实验的基本要求,程序中需要用到8086伪指令来定义数据区,用定义地址标识符伪指令来定义三个内存变量ORITAB、ODD、EVE,其长度都为10个字节。

这就建立了原始数据存储区、奇数结果存储区和偶数结果存储区。

在操作三个存储区前,通过“OFFSET<变量名>”运算,就能获取这三个存储区的首地址。

设置两个地址指针SI、DI,一个指向EVE存储区单元地址,另一个指向ODD存储区单元地址。

当找到符合偶数条件的数据时,就用SI在传送指令中对目的操作数形成“寄存器间接寻址方式”,把偶数传送到SI所指向的单元;当找到符合奇数条件的数据时,就用DI 在传送指令中对目的操作数形成“寄存器间接寻址方式”,把奇数传送到DI所指向的单元。

设置两个求和寄存器DH、DL,当找到奇数时,把它加到DH求和;当找到偶数时,把它加到DL求和。

为了在10个原始数据中筛选出2种数据(奇数、偶数),需要对10个原始数据进行扫描,即,设置一个循环LOOP来对10个原始数据逐一分析。

用TEST指令来测试每个原始数据的最低位,可分析出该数据的奇偶性。

4.实验操作题目:1.根据上述程序设计思路,本实验(数值筛选)的源程序清单详见如下:;《DA TA-CHOOSE》DA TA SEGMENTORITAB DB 33,22,11,-12,42,81,-17,54,-70,3,’$’;定义数据段ODD DB 10 DUP(?) ;操作数存入重复10次,每个操作数占用一个字节DB ‘$’;引用偏移量计数器的值EVE DB 10 DUP(?)DB ‘$’DA TA ENDSSTACK SEGMENT PARA STACK'STACK' ;指定堆栈段STACK ENDSCODE SEGMENTSTART PROC FAR ;过程定义语句,“FAR”程序段间调用,”NEAR”段内调用ASSUME CS:CODE,DS:DA TA,ES:DA TA,SS:STACK ;段属性说明,对应关系PUSH DSMOV AX,0PUSH AXMOV AX,DA TAMOV DS,AX ;DS指向数据段XOR DX,DXMOV DI,OFFSET ODD ;DI作为ODD缓冲区地址指针MOV SI,OFFSET EVE ;SI作为EVE缓冲区地址指针MOV BX,OFFSET ORITAB ;BX作为ORITAB缓冲区地址指针MOV CX,10LOP: MOV AL,[BX]TEST AL,01 ;将两个操作数进行逻辑与操作,并修改标志位JZ EVEP ;ZF=1则跳转ODDP: MOV [DI],AL ;循环入口INC DI ;地址指针推向下个缓冲区地址ADD DH,AL ;将AL和DH操作数相加,结果送到DH操作数中JMP NEXT ;当前字符处理完毕后继续运行程序段EVEP: MOV [SI],AL ;循环入口INC SIADD DL,AL ;将AL和DL操作数相加,结果送到DL操作数中NEXT: INC BXLOOP LOP ;循环移位到LOP入口MOV [DI],DHMOV [SI],DLRETSTART ENDPCODE ENDS ;程序段结束END START ;源程序段结束2.实验操作步骤(1)从WINDOWS系统进入DOS环境:计算机启动后,单击“开始”按钮,选择“运行…”菜单项,在运行文本输入框中键入CMD[回车]。

系统打开V86命令窗口,并到达“C:\Documents and settings\…>”后,首先输入“CD \[回车]”,然后再输入一条“PATH C:\WINNT\SYSTEM32;C:\MASM5[回车]”路径搜索命令,为后续将要输入的各种DOS命令及编译连接命令作好准备。

本实验中,具体为,进入指定盘,指定目录,找到原始文件,操作命令行显示如下。

(2)用EDIT输入本实验的源程序并保存:在DOS系统提示符“C:\>”下键入:EDIT DAT-CHOS.ASM[回车]。

然后,仔细看清程序清单,逐条输入该程序的指令。

输入完毕后,按[ALT]键,进入“FILE”菜单,选择“SAVE” [回车],再选择“EXIT”[回车]。

EDIT输入程序窗口,显示如下。

(3)编译源程序:在DOS系统提示符下键入:MASM DAT-CHOS.ASM ,,,,;[回车],编译源程序。

编译原程序,检查有无语法错误,显示如下。

(0警告,0语法错误)(4)连接并生成可执行程序:在DOS系统提示符下键入:LINK DAT-CHOS.OBJ ,,,,;[回车],在指定目录生成“DAT-CHOS.EXE”文件。

连接并生成可执行程序完毕,显示如下。

(5)调试运行可执行程序:在DOS系统提示符下键入:DEBUG DAT-CHOS.EXE[回车],这样就带着可执行程序“DAT-CHOS.EXE”进入了DEBUG环境,用合适的DEBUG子命令就能调试运行本实验程序了。

进入debug环境,显示如下。

用“R”子命令查看当前各寄存器的值,观察CS、IP的值。

显示如下。

用“U <CS的值:IP的值>[回车]”子命令可找到程序的第1条指令,及其后续的程序段落。

仔细观察现在的可执行程序指令序列,与源程序清单核对。

显示如下。

尤其要仔细观察程序首部的“MOV DS,AX”指令,及其前一条指令“MOV AX,XXXX”,这“XXXX”值,就是对DS的赋值,即本程序的数据段段基址。

由“XXXX”值可找到原始数据和结果数据存储区,用“D XXXX:0000[回车]”子命令可查看原始数据。

记录本程序执行前数据区中各单元的数据情况。

数据区中原始数据显示如下。

然后,可以通过使用“G=0[回车]”子命令或“T=0[回车]”子命令来运行程序。

运行程序,显示如下。

再次利用程序首部的“MOV DS,AX”指令,及其前一条指令“MOV AX,XXXX”,由其中的数据段段基址“XXXX”值可找到原始数据和结果数据存储区,用“D XXXX:0000[回车]”子命令可查看结果数据。

记录本程序执行后数据区中各单元的数据情况。

结果数据,显示如下。

(6)备注:1.使用命令,退出debug环境。

2.使用命令,退出dos环境。

3.在dos属性栏内,更改dos环境的显示色彩,包括文字。

4.使用命令,进入指定目录。

实验体会:1.如果在实验中,程序运行结束之后,结果数据与预期的处理结果不符,则说明原程序仍然存在逻辑错误,则要重新修改源程序,…。

必要时还需重新审核程序的设计思想,重新编程及调试等各步操作,直到程序运行出正确的结果数据为止。

2.通过实际运行,证明该程序无语法错误。

3.通过原始数据和结果数据比对,证明结果数据为实验所预期的处理结果,由此证明,此程序可以得到实验所需的,正确的结果数据。

8086汇编语言实验项目二(求最大最小数)1.实验目的:进一步熟悉8086指令系统,掌握并熟悉汇编语言程序设计方法,编制能满足题目要求的数据处理类程序。

通过使用EDIT、MASM、LINK等软件工具,熟练掌握汇编语言程序书写、输入、编译、连接生成可执行程序的全过程。

进一步提高汇编语言程序调试和结果查找的能力。

2.基本要求:应用8086汇编语言程序设计方法,编制一个程序,使它能在10个字节型有符号常数中找出最大数存放到MAX内存单元中、找出最小数存放到MIN内存单元中,并对这10个常数求和存放到SUM内存单元中、求平均值存放到AVE内存单元中。

掌握用EDIT输入和保存8086汇编语言源程序、用MASM编译、用LINK连接生成可执行程序(EXE文件),并采用DEBUG调试运行自编程序,观察并记录程序运行的结果。

3.实验原理与方法:1.实验原理本实验项目需要运用8086汇编语言程序设计方法,而不是单纯地用DEBUG输入汇编语言指令来解决问题。

为了满足本实验的基本要求,程序中需要用到8086伪指令来定义数据区,用定义地址标识符伪指令DB或DW来定义存放原始数据和结果数据的内存变量:ORITAB、MAX、MIN、SUM、AVE,通过“OFFSET<变量名>”运算,就能获取这些变量的首地址。

设置一个地址指针SI,用它指向ORITAB变量的首字节地址。

其他变量的变量名(MAX、MIN、SUM、AVE)将在传送结果的指令中以“直接寻址方式”出现在目的操作数位置上,指向该存储器单元。

需要选用三个8位寄存器DH、DL、AL来存放最大数、最小数、及求和计算值。

至于AVE 的值,可用SUN/10算出后直接送到AVE变量中,不需要选用寄存器与它对应。

需要设置一个循环LOOP来对10个原始数据进行扫描,逐一比较分析,找出原始数据中最大数和最小数。

在扫描每一个原始数据时,就将它加到AL寄存器中,实现求和处理。

当扫描结束,退出循环后,先将求和值AL送到SUM变量中保存,然后再把SUM/10送入AVE变量。

其他结果也送入对应的变量,完成本实验的数据计算处理。

4.实验操作题目:1.根据上述程序设计思路,本实验的源程序清单详见如下:;《MAX-MIN》DA TA SEGMENTORITAB DB 20H,10H,30H,01H,04H,08H,00H,05H,44H,22HMAX DB ?MIN DB ?SUM DB ?A VE DB ?DA TA ENDSSTACK SEGMENT PARA STACK'STACK'STACK ENDSCODE SEGMENTSTART PROC FARASSUME CS:CODE,DS:DA TA,ES:DA TA,SS:STACKPUSH DSMOV AX,0PUSH AXMOV AX,DA TAMOV DS,AXXOR DX,DXXOR AX,AXMOV SI,OFFSET ORITABMOV CX,10LOP: CMP DH,[SI]JA DHBIGMOV DH,[SI]DHBIG: CMP DL,[SI]JB DHSMLMOV DL,[SI]DLSML: ADD AL,[SI]INC SILOOP LOPMOV MAX,DHMOV MIN,DLMOV SUM,ALMOV BL,10DIV BLMOV A VE,ALRETSTART ENDPCODE ENDSEND START2.实验操作步骤(1)从WINDOWS系统进入DOS环境:计算机启动后,单击“开始”按钮,选择“运行…”菜单项,在运行文本输入框中键入CMD[回车]。

相关文档
最新文档