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

合集下载

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

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

微机原理与汇编语言实验报告学号:********班级:*****姓名:*****指导教师:*****一.实验目的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五、实验心得通过本次实验,我深刻理解了汇编语言的基本语法和指令系统,掌握了汇编语言程序设计的基本方法。

计算机组成原理和汇编语言实验报告

计算机组成原理和汇编语言实验报告

计算机组成原理和汇编语言实验报告专业班级:计算机0801班实验一、汇编:冒泡排序1、实验内容:定义一个字数组序列:1567,25,46,4560,678,1234,32540。

用冒泡排序对该数组由小到大排序,并将排序结果以十进制数字的形式在屏幕上显示出来。

2、实验原理:程序首先定义了要排序的数组,然后对其在原数组内进行冒泡排序。

冒泡排序是基于交换排序的一种算法,它依次两两比较待排序的元素,若为逆序则进行交换。

每趟冒泡都将待排元素序列中的最大量交换到最后位置。

冒泡过程共需进行n(n-1)/2次比较,直到全部元素有序为止。

数组有序以后,进行输出的工作。

依次从小到大,将元素转换为十进制数的ASCII码值来输出,并在输出每个数时,增加输出回车换行来使输出结果清晰。

3、实验代码:;-------------------------PROGRAM BEGINS---------------------------;----------------------------DEFINE DS-------------------------------DATA SEGMENTTIME DW 0 ;THE LOOP TIME OF THE OUTER LOOPCHU DW 10 ;USED TO CONVERT THE NUM TO DECIMAL DTY DW 1567,25,46,4560,678,1234,32540 ,'$' ;DEFINE THE ARRARYRESULT DB ?DATA ENDS;-----------------------------DEFINE CS-----------------------------CODE SEGMENT "CODE"ASSUME CS:CODE ,DS:DATASTART:MOV AX,DATAMOV DS,AXAGAIN:MOV CX, 6 ;THE LOOP NUM OF THE INER LOOP MOV BP,12 ;NUM OF THE BYTESAGAIN1:MOV AX,DTY[BP]CMP DTY[BP-2],AX ;CMP WITH THE FORMER BYTEJBE NEXT ;JMP IF BELOW OR EQUALXCHG AX,DTY[BP-2] ;IF ABOVE,THEN CHANGEXCHG AX,DTY[BP]NEXT:SUB BP,2 ;POINT TO THE FORMER ONEDEC CXCMP CX,TIME ;IS IT DONE?JE NEXT1 ;DONEJMP AGAIN1 ;NOT DONE YETNEXT1:INC TIMECMP TIME,6 ;IS IT DONE?JE NEXT3 ;DONEJMP AGAIN ;NOT DONE YETNEXT3:MOV TIME,0 ;RENEW THE DATAMOV BP,0CHANGE:MOV RESULT[5],13 ;FINISH OF THE NUMMOV RESULT[6],10MOV RESULT[7],'$'MOV AX,WORD PTR DTY[BP] ;THE DW TO OUTPUTMOV CX,5 ;LOOP NUMMOV BX,4 ;TWO BITS * 4 =WORD CHANGE1:MOV DX,0DIV CHU ;DX:AX/CHUMOV RESULT[BX],DL ;THE REMAINDERADD RESULT[BX],30H ;TO DECIMALDEC BX ;POINT TO THE FORMER TWO BITS LOOP CHANGE1MOV CX,4MOV BX,0FIND0:CMP RESULT[BX], '0' ;IS IT ZERO?JNE FINAL ;NOT ZEROADD BX,1 ;ZEROLOOP FIND0FINAL:LEA DX, RESULT[BX] ;OUTPUTMOV AH,09HINT 21HADD BP, 2 ;POINT TO NEXT WORDINC TIMECMP TIME,7 ;IS IT DONE?JNE CHANGE ;NOT NONEMOV AH,4CHINT 21HCODE ENDSEND START;--------------------PROGRAM ENDS--------------------实验二算术逻辑运算实验一、实验目的1.掌握简单运算器的组成以及数据传送通路。

汇编语言实验报告

汇编语言实验报告

汇编语言实验报告
1. 实验简介
本次实验是针对汇编语言的学习和实践,在实验中,我们将学习如何使用汇编语言编写程序、调试程序,并通过一系列实例来练习和巩固所学知识。

2. 实验目的
(这一部分可以根据实际情况来写,列举实验的具体目的和要求)
3. 实验环境及工具
(介绍实验所使用的软件环境和工具,如:编译器、调试器)
4. 实验步骤
(根据实验内容具体描述实验步骤,可以分为多个小节)
4.1 准备工作
在开始实验之前,需要进行一些准备工作,包括安装编译器、创建工作环境等。

4.2 实验一:简单的汇编程序
本实验通过编写一个简单的汇编程序来熟悉汇编语言的基本语法和指令集,包括数据传送、算术运算、逻辑运算等。

4.3 实验二:汇编程序的调试
在实验二中,我们将学习如何使用调试器对汇编程序进行调试,包括设置断点、查看变量值、单步执行等操作。

4.4 实验三:汇编程序的优化
本实验将通过优化代码来提高程序的执行效率,包括减少指令的使用、优化循环结构等。

5. 实验结果与分析
(对实验的结果进行总结和分析,可以包括程序的输出结果、性能分析等)
6. 实验总结
(针对本次实验的收获和心得体会进行总结,可以包括对汇编语言的理解、解决问题的思路等)
7. 实验感想
(对本次实验的感想和建议,如实验过程中遇到的困难、改进的方向等)
8. 参考文献
(列出本报告中所引用的参考文献)
注:该文章只是按照题目提示给出了一个大致的框架和构思,实际根据具体的实验内容和要求来编写每个小节的详细内容。

希望对你有所帮助!。

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

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

成绩:2计算机原理实验室实验报告课程:汇编语言与微机原理**:***专业:计算机科学与技术学号:*********日期:2013年12月太原工业学院计算机工程系实验一:输入输出实验3、思考内容(1)从键盘中输入和从从屏幕上输出的都是字符,和计算用的数据时间相差“0”即30H。

所以一个数从屏幕上输出时将+30H,输入时转换成数字-30H。

(2)单个字符,也就是CPU处理外设(键盘)的整个中断过程五.结论通过本次实验,完成了一位十进制数的加法运算,两位十进制数的和输出,一位十进制数的四则运算以及多位数运算的实验要求。

这次实验也让我熟悉了emu8086仿真系统,能够实现控制台的输入输出;也学会了如何去实现一位十进制数的加法运算还有两位十进制数的和输出以及一位十进制数的四则运算,知道了输入输出数据和计算用数据的区别,即)从键盘中输入和从从屏幕上输出的都是字符,和计算用的数据时间相差“0”即30H。

所以一个数从屏幕上输出时将+30H,输入时转换成数字-30H,还有单字符输入输出和串输入输出的不同。

实验二:分支程序实验2.扩展要求每次输出都换行实验三:循环程序实验lea si,datamov cx,time+1result:mov dl,[si]add dl,30hmov ah,2int 21hmov dl,' 'int 21hadd si,2loop resultjmp $time equ 4paixuqian dw 'paixuqian:','3','4','9','7','1','$'paixuhou dw 'paixuhou:','$'data dw 3,4,9,7,1四.实验结果分析(含执行结果验证、输出显示信息、图形、调试过程中所遇的问题及处理方法等)本次实验验证了实验基本要求,实现了直接选择排序和冒泡排序两种方法对五个字从大到小排序功能.1.直接选择排序结果:2.冒泡排序结果:3.思考内容:冒泡排序之所以能实现快速排序,是每一次排序都将最大或最小的放在最后或最前,并且有个来统计交换的次数,一旦交换的次数为0时直接退出循环。

汇编语言实验报告

汇编语言实验报告

汇编语言实验报告引言:汇编语言作为低级语言之一,在计算机科学领域具有重要的地位。

本篇文章将围绕汇编语言的实验进行讨论,重点探索汇编语言在计算机编程中的应用和优势。

通过实际的实验过程,我们能够更加深入地认识汇编语言的特点和使用方法。

本报告将从实验的准备工作、实验的步骤、实验结果以及实验心得等方面进行论述。

实验准备:在开始实验之前,准备工作是非常重要的。

首先,我们需要下载安装合适的汇编语言开发环境,比如MASM或者NASM。

接着,我们需要理解汇编语言的基本知识,包括寄存器、内存和指令等的概念。

此外,我们还需要掌握一些基本的汇编语言指令,比如MOV、ADD、SUB等。

这些准备工作对于我们能够顺利进行实验具有关键性的作用。

实验步骤:在实验过程中,我们经历了一系列的步骤,下面将一一进行介绍。

1. 确定实验目标:在进行实验之前,我们需要明确实验的目标和要达到的结果。

比如,我们可以选择实现一个简单的计算器程序,能够实现基本的加减乘除运算。

这样的目标可以帮助我们更好地理解汇编语言的使用方法和语法规则。

2. 编写代码:在明确了实验目标之后,我们开始编写汇编语言代码。

首先,我们需要定义一些变量和常量,以便在程序中使用。

然后,我们根据实验目标,逐步编写实现相应功能的代码段。

在这个过程中,我们需要注意汇编语言的特点,比如大小写敏感、指令的书写格式等。

3. 调试程序:编写完代码后,我们需要对程序进行调试,以确保其功能的正确性。

在调试过程中,我们会使用一些调试工具,比如调试器,帮助我们找出代码中的错误并进行修复。

通过调试,我们能够提高代码的质量和效率。

4. 运行程序:在完成调试之后,我们开始运行程序,观察程序的运行结果。

通过不断运行和测试,我们可以检验程序的正确性和可靠性。

如果程序能够输出我们预期的结果,那么说明我们的实验成功了。

实验结果:在我们进行实验的过程中,我们获得了一些令人满意的结果。

通过编写汇编语言代码,我们成功实现了一个简单的计算器程序。

汇编语言实验报告

汇编语言实验报告

汇编语言实验报告实验一、汇编运行环境及方法、简单程序设计一、程序说明本程序用来比较两个字符串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指令逐步执行每条指令,看修改的内存内容对指令执行结果的影响。

微机原理与汇编语言程序设计汇编实验报告

微机原理与汇编语言程序设计汇编实验报告

(此文档为word格式,下载后您可任意编辑修改!) 昆明学院课程设计(大作业)目录1题目分析 (5)2基本理论 (5)3 总体设计 (6)3.1 本程序的功能结构图 (6)3.2字符输入及存储设计 (8)3.3加、减、乘、除法运算的判断设计 (8)3.4加、减、乘、除法运算的设计 (9)4实验器材 (10)5方法步骤 (11)6成效分析 (11)6.1运行界面分析 (11)6.2调试过程及分析 (13)7心得体会 (14)8参考文献 (14)9附录 (14)课程设计(大作业)报告一、题目分析本次设计的简单计算器,主要是为了解决数学中的加、减、乘、除四则运算的问题。

重点和难点主要包括以下几个方面:(1)利用BIOS调用中INT 16H调用中的子程序完成清屏、设置显示方式、设置窗口等操作。

(2)利用INT 21H DOS系统功能调用中的键盘输入接收十进制操作数和运算符由程序完成字符转换为二进制数,并存储起来。

(3)根据运算符完成运算,由程序在屏幕上显示运算结果。

1、十进制数转换为二进制数过程如下:(1)将BX清0.(2)从键盘接收一个按键的ASCII送AL中,并判断是否为0到9之间的字符,若不是转退出;否则将AL中内容减30H,转换为相应数字的二进制数,并扩展到AX中,然后将BX中内容乘以10后,再加上AX中的内容。

(3)转(2)继续执行因此程序退出后,BX中的内容即为所输入十进制数的二进制值。

例如:首先将BX清0后,先输入数字“5”,则(AL)=35H,属于0到9之间的数字,减30H后,(AL)=05H,扩展后,(AX)=0005H,BX乘以10后,加上AX中的内容,(BX)=0005H。

然后输入数字“8”,则(AL)=38H,属于0到9 之间的数字,减30H后,(AL)=38H,扩展后,(AX)=0008H,(BX)乘以10后,加上AX中的内容,(BX)=0037H,为十进制数“58”的二进制值。

微机原理与应用实验报告-汇编语言程序设计

微机原理与应用实验报告-汇编语言程序设计

实验报告册课程名称:微机原理指导老师:班级:姓名:学号:学期:20 19 —20 20 学年第学期实验目录实验一:汇编语言程序设计实验二:实验三:实验四:实验五:实验六:姓名:成绩:实验一汇编语言程序设计一、实验目的1、学习8088汇编语言程序的基本结构和程序设计的基本方法。

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

3、掌握DEBUG基本指令及其使用方法。

二、实验内容编写程序,将80H-8FH共16个字节数据写入数据段1000H偏移地址开始的16个内存单元中。

三、实验步骤1、进入编程环境,编写、汇编、链接、运行汇编语言源程序。

2、利用DEBUG指令,对程序进行调试。

四、实验程序实验代码如下:;将80H-8FH共16个字节数据写入数据段1000H偏移地址开始的16个内存单元中。

DATAS SEGMENTDATA DB80H,81H,82H,83H,84H,85H,86H,87H,88H,89H,8AH,8BH,8CH,8DH,8EH,8FH;此处输入数据段代码DATAS ENDSSTACKS SEGMENT;此处输入堆栈段代码STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AXMOV ES,AXMOV SI,OFFSET DATAMOV DI,1000HMOV CX,16CLDREP MOVSB;此处输入代码段代码HLTMOV AH,4CHINT 21HCODES ENDSEND START五、实验结果将80H-8FH送入1000H-1016H内存段的结果:3.实验小结进一步巩固了数据的一般传送以及体会到了数据块传送的便利之处,进一熟悉了MASM软件的操作和DEBUG命令的使用。

计算机课程实验报告-《汇编语言与微机原理》[1]

计算机课程实验报告-《汇编语言与微机原理》[1]

常熟理工学院
计算机科学与工程学院实验报告 2013-2014学年第 2 学期
课程名称汇编语言与微机原理
专业计算机科学与技术
班级计科121
学号090312115
姓名王海波
实验地点N6-106
指导老师张雪伍
实验报告要求
1.在实验课前要认真预习实验内容,熟习实验的原理、方法及算法等。

2.根据实验指导书要求,认真完成实验内容;实验结束后,按照实验报告的要求认真填写相关内容。

3.实验时要带好实验指导书、实验报告本。

4.实验时要严肃认真,不得互相抄袭。

5.实验课的成绩由实验预习、实验过程、实验结果和实验报告四部分构成。

用Debug进行实验的示例实验报告必须包含内容说明:。

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

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

《微机系统与汇编语言实验报告》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求和。

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

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

成绩:2微机原理与接口技术课程实验报告课程:微机原理与接口技术姓名:专业:网络工程学号:132055222日期:2016年6月太原工业学院计算机工程系实验一:输入输出实验实验环境PC机+Win 2003+emu8086+proteus仿真器实验日期2016.6一.实验内容基本要求:1.熟悉emu8086仿真系统2.实现控制台输入输出3.设计并单步调试实现一位十进制数的加法运算(屏幕效果为3+2=5,红色为输入其他为自动输出)扩展要求:1.实现两位十进制和的输出2.实现一位十进制四则运算3.实现多位数运算思考内容:1.输入输出数据和计算用数据的区别2.单字符输入输出和串输入输出的不同二.理论分析或算法分析1.一般来讲,从键盘输入的数都是以ASCII码的形式存放在内存中。

对十六进制数来讲,0~9的ASCII码值分别为30H~39H,对这十个数的转换,减去30H就得到对应的二进制值,再用二进制数值进行加减乘除运算。

2.实现一位十进制数的加法运算和实现一位十进制数的减法运算的主要区别是对控制台输入的运算符不同,算术运算指令也不同,同时应该考虑加法的进位和减法的借位。

一位十进制加法与两位十进制加法运算的区别是:一位十进制加法时算术运算指令用AAA(加法的ASCII调整),两位十进制数用DAA(加法的十进制调整)。

3.在一位十进制的运算方法上,利用mov ah,01h;int 21h;输入字符。

利用mov dl,al;mov ah,2;显示到屏幕上。

将第一个数赋值给al,将第二个数赋值给bl,用add实现bl于al的相加。

4.在实现两位十进制相加的算法时,利用步骤一的方法,再次将两个值赋值给ah和bh,利用add实现十位数的带进位相加。

三.实现方法基本要求代码:mov ah, 1int 21hmov bl, al mov ah, 2 mov dl, '+'int 21hmov ah, 1int 21hand bl, 0fh and ax, 0fh add al, blaaaor ax, 3030h mov bx, ax mov ah, 2 mov dl, '='int 21hcmp bh, 30h 扩展要求代码:mov ah, 1int 21hmov bl, al mov ah, 2 mov dl, '+' int 21hmov ah, 1int 21hadd bl, al mov ah, 2 mov dl, '=' int 21hmov dl, bl sub dl, 30h mov ah, 2int 21hHlt四、实验结果分析(含执行结果验证、输出显示信息、图形、调试过程中所遇的问题及处理方法等)1、基本要求实验结果:2、扩展要求实验结果:五.结论通过本次实验,完成了一位十进制数的加法运算,两位十进制数的和输出,一位十进制数的四则运算以及多位数运算的实验要求。

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

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

微机系统实验报告实验一汇编语言编程实验一、实验目的(1)掌握汇编语言的编程方法(2)掌握DOS功能调用的使用方法(3)掌握汇编语言程序的调试运行过程二、实验设备PC机一台。

三、实验内容(1)将指定数据区的字符串数据以ASCII码形式显示在屏幕上,并通过DOS功能调用完成必要提示信息的显示。

(2) 在屏幕上显示自己的学号姓名信息。

(3)循环从键盘读入字符并回显在屏幕上,然后显示出对应字符的ASCII码,直到输入“Q”或“q”时结束。

(4)自主设计输入显示信息,完成编程与调试,演示实验结果。

考核方式:完成实验内容(1)(2)(3)通过,完成实验内容(4)优秀。

实验中使用的DOS功能调用:INT 21H表3-1-1 显示实验中可使用DOS功能调用四、实验步骤(1)运行QTHPCI软件,根据实验内容编写程序,参考程序流程如图3-1-1所示。

(2)使用“项目”菜单中的“编译”或“编译连接”命令对实验程序进行编译、连接。

(3)“调试”菜单中的“进行调试”命令进入Debug调试,观察调试过程中数据传输指令执行后各寄存器及数据区的内容。

按F9连续运行。

(4)更改数据区的数据,考察程序的正确性。

五、实验程序DATA SEGMENTBUFFER DB '03121370konglingling:',0AH,0DH,'$'BUFFER2 DB 'aAbBcC','$'BUFFER3 DB 0AH,0DH,'$'DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXmov ah,09hmov DX,OFFSET BUFFERint 21hMOV SI,OFFSET BUFFER2lab1:cmp BYTE PTR [SI],'$'je lab2MOV AL,DS:[SI]AND AL,0F0H ;取高4位MOV CL,4SHR AL,CLCMP AL,0AH ;是否是A以上的数JB C2ADD AL,07HC2: ADD AL,30HMOV DL,AL ;show characterMOV AH,02HINT 21HMOV AL,DS:[SI]AND AL,0FH ;取低4位CMP AL,0AHJB C3ADD AL,07HC3: ADD AL,30HMOV DL,AL ;show characterMOV AH,02HINT 21Hadd SI,1jmp lab1lab2:mov ah,09hmov DX,OFFSET BUFFER3int 21hmov ah,01hint 21hcmp al,'q'je lab3mov BL,ALAND AL,0F0H ;取高4位MOV CL,4SHR AL,CLCMP AL,0AH ;是否是A以上的数JB C4ADD AL,07HC4: ADD AL,30HMOV DL,AL ;show characterMOV AH,02HINT 21HMOV AL,BLAND AL,0FH ;取低4位CMP AL,0AHJB C5ADD AL,07HC5: ADD AL,30HMOV DL,AL ;show characterMOV AH,02HINT 21Hjmp lab2lab3:mov ah,4chint 21hCODE ENDSend START六、实验结果实验二数码转换实验一、实验目的(1)掌握不同进制数及编码相互转换的程序设计方法。

  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[回车]。

相关文档
最新文档