推荐-汇编语言第实验报告输入输出程序设计 精品

合集下载

字符及字符串输入输出与顺序程序设计实验报告

字符及字符串输入输出与顺序程序设计实验报告

字符及字符串输入输出与顺序程序设计实验实验报告2.2.1 实验目的1、学习和掌握字符及字符串的输入输出方法。

2、掌握顺序程序的设计方法。

3、进一步掌握调试工具的使用方法。

2.2.2 实验预习要求1、复习DOS功能调用中用于字符输入(功能号01H)、字符输出(功能号02H)、字符串输入(功能号为0AH)以及字符串输出(功能号09H)的调用方法(详见教材5.5.6)。

2、复习BCD码运算调整指令。

3、根据“2.2.3 实验内容”中给出的源程序框架编写完整的源程序,以便实验时调试。

4、从“2.2.4 实验习题”中任选一道题目,编写源程序,以便上机调试。

2.2.3实验内容从键盘输入两个一位十进制数,计算这两个数之和,并将结果在屏幕上显示出来。

1、问题分析比如使用功能号为01H的用于实现单个字符输入的DOS功能调用接收从键盘输入的两个十进制数8和6,这时计算机内部得到的是这两个数的ASCII码值38H和36H。

由于数字0 9的ASCII码值与其代表的数值之间相差30H,因此将其减去30H即可得到以非压缩型BCD数形式表示的十进制数08H和06H,使用ADD指令对它们进行相加后结果为0EH(00001110B),显然需要用非压缩型BCD数加法调整指令对ADD的运算结果进行调整,调整后得到两个非压缩型BCD数01H和04H,将它们分别加上30H后变为其对应的ASCII码31H(1的ASCII码)和34H(4的ASCII码),然后调用功能号为02H用于单个字符输出的DOS功能调用将它们显示出来。

综上所述,需要考虑以下问题。

(1)从键盘输入一个一位十进制数的方法通过功能号为1的DOS功能调用实现从键盘输入一个字符,格式如下:MOV AH, 01HINT 21H ;此时程序等待用户键入,键入字符的ASCII码值存在AL中SUB AL, 30H ;减去30H后得到键入数字所代表的数值(2)提示信息字符串的显示通过功能号为9的DOS功能调用实现字符串显示,注意字符串的最后一个字符必需为’$’。

《汇编语言》实验报告

《汇编语言》实验报告

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

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

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

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

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

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

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

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

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

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

e.关闭显示模式。

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

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

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

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

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

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

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

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

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

用汇编语言实现程序的输入输出

用汇编语言实现程序的输入输出

摘要计算机的广泛使用与普及,使人们传统的学习、工作甚至思维方式都发生了巨大的变化,如不掌握好计算机技术,人们将无法获得有效的研究和开发手段,这将直接影响到我们自身的发展。

作为嵌入式专业的学生,毕业后我们所从事的工作将与计算机息息相关,或直接从事与本专业对口的工作,掌握好计算机的工作原理、硬件间的协同工作过程以及接口技术对于我们来说是至关重要的。

基于此,本次毕业设计采用模块化的设计方法,利用汇编语言编程实现了数据的输入、排序和输出功能。

汇编语言与机器语言几乎一一对应,与高级语言相比更具有所编程序质量较高,占用内存字节数较少,运行速度较快的优点,所以它成为了我们首选的编程语言。

该汇编程序主要实现了为用户提供不超过100个随机的两位数据的输入、大小排序及输出的功能。

用户可以用该程序处理学生成绩的排序问题,便于学生成绩管理。

此汇编程序包含三个功能模块:数据输入、数据排序、数据输出。

该设计基于汇编语言编程,处理循环、比较、排序、跳转等问题,使我们更好地掌握了中断的使用方法,DOS功能的调用以及数据的输入、输出处理方法。

同时,用汇编语言编写一个较完整的实用程序,培养了我们程序设计的基本思路,使我们更清楚地了解了程序编译、调试的过程,提高了我们的实际动手能力,增强了我们解决实际问题的自信心。

将这些简单的程序应用于实际的产品中,发挥它并不简单的作用,使我们的学习、生活、工作更丰富多彩。

关键字:学生成绩管理、汇编语言、数据的排序及输入/输出目录摘要 (1)目录 (2)引言 (3)第一章概述 (4)1.1概要设计 (4)1.1.1汇编语言简介 (4)1.1.2设计开发平台 (4)1.2需求分析 (5)1.2.1程序需求分析 (5)1.2.2程序设计思想 (5)1.2.3程序结构设计及功能 (6)第二章详细设计 (7)2.1设计分析 (7)2.1.1数据输入 (7)2.1.2数据比较排序 (9)2.1.3数据输出 (11)2.2总程序源代码 (13)2.3调试及如何解决其中的问题 (17)2.3.1输入成绩时无法结束输入 (17)2.3.2输入成绩后无法在显示屏上显示输入的结果 (17)2.3.3 输入成绩后,不能成功的输出成绩,TAB表地址出现问题 (18)2.3.4完成成绩的输入输出后接收任意键继续新的成绩输入输出 (18)2.3.5 判断数据大小交换的结束标志 (18)2.3.6美化程序的显示窗口 (18)2.4编译、连接、调试的过程 (19)2.4.1设置编译文件的路径:进入MASM611下 (19)2.4.2 运用MASM进行编译:MASM CHENGJI.ASM (19)2.4.3 编译无误后进入LINK连接部分:LINK CHENGJI.OBJ (20)2.4.4 进入DEBUG调试生成.EXE可执行文件:DEBUG CHENGJI.EXE,并用-U参数进行观察代码地址是否有误。

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

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

一.实验目的与内容目的:1)进一步熟悉汇编语言程序的编辑、宏汇编、链接、运行基本概念;2)熟练掌握动态调试程序TD/DEBUG 的常用命令或窗口功能,学会用TD/DEBUG 调试程序,修改数据和寄存器等环境;3)熟悉掌握汇编语言程序的典型数据结构设计、典型程序流控制方法,了解DOS/BIOS 功能调用的基本方法。

内容:(1)编写程序实现如下功能:①从键盘输入任意字符串后,存入自定义存储单元,判断处理后将字符串中小写字母转换为大写字母(其他字符不变)并按原顺序将这些字符在屏幕上显示出来。

②从键盘输入在0~65535 之间的十进制数,将其转换为16 进制数并在屏幕中显示出来,要求判断输入字符串是否为在0~65535 之间的十进制数。

(2)复习TD 各种操作,并用DEBUG 调试程序,学会基本命令操作,并通过单步、设置断点等方法观察中间结果,完成正常运行。

命令行方式下直接键入debug myfile.exe 回车(myfile 为待调试可执行程序),进入调试方式(显示-),键入H 回车显示全部命令、格式和功能。

常用命令有:U(反汇编)、A(汇编输入指令程序)、R (寄存器显示/修改)、I(端口输入)、O(端口输出)、D(显示数据)、E(修改数据)。

除资源修改管理功能外,重点应用T(单步)、Tn(执行n 步)、P(过程/指令)、G××××(从当前CS:IP执行到断点××××)或G=××××1 ××××2(从××××1 执行到××××2 断点)调试实验程序。

程序流程图:1.2.三. 方案实现与测试1)实验一的基本实验内容和要求①编写代码完成功能要求,文件格式为.asm 文件(如文件名为add.asm),将文件放入带汇编工具的文件夹中,即含有汇编工具(MASM/TASM.EXE)和链接工具(LINK/TLINK.EXE)的文件夹。

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

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

汇编语言程序设计实验报告汇编语言程序设计实验报告一、实验目的:(1)熟悉汇编语言运行环境和方法;(2)了解如何使用汇编语言编制程序;(3)熟悉DEBUG有关命令的使用方法;(4)利用DEBUG掌握有关指令的功能;(5)利用DEBUG 运行简单的程序段。

二、实验内容:1.学会输入,编辑汇编语言程序;2.学会习汇编语言程序进行汇编,连接和运行;3.进入和退出DEBUG程序;4.学会DEBUG中的D命令,E命令,R命令,T命令,A命令,G命令等的使用。

对于U命令,N命令,W命令等,也应试一下。

三、实验准备:1.仔细阅读有关汇编语言环境的内容,实现准备好使用的例子。

2.准备好源程序的清单,设计好调试的步骤,测试方法,对运行结果额分析。

3.编写一个程序:比较两个字符串所含的字符是否相同,若相同则显示’Match’。

否则显示’No match!’。

4.仔细阅读有关DEBUG命令的有关内容,对有关命令,都要事先准备好使用的例子。

四、实验步骤:1.在DOS提示下进入MASM目录。

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

(1)调用edit输入,编辑源程序并保存在指定目录中。

例: Edit abc.asin(2)用汇编程序masin对源程序汇编产生目标文件obj;例:不断修改错误,直至汇编通过为止。

(3)用连接程序link产生执行文件exe。

例:link abc(4)执行程序:可直接从DOS执行程序,即在DOS环境中,输入文件名即可。

3.详细记录每一步所用的命令,以及查看结果的方法和具体结果。

五、实验方法:比较字符串sle。

试编写一个程序:比较字符串string1和string2所含的字符是否相同。

若相同则显示’match ‘,否则则显示’No match’可以用串比较指令来完成程序所有要求的功能。

上机过程:1.调用字处理程序wordstar建立asm文件。

使用非文本文件方式(n命令)建立以sle.asm为文件名的源文件如下,然后用CTRLKX命令存入磁盘,并使用系统返回DOS。

实验五 输入与输出程序设计

实验五 输入与输出程序设计

《微型计算机原理》设计性实验指导书实验六输入与输出程序设计一、实验目的1.掌握常用DOS中断调用的功能以及在应用程序中的使用方法。

2.学习键盘输入和屏幕输出的基本方法。

3.宏指令、子程序在应用程序中的使用。

4.汇编语言程序设计的调试与完善。

二、设计指标与实验要求1.设计内容本实验要求设计完成:①屏幕输出提示(如“Want input(Y/N)?”),若键入N 则结束程序返回操作系统;键入Y则转2步;键入的是其它字母则回①步。

②换行后输出提示(如“please input a strings:”),且在该提示后键入一字符串(输入到输入缓冲区)。

③换行后输出提示(如“your inputting is:”),在该提示后输出由②步输入的字符串。

④换行后输出提示“Want continue(Y/N)? ”,若键入Y则转②步;键入N则结束程序返回操作系统;其它字母则回第④步。

2.设计要求①按屏幕提示要求输入,从屏幕上获得正确结果。

②把程序中常用的中断调用定义成宏指令(至少定义2个)。

③字符串回显部分设计成子程序,可以选择用21H中断的2号或9号功能来实现,应能显示由主程序指定的任一字符串。

要注意这两种方法实现的设计过程是不同的。

采用2号功能的,子程序输入参数为“回显字符串地址”和“回显字符数”;采用9号功能的,子程序输入参数为“回显字符串地址”。

④屏幕的提示信息显示格式尽量做到兼顾美观。

3.实验步骤①.选用合适的程序文本编辑软件编辑源程序,并为文件取以.ASM为扩展名的文件存盘。

②.用宏汇编软件MASM对源程序文件进行汇编,若有错误,根据提示(行号,错误类型)回源程序文件中修改。

③.用LINK对由MASM汇编后产生的目标文件做连接,生成可执行文件;若有错误(同上)回步骤1修改源程序文件。

④.对存在问题的程序,用CV调试程序,检察运行结果,并调试程序。

⑤.反复验正程序的正确性。

⑥.完善、改进所设计的程序算法、功能、界面、或性能等指标。

汇编语言综合实验报告

汇编语言综合实验报告

汇编语言综合实验报告一、引言在计算机科学领域,汇编语言是一种低级别的编程语言,用来直接控制计算机硬件。

汇编语言编写的程序可以直接访问计算机的内存和寄存器,因此在一些特定领域,如嵌入式系统开发和操作系统内核编程中得到广泛应用。

本实验旨在通过编写汇编语言程序,加深对计算机底层工作原理的理解,并提升编程技能。

二、实验目的本实验旨在掌握使用汇编语言编写程序的基本方法和技巧,通过实践将理论知识转化为实际应用能力。

具体目标如下:1. 理解汇编语言的基本结构和语法;2. 掌握寄存器的使用方法和常见指令的含义;3. 实现特定功能的汇编语言程序,并验证其正确性。

三、实验内容本次实验共包含三个实际问题,分别是:求两个整数的和、判断一个数是否为素数以及计算斐波那契数列中的第n项。

下面将分别介绍每个问题的解决方法和实现步骤。

1. 求两个整数的和要求编写一段汇编语言程序,输入两个整数,输出它们的和。

程序的具体实现步骤如下:(1)将第一个整数存入寄存器A;(2)将第二个整数存入寄存器B;(3)将寄存器A和寄存器B的值相加,结果存入寄存器C;(4)将寄存器C的值输出,作为程序的结果。

2. 判断一个数是否为素数要求编写一段汇编语言程序,输入一个整数,判断它是否为素数,并输出结果。

程序的具体实现步骤如下:(1)将待判断的整数存入寄存器A;(2)用2到sqrt(A)之间的所有整数去除A,如果能整除则判定为非素数,跳转到步骤(4);(3)将寄存器A的值输出,作为结果,并结束程序;(4)将“非素数”输出,作为结果,并结束程序。

3. 计算斐波那契数列中的第n项要求编写一段汇编语言程序,输入一个正整数n,计算斐波那契数列中的第n项,并输出结果。

程序的具体实现步骤如下:(1)将n存入寄存器A;(2)将寄存器A的值减1得到n-1,并将其存入寄存器B;(3)将寄存器A的值减2得到n-2,并将其存入寄存器C;(4)计算n-1和n-2这两个值对应的斐波那契数列项的值,分别存入寄存器D和寄存器E;(5)将寄存器D和寄存器E的值相加,结果存入寄存器F,并将寄存器F的值输出,作为程序的结果。

汇编语言实验报告

汇编语言实验报告

汇编语言实验报告一、实验目的本次汇编语言实验的主要目的是通过实际编程和调试,深入理解汇编语言的基本语法、指令系统和程序设计方法,提高对计算机底层工作原理的认识和编程能力。

二、实验环境1、操作系统:Windows 102、编程工具:MASM 615 集成开发环境三、实验内容1、简单算术运算程序设计一个程序,实现两个 16 位无符号整数的加法运算,并将结果输出显示。

分析程序的执行过程,理解加法指令和数据存储方式。

2、数据排序程序编写一个程序,对给定的一组 8 位无符号整数进行冒泡排序。

观察排序过程中数据的交换和移动,掌握循环和比较指令的应用。

3、字符串处理程序设计一个程序,实现字符串的复制、比较和查找操作。

熟悉字符串操作指令和内存访问方式。

四、实验步骤1、简单算术运算程序定义数据段,存储两个待相加的整数。

在代码段中,使用加法指令 ADD 进行运算,并将结果存储在指定的内存单元。

通过输出指令将结果显示在屏幕上。

2、数据排序程序定义数据段,初始化待排序的整数数组。

在代码段中,使用两层循环实现冒泡排序算法。

比较相邻的两个元素,如果顺序错误则进行交换。

输出排序后的数组。

3、字符串处理程序定义数据段,分别存储源字符串和目标字符串。

使用字符串复制指令 MOVS 实现字符串的复制。

利用比较指令 CMPS 进行字符串的比较。

通过扫描指令 SCAS 查找指定的字符。

五、实验结果与分析1、简单算术运算程序输入两个整数,如 100 和 200,程序输出结果为 300,运算正确。

通过调试工具观察寄存器和内存的变化,进一步理解了加法运算的实现过程。

2、数据排序程序对于给定的数组5, 3, 1, 8, 2,排序后输出为1, 2, 3, 5, 8,排序结果符合预期。

分析循环次数和数据交换的位置,加深了对冒泡排序算法的理解。

3、字符串处理程序字符串复制操作成功,源字符串被准确地复制到目标字符串中。

字符串比较结果正确,能够准确判断两个字符串的相等与否。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
;dx:开通方向黄灯闪烁控制字。
FlshYproc
shlcx,1
yllw:
OUT4,AX
pushcx
movcx,400
calldelay
xorax,dx
popcx
loopyllw
ret
FlshYendp
end
教师评议
成绩评定: 指导教师签名:
四川大学计算机学院、软件学院
实验 报 告
学生姓名
学号
班级
学生专业
计算机科学与技术
学院
计算机学院
课程名称
汇编语言程序设计(第八次)
实 验 时 间
实验项目
输入输出程序设计
报告撰写时间
实验目的
练习输出控制的简单编程
实验环境
1X86系列桌面系统;
2Emu8086。
实验内容
对Emu8086的交通灯例子traffic_lights.asm进行改造,要求如下:
movdx,0000010000010000b
movcx,5
callFlshY
;使用onoff子程序,南北向开通900h时间,然后关闭南北向绿灯。
movax,0000100001100001b
movdx,0000100000100000b
movcx,900h
callonoff
;使用FlshY子程序,使南北向黄灯闪烁5次
1南北向、东西向交替开通,即先“南北向绿灯则东西向红灯”,延时示意后则“南北向红灯则东西向绿灯”;
2某方向由绿灯切换成红灯前,先熄灭绿灯,继而闪烁黄灯5次,之后才打开红灯;
3②过程之后,方可打开另一方向绿灯。
实验记录
带注释的源代码:
#MAKE_BIN#
#CS = 500#
#IP = 0#
; This is a sample of OUT instruction.
movax,0000100010100010b
movdx,0000000010000010b
movcx,5
callFlshY
JHale Waihona Puke Pnext_situation;编程提示三:编制开通某方向(同时关闭另一方向)、经延时后开通方向熄灯的子程序
;ax:开通某方向(同时关闭另一方向)的控制字;
;dx:开通方向熄灯(另一方向保持关闭)的控制字;
;编程提示二:程序结构
next_situation:
;使用onoff子程序,使东西向开通900h时间,然后关闭东西向绿灯。
movax,0000001100001100b
movdx,0000000100000100b
movcx,900h
callonoff
;使用FlshY子程序,使东西向黄灯闪烁5次
movax,0000010100010100b
;cx:开通延时值。
OnOffproc
OUT4,AX
calldelay
xorax,dx
ret
OnOffendp
;提供一以CX的内容为延时值的子程序
delayproc
shlcx,1
next:
loopnext
ret
delayendp
;提供一个以某方向关闭、另一方向黄灯闪烁的子程序:
;ax:关闭方向红灯开、开通方向熄灯的控制字;
; It writes values to virtual I/O port
; of Traffic Lights Intersection, by
; setting bits we can turn off/on
; the lights. Your task will be to
; to improve it, and make it work just
; like real Traffic Lights System :)
;编程提示一:接口4的16位对应灯组控制关系:
;①高四位未用;
;②低12位分成四组,每三位一组控制东、南、西、北某个方位的交通灯;
;③从左向右,每组三位对应灯色为:红、黄、绿;
;④从左向右编组:1、3组控制南北向,2、4组控制东西向;
相关文档
最新文档