实验二 汇编语言程序设计实验
- 格式:pdf
- 大小:60.16 KB
- 文档页数:3
汇编语言-实验二循环与子程序程序设计
实验目的
本实验旨在通过学习循环和子程序的概念和使用方法,掌握汇
编语言中循环和子程序的程序设计技巧,培养学生的程序设计能力。
实验内容
1. 循环程序设计:编写一个循环程序,实现指定次数的循环操作。
2. 子程序程序设计:编写一个子程序,实现指定功能的模块化
程序设计。
实验步骤
循环程序设计
1. 根据实验要求确定需要循环的次数。
2. 初始化循环计数器,将循环计数器置为0。
3. 判断循环计数器是否达到循环次数的要求,如果达到则跳出
循环,否则继续执行循环体。
4. 执行循环体的操作。
5. 循环计数器自增1。
6. 返回到第3步继续判断循环条件。
子程序程序设计
1. 根据实验要求确定需要实现的功能。
2. 将要实现的功能封装在一个子程序中,确定输入参数和输出结果。
3. 在主程序中调用子程序完成指定的功能。
4. 如果需要,可以在子程序中调用其他子程序实现更复杂的功能。
实验
本次实验通过编写循环和子程序的程序设计,加深了对汇编语言中循环和子程序的理解。
循环程序设计能够实现重复执行指定次数的操作,提高了程序的效率;子程序程序设计能够实现模块化和可重用性,提高了程序的可读性和可维护性。
通过实践,进一步掌握了汇编语言的程序设计技巧,加深了对汇编语言的理解和应用能力。
参考资料
汇编语言程序设计教程
汇编语言程序设计实验指导书。
实验二:基础汇编语言程序设计TEC—2000教学计算机16位机实验指导TEC-2000教学计算机的监控程序用TEC-2000汇编语言实现,其主要功能是支持把计算机终端或PC机仿真终端接入教学机系统,通过终端设备运行教学机的有关程序,以方便直观的形式支持教学机的各项实验,提供教学机汇编语言的可用子程序。
进入监控程序的方法:1)打开实验箱的盖子,确认教学机电源开关处于断开状态,然后接上电源线;2)将通讯线的9芯插头接在教学机的串口“COM1”上,另一端接到PC机的串口,用PC机作为模拟终端;3)将教学机的控制开关设置为00101(连续、内存读指令、组合逻辑、16位、联机),开关拨向上方表示“1”,拨向下方表示“0”;打开电源开关,5V电源指示灯亮;4)在PC机上运行PCEC16.EXE文件,根据所连接的PC机的串口,设置所用PC机的串口为“1”或“2”,其余的设置不用改动,直接回车即可。
注意:PC机必须运行在DOS操作系统上,不能运行在Windows的命令行模式下;5)按一下教学机的“RESET”键,再按一下“START”键后监控程序开始运行,同时主机显示以下的信息:TEC-2000 CRT MONITORVersion 2.0 2001.10Computer Architectur Lab., Tsinghua UniversityCopyright Jason He监控程序提供类似PC机DOS系统下的Debug程序的功能,支持A、U、G、P、T、R、D和E共8个监控命令。
监控命令的格式为:[监控命令] [地址/寄存器名参数]监控命令为单字母(大小写均可),命令名后可跟一个地址参数,或寄存器编号参数。
当命令名后无参数时,监控程序取默认的地址/寄存器编号参数值。
TEC—2000机从终端接收地址、指令、数值时,均用16进制数(最多4位)输入与显示,并且不能用字符h加以标志。
1、单条汇编命令A格式:A [adr][adr]表示地址参数,adr为任选项(选择范围为2000H—27FFH)。
汇编实验2-循环程序设计-实验报告一、实验目的1、了解循环程序设计的方法2、理解汇编语言中循环指令的使用3、掌握汇编语言中常用的循环结构二、实验原理1、循环指令循环指令是计算机中常用的一种控制结构,其作用是重复执行一定的操作。
在汇编语言中,常用的循环指令有LOOP、LOOPE、LOOPNE等,具体功能如下:(1)LOOP:重复执行指定次数的操作;(2)LOOPE:执行操作直到CX寄存器为0或ZF寄存器为1;(3)LOOPNE:执行操作直到CX寄存器为0或ZF寄存器为0。
LOOP指令的语法格式如下:LOOP label其中,label表示循环的目标地址。
2、循环结构循环结构是计算机程序设计中常用的一种结构,其基本形式包括:while、do...while、for等。
在汇编语言中,常用的循环结构有以下两种:(1)无限循环结构:该结构适用于需要不停顿地进行某项操作的情况,底层逻辑基于测试指令;(2)计数器循环结构:该结构适用于需要循环指定次数的情况,底层逻辑基于循环指令。
三、实验内容1、使用循环指令实现计算1~10的和;2、使用循环结构实现计算1~10的和。
四、实验步骤1、使用循环指令实现计算1~10的和。
(1)将计数器初始化为10,即MOV CX,10;(2)将累加器初始化为0,即MOV AX,0;(3)将当前计数器值加到累加器中,即ADD AX,CX;(4)将计数器减1,即DEC CX;(5)判断计数器是否为0,若不为0,则执行第3步;若为0,则跳转到计算结果的部分。
2、使用循环结构实现计算1~10的和。
(1)将计数器初始化为10,即MOV CX,10;(2)将累加器初始化为0,即MOV AX,0;(3)将当前计数器值加到累加器中,即ADD AX,CX;(4)将计数器减1,即DEC CX;(5)判断计数器是否为0,若不为0,则执行第3步;若为0,则跳转到计算结果的部分。
五、实验结果(1)使用循环指令实现计算1~10的和MOV CX,10MOV AX,0LOOP label1ADD AX,CXDEC CXJNZ label1label1:MOV sum,AX(2)使用循环结构实现计算1~10的和MOV CX,10MOV AX,0label2:ADD AX,CXDEC CXJNZ label2MOV sum,AX六、实验总结本次实验实现了两种不同的循环方式,分别使用了循环指令和循环结构。
合肥工业大学实验报告课程:汇编语言程序设计专业班级:学号:姓名:实验一Debug程序的使用一. 实验目的1、熟悉DEBUG程序中的命令,学会在DEBUG下调试运行汇编语言源程序。
2、掌握8086/8088的寻址方式及多字节数据的处理方法。
二. 实验内容1、利用DEBUG程序中的“E”命令,将两个多字节数“12345678H”和“FEDCBA98H”分别送入起始地址为DS:0200H和DS:0204H两个单元中。
2、分别用直接寻址方式和寄存器间接寻址方式编写程序段,实现将DS:0200H 单元和DS:0204H单元中的数据相加,并将运算结果存放在DS:0208H单元中。
要求:本次实验的内容均在DEBUG下完成,实现数据的装入、修改、显示;汇编语言程序段的编辑、汇编和反汇编;程序的运行和结果检查。
三. 实验过程和程序基础题:1、利用DEBUG程序中的“E”命令,将两个多字节数“12345678H”和“FEDCBA98H”分别送入起始地址为DS:0200H和DS:0204H两个单元中。
2、分别用直接寻址方式和寄存器间接寻址方式编写程序段,实现将DS:0200H单元和DS:0204H单元中的数据相加,并将运算结果存放在DS:0208H单元中。
附加题:1. 从DS:0000H开始的5个16位带符号数分别记为x,y,z,v,w,用E命令初始化为:540,1,-1,1080,0, 试求w=(v-(x*y+z-540))/x2. 完成BX中1的个数的统计。
3. 用串操作指令将DS:0000开始20个字节初始化为:0CCH。
并将这20个字节的内容复制到其后的20个字节里。
四. 实验结果(包括必要的截图)基础题 1:基础题 2:附加题 1:附加题 2:附加题 3:五. 实验体会1. 在汇编语言中,变量的其实都是地址。
2. 在Debug中,数值都是16进制的。
3. 在读写内存中的数据时,必须指出数据类型是byte还是word。
汇编语言程序设计实验报告二(分支循环程序实验)一、实验目的1、掌握分支程序、循环程序的设计方法。
2、熟悉DEBUG程序的使用方法。
3、掌握汇编语言程序的编辑、汇编、连接以及调试过程。
二、实验内容1、编写一程序,将内存中某一区域的数据传送到另一个区域中(要求用循结构,不考虑数据块重叠问题)。
2、编写一程序,将内存中某一区域的数据传送到另一区域(要求考虑数据块重叠问题)。
三、实验准备1、预习数据传送指令,熟悉分支和循环程序设计方法。
2、预习DEBUG调试程序的使用方法。
3、根据实验内容要求,编写好实验源程序。
四、实验步骤1、用QE或其它编辑软件,在计算机上编辑源程序,使其正确无误。
2、汇编、连接源程序,产生.EXE可执行文件。
3、运行程序。
(1) 进入DEBUG。
打入DEBUGT MYPROG.EXE。
MYPROG为所编程序的文件名。
(2) 先用G命令连续剧连续执行程序,程序执行完毕后,观察运行结果。
如果执行后是对的,说明程序编写是正确的,如果结果不对,说明程序有错误,则执行下一步。
(3) 检查程序。
在程序中设置若干断点,以便杳出错误所在。
(4) 采用单步命令T或执行程序,观察各寄存器和存储单元内容,以便找到错误之处。
五、实验报告要求1、列出程序清单,并给出程序流程图。
2、总结实现数据传送的几种方法,指出它们的区别。
开始3、分析实验中所遇到的一些问题,分析错误原因。
4、说明本实验中是如何使用DEBUG进行调试的。
CX、SI、DI置初值六、流程图勤开始设置增量方式CX、SI、DI置初值保存SI内容AL [SI] SI SI+源块长度[DI] AL N SI>DIYSI SI+1 恢复SI内容恢复SI内容DI DI+1CX CX-1 设置减量方式N CX=0, SI指向源块末尾DI指向目的块末尾Y结束 [DI] [SI]题一流程图 N 传完了吗, 书馆 Y结束题二流程图七、程序清单题一程序清单:STACK SEGMENT STACK ‘STACK’DB 100 DUP(0)STACK ENDSDATA SEGMENT PARA ‘DATA’SOUR DB 0、1、2、3、4、5、6、7、8、9 DEST DB 10 DUP(,)DB ‘$’DATA ENDSSEGMENT PARA‘CODE’ASSUME CS:CODEMAIN PROC FARSTART: PUSH DSMOV AX,0PUSH AXMOV AX,DATAMOV DS,AXMOV CX,10MOV SI,offset SOURMOV DI, offset DESTAGAIN: MOV AL,[SI]MOV [DI],ALINC SIIN DILOOP AGAINMOV DX,offset DESTMOV AH,09HINT 21HRETMAIN ENDPCODE ENDSEND START题二程序清单:DATA SEGMENT PARA ‘DATA’STRG DB ‘ABCDEFGHIJKLMNOP’STG1 EQU STRG+4STG2 EQU STHG+8STRSE EQU 6DATA ENDSSTACK SEGMENT PARA ‘CODE’DB 100 DUP(0) STACK ENDSCODE SEGMENT PARA ‘CODE’ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK PROC FARSTART: PUSH DSMOV AX,0PUSH AXMOV AX,DATAMOV DS,AXMOV ES,AXMOV CX,STRSEMOV SI,OFFSET STG1MOV DI,OFFSET STG2CLDPUSH SIADD SI,STRSE-1CMP SI,DIPOP SIJL MOVESTDADD SI,STRSE-1ADD DI,STRSE-1 MOVE: REP MOVSB RETMAIN ENDPCODE ENDSEND START。
实验二:汇编语言(三种基本结构程序)设计与调试一、实验目的1.学习汇编语言(三种基本结构程序)设计与调试。
2.掌握多分支结构程序设计的方法。
3.掌握循环结构程序设计的方法。
4.熟悉在PC机上建立、汇编、连接和调试程序的方法。
二、实验内容(顺序结构的程序设计)程序一:设W、X、Y、Z均为16位带符号数。
要求完成计算表达式(W-(X*Y+Z-220))/X。
将表达式的商和余数存入数据区RESULT单元开始的区域中。
编程思路:该题目要求掌握乘除法运算中带符号数和无符号数运算的区别。
为了实现指定功能,应从以下几个方面考虑:(1)带符号数的乘除法运算应选用的指令。
(2)乘、除法运算中操作数的长度问题。
(3)带符号数的扩展问题。
参考程序清单DATA SEGMENTW DW -304X DW 1000Y DW -12Z DW 20RESULT DW 2 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV AX,XIMUL YMOV CX,AxMOV BX,DXMOV AX,ZCWDADD CX,AXADC BX,DXSUB CX,220SBB BX,0MOV AX,WCWDSUB AX,CXSBB DX,BXIDIV XMOV RESULT,AXMOV RESULT+2,DXMOV AH,4CHINT 21HCODE ENDSEND START三、实验内容(分支结构的程序设计)程序二:在数据区中定义三个带符号字节变量,编写程序将其中的最大数找出送到MAX单元中。
该题目要求掌握多分支程序设计方法。
编程思路:为了实现指定功能,应从以下几个方面考虑:(1) 确定编程的算法思想。
(2) 确定带符号数比较大小转移应选择哪一组条件转移指令。
参考程序清单:DATA SEGMENTX DB 115Y DB 23Z DB -20MAX DB ?DATA ENDSCODE SEGMENTASSUME DS:DATA,CS:CODESTART:MOV AX,DATAMOV DS,AXMOV AL,XCMP AL,YJG NEXTMOV AL, YCMP AL,ZJG EXITMOV AL,ZJMP EXITNEXT:CMP AL,ZJG EXITMOV AL,ZEXIT:MOV MAX,ALMOV AH,4CHINT 21HCODE ENDSEND START ;返回DOS四、实验内容(循环结构的程序设计)程序三:编写程序实现将数据段STR1单元开始的20个字符移到STR2开始的存储区。
汇编语言程序设计实验报告汇编语言程序设计实验报告引言汇编语言是一种低级语言,用于编写计算机的底层程序。
在计算机科学与技术领域,汇编语言程序设计是一门重要的课程。
本篇实验报告将介绍我在汇编语言程序设计实验中所学到的知识和经验。
实验目的本次实验的目的是通过编写汇编语言程序,加深对计算机底层原理的理解,并掌握汇编语言的基本语法和编程技巧。
实验环境在实验中,我使用了一台运行Windows操作系统的计算机,并安装了MASM 汇编语言开发工具。
实验内容1. 汇编语言基础知识在实验开始前,我先学习了汇编语言的基础知识。
汇编语言使用助记符来代表机器指令,与机器指令一一对应。
了解了寄存器、内存和指令的概念,并学会了如何使用它们来编写汇编程序。
2. 汇编语言程序设计在实验中,我编写了一些简单的汇编语言程序,以加深对汇编语言的理解和应用。
例如,我编写了一个计算两个数之和的程序,通过将两个数存储在寄存器中,并使用加法指令进行运算,最后将结果保存到指定的内存位置。
3. 汇编语言程序调试在编写汇编语言程序时,我遇到了一些错误和问题。
为了解决这些问题,我学会了使用调试工具来定位错误。
通过逐步执行程序,并观察寄存器和内存的变化,我能够找到程序中的错误并进行修正。
4. 汇编语言程序优化在实验中,我也尝试了对汇编语言程序进行优化,以提高程序的性能和效率。
通过减少指令的数量和使用更高效的算法,我成功地改进了程序的执行速度。
实验心得通过本次实验,我深刻体会到了汇编语言程序设计的重要性和挑战性。
汇编语言虽然复杂,但它能够直接操作计算机的硬件,提供了更高的灵活性和效率。
通过编写汇编语言程序,我不仅加深了对计算机底层原理的理解,还提高了问题解决和调试能力。
总结汇编语言程序设计实验是一门重要的课程,它为我们提供了学习计算机底层原理和编程技巧的机会。
通过实验,我掌握了汇编语言的基本知识和技巧,并成功编写和优化了汇编语言程序。
这次实验不仅加深了我的理论知识,还培养了我的实际操作能力。
实验二:汇编语程序设计一、实验目的旨在通过实验使同学了解汇编语言的程序结构和编程方法,可以编写出顺序程序、分支程序和一般的循环程序,并学会修改和调试方法。
二、实验环境MASM、LINK、DEBUG或包含此软件的相关软件三、实验内容1.1、从FIRST开始的100个单元中存放着一个字符串,结束符为$。
编写一个程序,统计该字符串中字母‘A’的个数。
DATA SEGMENTFIRST DB 'AGHI K…$’ ;定义字符串,结束符为$NUMBER DB ? ;结果存放单元DATA ENDSCODE SEGMENTASSUME CS: CODE, DS: DATASTART: MOV AX,DATA ;建立数据段的可寻址性MOV DS, AXMOV BL,0 ;BL用作统计计数器LEA DI,FIRST ;取字符串首址NEXT: MOV AL, [ DI] ;取一个字符INC DI ;指向下一个字符CMP AL,’$’ ;与结束符’$’比较JE EXIT ;等于,搜索完结束CMP AL , 'A ;与字符‘A’比较JNE NEXT ;不等于。
不统计INC BL ;找到,计数IMP NEXT ;继续EXIT: MOV NUMBER,BLMOV AH,4CHINT 21HCODE ENDSEND START2.编程判断输入的ASCII码字符时数字还是字母,并将判断结果分别以“D”和“L”显示出来。
解:用宏实现字符显示。
程序如下:DISPLAY MACRD CHAR;显示字符宏定义MOV DL,CHARMOV AH,02HINT 21HENDMCODE SEGMENTASSUME CS: CODESTART : MOV AH, 0lH ;输人一个ASCI I码字符INT 21 HCMP AL, '0’JC ERROR ;非数字和字母,转ERROR处理CMP AL, '9'JA NEXT ;非数字,转NERTDISPLAY 'D' ;数字。
汇编语言-实验二循环与子程序程序设计汇编语言-实验二循环与子程序程序设计一、实验目的本实验旨在通过编写汇编语言程序,熟悉循环与子程序程序设计的基本概念和应用。
二、实验要求1·掌握汇编语言中循环、条件判断等指令的使用方法。
2·熟悉子程序的定义、调用和返回操作。
3·能够通过编写汇编程序实现特定功能的算法设计。
三、实验环境本实验需要在Windows系统下进行,使用MARS模拟器进行汇编程序的调试和执行。
四、实验内容4·1 循环程序设计4·1·1 求1~10的累加和1·初始化累加和寄存器。
2·设置循环次数计数器。
3·进入循环体,进行相加操作。
4·循环次数减一,判断是否继续循环。
5·若继续循环,返回第3步。
否则,输出结果。
4·1·2 求1~n的阶乘1·读入n的值。
2·设置循环次数计数器。
3·进入循环体,进行阶乘运算。
4·循环次数减一,判断是否继续循环。
5·若继续循环,返回第3步。
否则,输出结果。
4·2 子程序程序设计4·2·1 子程序的定义1·定义子程序的入口和返回点。
2·子程序内部的操作和逻辑。
3·子程序返回。
4·2·2 子程序的调用1·保存子程序调用前的现场。
2·传递参数。
3·跳转至子程序入口。
4·子程序执行完毕后,返回到调用点。
五、实验步骤5·1 循环程序设计1·使用MARS模拟器新建汇编程序。
2·编写求1~10的累加和的汇编代码。
3·编译并运行程序,验证结果的正确性。
4·修改程序,求1~n的累加和。
5·重新编译并运行程序,验证结果的正确性。
5·2 子程序程序设计1·使用MARS模拟器新建汇编程序。
实验二 汇编语言程序设计综合实验班级:电气类06 姓名:吴静 学号:1304200624说明:本实验所用软件和源程序均在路径:E:\Assembly 下,源程序名为ME2.asm,可执行文件名ME2.exe,源代码见文档末,运行的平台为dosbox 。
上机实验过程如下1. 编辑源程序2. 汇编源程序,连接目标程序(路径E:\Assembly 挂载在C 盘下)编译链接程序无错误,一次通过3. 运行可执行程序程序的基本功能已经完成,将十进制数转化为十六进制数4.添加按Esc键退出程序的功能从程序的运行结果可以看到,无论从什么时候按下Esc键,程序都会退出。
它的实现原理是:每次从键盘输入一个字时,就立即检测是否为1BH(Esc的Ascll码)。
如下如果是就跳到标号ESCEXIT(如下,具体见源代码)结束程序的运行。
5. 添加检查错误的功能(错误就是从键盘输入的数不是0~9或者13(Enter键的十进制Ascll码),检测到错误后就另起一行输出’Input Error’字符,显示可以重新输入十进制数)。
先观察一下程序执行的结果:接下来,就解释这个功能是如何实现的(重点,也是心血!)。
①添加一个可以显Input Error 的名为IERROR 的子程序(右图),它的数据在程序的开始段。
②当输入的字符不是0~9时,这里就修改一下,不是跳到EXIT,而是跳到INPUTE(右图),从而执行IERROR 子程序。
③在执行这个程序之前,已经判断输入的不为0~9,但是还要判断输入的是否为Enter 键(即13)。
所以加入一个判断的语句(左图),NEXT 就是继续运行程序。
这里我将SUB AL,30H 放在了后面,是为方便判断AL 是否为13。
从程序的运行结果可以看到,如果我们输入的是Enter(图中1234后面输入的就是Enter),那么程序正常执行,输出04D2;在我们输入数的过程中如果出现除0~9和13以外的数,那么程序就会输出Input Error,并且在另一行要求重新输入,并不会退出程序。
汇编语言程序设计实验报告(二)一、实验目的1)加深对循环结构的理解。
2)掌握循环程序的设计方法。
3)学习子程序的定义和调用方法。
4)掌握子程序、子程序的嵌套、递归子程序的结构。
5)掌握子程序设计、编制及调试。
6)熟练掌握DEBUG的常用命令,学会用DEBUG调试程序。
二、实验内容1)编制在屏幕上显示九九乘法表的程序。
2)编制在屏幕上显示用*组成的三角形的程序。
三、实验结果(1)(2)四、源代码(1)DA TA SEGMENTM DB 31H,32H,33H,34H,35H,36H,37H,38H,39H DA TA ENDSSTACK1 SEGMENT STACKDW 20H DUP(?)STACK1 ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TA,SS:STACK1 START:MOV AX,DA TAMOV DS,AXMOV CX,9MOV DI,OFFSET MLOP1:PUSH CXMOV CX,[DI]AND CX,0FHMOV SI,OFFSET M LOP2:MOV AL,[SI]MOV DL,ALMOV AH,2INT 21HAND AL,0FHMOV BH,ALMOV DL,'*'MOV AH,2INT 21HMOV BL,[DI]MOV DL,BLMOV AH,2INT 21HMOV DL,'='MOV AH,2INT 21HAND BL,0FHMOV AL,BHMOV AH,0MOV DL,10DIV DLMOV BL,AHCMP AL,0JE NEXTMOV DL,ALADD DL,30HMOV AH,2INT 21H NEXT:MOV DL,BLADD DL,30HMOV AH,2INT 21HMOV DL,' 'MOV AH,2INT 21HINC SILOOP LOP2MOV DL,0AHMOV AH,2MOV DL,0DHINT 21HINC DIPOP CXLOOP LOP1MOV AH,4CHINT 21HCODE ENDSEND START(2)STACK1 SEGMENT STACKDW 20H DUP(?)STACK1 ENDSCODE SEGMENTASSUME CS:CODE,SS:STACK1 BEGIN:MOV AH,1INT 21HMOV BL,ALSUB BL,30HMOV DL,0AHINT 21HMOV DL,0DHMOV AH,2INT 21HMOV BH,0MOV CX,BXMOV BX,1L1: PUSH CXMOV CX,BX L2: MOV DL,'*'MOV AH,2INT 21HLOOP L2MOV DL,0AHMOV AH,2INT 21HMOV DL,0DHMOV AH,2INT 21HADD BX,1POP CXMOV AH,4CHINT 21HCODE ENDSEND BEGIN五、实验心得这是第二次做汇编实验,首先,心理上已经没有了第一次做实验的那种茫然,知道了想要编写一个完整的程序,应当先将这一个大问题分解成若干个小的问题,找出每一个小问题所对应的解决方法,然后用代码一步一步实现,再将这一个一个的小问题串联起来,找到它们的契合点,用联系把它们组成一个完整的程序,其中最常用的就是转移指令和循环。
第二次实验二汇编语言程序设计第二次实验二汇编语言程序设计微机实验与课程设计实验报告实验二汇编语言编程姓名:学号:专业:测控技术与仪器实验室:516评定成绩:审阅教师:一、实验目的1、近一步熟悉汇编语言的编辑、宏汇编、链接和运行的基本概念2.掌握动态调试程序TD/debug的常用指令和窗口功能,学会使用TD/debug调试程序修改数据和注册环境3、熟悉掌握汇编语言程序的典型数据结构设计、典型程序控制方法,了解dos/bios 功能调用的基本方法二、实验内容(必做)2-1. 从键盘输入任何字符串,并将其存储在用户定义的存储单元中。
经过判断和处理后,将字符串中的小写字母转换为大写字母(其他字符保持不变),按原始顺序在屏幕上显示这些字符(参见程序p36),并显示字符串“thetotalnumberisxxxxx”。
2-2. 从键盘输入0到255之间的十进制数,将其转换为十六进制数,并在屏幕上显示转换前后的数据(参见程序p38)。
实验内容(选做)2-3. 在内存中定义五个十六进制有符号数(范围-128~+127)。
请将它们从大到小排序,并在屏幕上显示排序前后的数据。
三、实验源程序(主要部分)和流程图2-1、将字符串中小写字母转换为大写字母数据段inputdb100,100dup(0)str1db0dh,0ah,'请输入字符串',0dh,0ah,$'str2db0dh,0ah,'最终结果',0dh,0ah,$'str3db0dh,0ah,'总数:',0dh,0ah,$'数据结束;定义数据段stasegmentdb256dup(0)staends;定义堆栈段代码段assumecs:code,ds:data,ss:stastart:movax,datamovds,axmovax,stamovss,ax;初始化各段基址leadx,str1movah,09hint21h;显示提示字符串1leadx,输入movah,0ahint21h;输入要转换的字符串leadx、str2movah、09hint21hxorcx,cx;将cx清零movcl,输入[1];因为输入[1](即实际字符数)直接复制到CX,所以它将:;操作数宽度不匹配时出错movsi,2l1:movdl,input[si]cmpdl,61h;判断字符是否为小写jbl2cmpdl,7ahjal2subdl,20h;如果是,减去20hl2:movah,2;在21h中显示这个字符incsiloopl1;继续判断,直到CX=0,也就是说,所有字符都被转换,leadx,str3movah,09hint21h;显示字符串3movdl,input[1]adddl,30小时;将输入字符数转换为ASC II代码movah,02hint21h;显示出字符个数movah,4chint21h;程序返回codeendsendstart2-2.十进制数转换为16进制数datasegmentrightdb1inputdb4,5dup(0)outputdb00htendb0ahstring1db0dh,0ah,'请输入您的号码(0~255)'、0dh,0ah,$'string2db0dh,0ah,'数字输入(00h~ffh)'、0dh,0ah,$'string3db0dh,0ah,'数字输入(inh):'、0dh,0ah,$'string4db0dh,0ah,'数字输入(ind)'、0dh,0ah,$'dataendsstackssegmentdb256dup(0)stacksends代码段assumecs:code,ds:data,ss:stacksmainprocfarstart:movax,datamovds,axmovax,stacks莫夫斯,斧头;MOV输出,00h;movdx,offsetstring1movah,09hint21hmovdx,offsetinput;movah,0ahint21hmovright,1改变;cmpright,0;jzerrormovdx,offsetstring4movah,09hint21hmovcl,input[1]movsi,2loop1:movdl,input[si]movah,02hint21hincsiloop1;movdx,offsetstring3movah,09hint21h输出初始化各段基址清零输入数值调用转换子程序判断数值是否满足条件显示输入的十进制数字pushdxmovcl,4shrdl,clcalldisppopdx和dl,0fhcalldispjmpgoerror:movdx,offsetstring2movah,09hint21hgo:movah,4 Chint21hMainendpchangeprocnear;数值转换子程序clc;进位标志清零xorax,ax;寄存器清零xorbx,bxxordx,dxmovcl,输入[1];将位数分配给clmovsi,2;初始化Siagain:movbl,input[si];依次将每位数字赋给blcmpbl,30小时;判断是否为0~9,不对。
实验二汇编语言程序设计实验一、实验目的:1)熟悉常用的汇编语言指令2)掌握程序的顺序结构、分支结构、循环结构和子程序结构3)掌握汇编语言程序调试方法二实验内容:(一)顺序结构(以下程序至少完成一个)(1)编制计算下列表达式的程序:w=x/2-y+4*z(其中x,y,z均为带符号字节类型的数);(2)编写程序完成两个已知双精度数(4字节)A和B相加并将结果存入双精度变量单元SUM 中(不考虑溢出);(3)从键盘输入一个小写字母,将其转化为大写字母显示出来。
(二)分支结构(以下程序至少完成一个)(1)设平面上一点P的直角坐标为(X,Y),X,Y为字类型符号数,试编制若P落在第i象限内,则令k=i;若P落在坐标轴,则令k=0的程序;(2)编写一程序,把变量BUFX和BUFY中较大者存入BUFZ中,若两者相等,则把其中之一存入BUFZ中。
假设变量存放的是8位无符号数;(3)设变量BUFX为16位带符号数,将其符号状态保存在SIGNX,即如果BUGFX大于等于0,保存0;如果小于0,则保存-1。
(4)BUFX,BUFY和BUFZ是3个有符号十六进制数,编写一个比较相等关系的程序,如果这三个数都不相等,则显示0,如果3个数中有两个相等,则显示1,如果3个数都相等,则显示2.(三)循环结构(以下程序至少完成一个)(1)编程序将符号字数组ARRAYW中的正负数分别送入正数数组PLUS和负数数组MINUS中,同时把0元素的个数送入字变量ZERON;(2)编程序统计16位符号数组ARRAY中的奇数和偶数个数,将奇数个数存入EVENN中,偶数个数存入数组ODDN中。
(3)设有一个数组存放学生的成绩,编写程序统计各分数段学生人数,90-100分人数存入A中,80-89分人数存入B中,70-79分人数存入C中,60-69分人数存入D中,0-59分人数存入E中。
三、撰写实验报告,画出程序流程图,写出源程序,截图给出调试过程和运行结果。
实验报告课程名称汇编语言程序设计实验项目实验二、分支、循环程序结构和设计实验仪器微机系统、汇编调试环境系别计算机科学与技术专业计算机科学与技术班级/学号学生姓名实验日期成绩指导教师胡信裕实验二分支、循环程序结构和设计一、实验目的1.学习汇编程序设计的基本方法,掌握用汇编语言设计、编写、调试和运行程序的方法;2.熟悉汇编语言源程序的编辑和汇编、目标模块的连接以及可执行程序的调试;3.熟悉、掌握顺序结构、分支结构、循环结构程序设计和调试。
二、实验要求1.Windows操作系统并具有命令提示符操作界面的计算机,且系统内安装有汇编语言编程环境。
2.在开始本实验之前,复习教科书的相关内容,并预先写出相应的源程序。
3.通过汇编IDE上机调试,注意观察,并记录下现象。
三、实验内容(一)将键盘上输入的十六进制数转换成十进制数,在屏幕上显示【可键入任意字符,但只对十六进制数转换显示】,遇ESC键输入结束程序运行退出。
部分程序设计参考如下:【要求分析理解后加必要注释】;读键盘R_key: mov ah,01hint 21hmov dl,20hmov ah,02hint 21h;键入数处理cmp al,1bh ;’ESC’=1bhjz exitcmp al,’0’jl R_keycmp al,’9’jle D0_9cmp al,’A’jl R_keycmp al,’F’jle DA_Fcmp al,’a’jl R_keycmp al,’f’jle Da_fJMP R_key;0~9的处理D0_9:sub al,30hmov ah,0jmp disp; A(a)~F(f)的处理DA_F:add al,0fhand al,0fhmov ah,1disp: add ah,30hmov dl,ahmov ah,2int 21hadd al,30hmov dl,al;mov ah,2int 21hmov dl,0dhint 21hmov dl,0ahint 21hjmp r_keyexit: mov ax,4c00h ;mov ah,4chint 21h;retmain endpend main1.运用文本编辑器编辑实验源程序(EXP2_1.asm);2.在IDE操作环境下,对源程序(EXP2_1.asm)进行编译和连接,生成生成链接文件(EXP2_1.obj)和可执行文件(EXP2_1.exe);3.运行IDE操作环境下的调试命令,调试可执行文件(EXP2_1.exe);4.运行IDE操作环境下的执行命令,运行可执行文件(EXP2_1.exe)5.结果说明:(截图)实验结果【是/否】符合实验程序设计要求。
实验报告课程名称汇编语言程序设计实验项目实验二、分支与循环程序结构和设计实验仪器微机系统、汇编调试环境系别专业班级/学号学生姓名实验日期成绩指导教师宋平实验二分支与循环程序结构和设计一、实验目的1.学习汇编程序设计的基本方法,掌握用汇编语言设计、编写、调试和运行程序的方法;2.熟悉汇编语言源程序的编辑和汇编、目标模块的连接以及可执行程序的调试;3.熟悉、掌握顺序结构、分支结构、循环结构程序设计和调试。
二、实验要求1.Windows操作系统并具有命令提示符操作界面的计算机,且系统内安装有汇编语言编程环境;2.在开始本实验之前,复习教科书的相关内容,并预先写出相应的源程序;3.通过汇编IDE上机调试,注意观察,并记录下现象;4.学会顺序结构程序设计、分支结构程序设计、循环结构程序设计;5.通过本实验掌握汇编语言程序调试的具体步骤;6.通过查看存储单元和寄存器的内容掌握程序的运行结果。
三、实验内容1.编辑源文件【使用文本编辑器编辑具有下列功能源文件,并将该文件存入一指定的“实验文件夹”(如D:\4123\4123-2\4123-2-1.asm),分别编辑要求的源程序(共三个功能文件,涵盖顺序、分支、循环等基本程序结构)。
】2. 汇编源文件、连接目标文件,生成可执行文件操作步骤如下:(1)建立独立的实验文件夹【将源程序文件、汇编和连接工具程序(MASM.EXE、LINK.EXE)复制到同一实验文件夹】(2)TPC-USB集成开发环境【参阅“TPC-USB学生实验指导书.pdf”文档第21页开始处的说明】(3)汇编与连接操作【参阅“TPC-USB学生实验指导书.pdf”文档第21页开始处的说明当汇编和连接后出现错误提示时,请按提示位置和信息修改后保存,并重新执行汇编和连接,直至没有严重错误。
】3. 调试【参阅“TPC-USB学生实验指导书.pdf”文档用TPC-USB集成开发环境中的编译连接、启动调试/执行、单步执行、跳过、连续执行等命令调试程序,观察指令执行过程中各语句执行后的状况及程序运行结果。
目录系统认识 (1)实验一数码转换编程及程序调试 (5)实验二运算类编程实验 (11)实验三分支程序、循环程序设计实验 (16)实验四子程序设计实验 (22)实验五显示程序实验 (26)实验六串行通讯应用实验 (27)附录WMD86 联机软件使用说明 (40)系统认识一、实验目的掌握TD-PITE微机原理与接口技术教学实验系统的操作,熟悉Wmd86联机集成开发调试软件的操作环境。
二、实验设备PC微机一台,TD-PITE实验装置一套。
三、实验内容编写实验程序,将00H~0FH共16个数写入内存3000H开始的连续16个存储单元中。
四、实验步骤1. 运行Wmd86软件,进入Wmd86集成开发环境。
2. 根据程序设计使用语言的不同,通过在“设置”下拉列表来选择需要使用的语言,如图1所示。
语言选择后,下次再启动软件,语言环境保持这次的修改不变。
在这里,我们选择汇编语言。
图13. 语言选择后,点击新建或按Ctrl+N组合键来新建一个文档,如图2所示。
默认文件名为Wmd861。
图24. 编写实验程序,如图3所示,并保存,此时系统会提示输入新的文件名,输完后点击保存。
图3程序:SSTACK SEGMENT STACK ;定义堆栈段DW 32 DUP(?)SSTACK ENDSCODE SEGMENTASSUME CS:CODE, SS:SSTACKSTART: PUSH DSXOR AX, AXMOV DS, AXMOV SI, 3000H ;建立数据起始地址MOV CX, 16 ;循环次数AA1: MOV [SI], ALINC SI ;地址自加1INC AL ;数据自加1LOOP AA1AA2: JMP AA2CODE ENDSEND START5. 点击,编译文件,若程序编译无误,则输出如图4所示的输出信息,然后再点击进行链接,链接无误输出如图5所示的输出信息。
图4图56. 连接PC与实验系统的通讯电缆,打开实验系统电源。