实验一基础汇编语言程序设计
- 格式:doc
- 大小:318.00 KB
- 文档页数:11
实验一基础汇编语言程序设计
一、实验目的
1、学习和了解TEC-XP教学实验系统监控命令的用法;
2、学习和了解TEC-XP教学实验系统的指令系统;
3、学习简单的TEC-XP教学实验系统汇编程序设计;
二、实验内容
1、学习练级使用TEC-XP教学实验系统和仿真终端软件PCEC。
2、使用监控程序R命令显示/修改寄存器内容、D命令显示存储器内容、E命令修改存储器内容;
3、使用A命令写一小段汇编程序,U命令反汇编刚输入的程序,用G命令连续运行改程序,用T、P命令单步运行并观察程序单步执行情况;
三、实验步骤
1、用R命令查看寄存器内容或修改寄存器的内容
2、用D命令显示存储器内容
3、用E命令修改存储器内容
4、用D命令显示着几个单元的内容
5、用A命令键入一段汇编源程序,主要是向累加器送入数据和进行运算,执行程序并观察运行结果。
1)
2)
3)
4)
6、举例编写汇编程序,用“A”命令输入,运行并观察结果
1)、例1:设计一个小程序,从键盘上接受一个字符并在屏幕上输出显示该字符。
2)、例2:设计一个小程序,用次数控制在终端屏幕上输出‘0’到‘9’十个数字符。
实验一单指令功能测试实验一、实验目的1.会使用DEBUG软件;2.利用DEBUG单步执行功能测试指令的执行。
二、实验内容P129,14题三、实验要求:1. 在上机实验之前,首先做完作业;2. 设计如何验证指令执行的正确性操作,并在作业中描述;3. 周五上机验证,并给出上机结果。
若有出入,简要说明原因。
4. 实验报告当堂提交。
实验二完整的汇编语言程序设计实验一、实验目的1.掌握完整的汇编语言源程序的设计方法;2.掌握汇编语言源程序的执行过程。
二、实验内容设计一个程序,将所有的小写字母转换为大学字母,此程序不能改变除字母a~z外的任何其它字符。
三、实验要求(结果)1. 在上机实验之前,首先编写程序;2. 周一上机调试程序,并给出修改、运行正确的源程序;3. 分析错误原因;4. 实验报告当天提交。
实验三子程序设计实验一、实验目的1.掌握汇编语言源程序子程序设计方法;2.会使用CV软件工具。
二、实验内容编写子程序:判断三边能否构成三角形;编写主程序:输入三边,调用子程序判断,若能,则输出“Y”,否则输出“N”。
共判断10次。
三、实验要求同实验二。
实验四 宏汇编程序设计实验一、实验目的1.掌握宏汇编程序编程技术及宏调用的方法;2. 了解浮点CPU 编程方法及特点。
二、实验内容求(1+2+3+4+5+6+7+8+9)⨯LC π21的和。
三、实验要求1. 利用重复宏定义实现1、2、3⋯9数据的定义;2. 编写程序,上机验证结果的正确性。
3. 其它要求同前。
实验五 多模块程序设计实验一、实验目的1.掌握汇编段的属性的含义;2. 掌握利用LINK 将多模块连接起来的方法;3.掌握利用库文件将多模块连接起来的方法。
二、实验内容将字符串反序。
具体要求:1. 子模块:完成反序。
2. 主模块:输入字符串,调用子模块,显示反序后字符串。
3. 用 LINK 或库文件的方法实现多模块连接。
4. 其他要求同前。
实验六 混合程序的开发实验一、实验目的1.了解混合调用中的参数设置;2. 掌握混合调用的方法;二、实验内容求(1+2+3+4+5+6+7+8+9)⨯LC π21的和,并将和显示在屏幕上;具体要求:1. 用汇编语言完成子程序LC π21的编程;2. 通过C++完成实验内容的要求。
汇编语言程序设计实验报告课程名称汇编语言程序设计班级姓名学号指导教师汇编语言程序设计实验一DEBUG 程序使用技巧1.寄存器和内存开始Debug 程序。
输入“Q ” 退出程序。
再次启动Debug。
输入“r ”来显示CPU的当前状态和寄存器中的当前内容。
输入“r AX ”和“1234”,AX 寄存器中的内容变为1234。
输入“r DS ”和“2000”,DS 寄存器中的内容变为2000。
输入“d DS:1000 ”来显示数据段中80H 字节数据,把数据抄在这里:输入“f DS:1000 1100 77 ”再显示一次这80H 字节。
判断这条指令的作用是什么?答:从DS:1000地址七,将1100H字节的内容赋值为77H再输入“d 2000:1000 ”来显示数据段中80H 字节数据。
观察与前面的数据有无不同。
输入“d 1900:0100 ”和“d 1ff0:0100 ”来显示两个存储段中的内容。
比较其中2000:0000 段中的数据。
相同段落中的数据相同么?根据你的观察,得出结论,是否程序员可以用不同的段起始地址和偏移量组合,把不容内容存入相同的内存段中。
答:相同段落中的数据相同, 程序员可以用不同的段起始地址和偏移量组合,把不容内容存入相同的内存段中。
2.输入机器码,使用单步和断点退出Debug,再重新启动Debug。
输入“r ”观察CPU 的状态,下一条指令是什么?答:下一条指令是ADD [BX+SI],AL使用两种方式输入一段程序,第一种方式:直接输入机器码。
输入“u ”来显示程序段中的指令序列。
然后输入“d CS:100 ” 来显示代码段中的数据。
观察显示内容。
“u CS:100 106 ”做反汇编,就是显示出汇编语句。
将这几句汇编语句记录下来:使用输入“r ”观察CPU 的状态,使用“t ”来跟踪程序,直至最后一条指令执行完毕。
注意,跟踪程序前,要让IP 寄存器中的值是100H。
一直监视AX 和IP 寄存器的内容变化,尤其是标志位的变化。
实验1 简单汇编语言程序设计一、实验目的与要求1.熟悉汇编语言运行、调试环境及方法。
2.掌握简单汇编语言程序的设计方法。
3.熟悉调试工具DEBUG,并运用DEBUG 工具调试程序。
二、实验容根据以下要求,编写汇编源程序,汇编连接汇编源程序,并利用DEBUG 工具调试程序,验证程序的正确性。
1. 假设X、Y、R、W 是存放8 位带符号数字节单元的地址,Z 是16 位字单元的地址。
试编写汇编程序,完成Z((W X) 5Y)(R2) 。
2.试编写一个程序,测试某数是否是奇数。
如该数是奇数,那么把DL 的第0 位置1,否那么将该位置0。
三、实验报告要求1.程序算法流程图。
2.源程序清单。
3.程序运行结果。
4.调试过程中遇到的问题和解决的方法。
实验2 分支及循环程序设计一、实验目的与要求1.熟悉汇编语言运行、调试环境及方法。
2.掌握分支程序和循环程序的设计方法。
3.熟悉调试工具DEBUG,并运用DEBUG工具调试程序。
二、实验容根据以下要求,编写汇编源程序,汇编连接汇编源程序,并利用DEBUG工具调试程序,验证程序的正确性。
1.编写汇编程序,统计某存储区假设干个数据中英文字母的个数,并将结果在屏幕上显示。
2.从键盘任意输入一组字符数据,请编写汇编程序将该组数据加密后在屏幕上显示。
参考加密方法是:每个数乘以2。
〔说明:此题的加密方法,同学们可以自己拟定〕三、实验报告要求1.程序算法流程图。
2.源程序清单。
3.程序运行结果。
4.调试过程中遇到的问题和解决的方法。
实验3 子程序程序设计一、实验目的与要求1.熟悉汇编语言运行、调试环境及方法。
2.掌握子程序的设计方法。
3.熟悉调试工具DEBUG,并运用DEBUG工具调试程序。
二、实验容根据以下要求,编写汇编源程序,并利用DEBUG工具调试程序,验证程序的正确性。
1.编程以十进制形式和十六进制形式显示AX的容,并把两个显示功能分别封装成子程序dispDEC和dispHEX。
汇编语言程序设计实验1——汇编程序与调试器的使用一、实验目的熟悉DOS操作系统环境下的汇编程序MASM的使用、掌握DEBUG的基本命令及其功能。
二、实验内容1.编写一个小程序,从键盘接收一个大写字母,存放到指定的内存单元BUFF1,并转换其为对应的小写字母,存放到指定的内存单元BUF2中。
上机编辑、汇编、连接并运行该程序。
2. 输入源程序、汇编、连接并执行相应程序,并用DEBUG 实现以下操作:(1)用反汇编命令查看相应程序的可执行语句序列,分析其与源程序的异同,查看相应程序占用内存单元的字节数。
(2)用数据查看命令查看执行前的数据单元的内容。
(3)分别用P命令和T命令逐步执行程序,分析这两种方式的区别,记录“转换为小写字母”指令执行后的状态字。
(4)查看程序执行后数据单元的内容。
(5)查看0000:0000 起始的32个单元的内容。
(6)用汇编命令编写一个简单加法程序“3+5=8”,加数和结果分别存在内存单元NUM1、NUM2、NUM3中。
三、实验要求学生要提前做好相关内容的预习(包括源程序的分段组织、DEBUG的系列命令等),熟悉被调试的程序(学生应当在本实验中自行设计一些汇编语言程序,其目的是熟悉相关编程环境的特性),并对程序的测试/调试过程(包括所用的编程环境命令、DEBUG命令等)作出详细计划。
认真完成实验,正确记录各项数据,记录实验过程中出现的问题及其解决过程。
四、实验报告写出各实验程序的测试/调试的详细过程(包括DEBUG命令的使用等),特别是要写出在DEBUG状态下编写、运行程序的过程。
要系统给出各程序在测试/调试过程中所遇到的问题、解决问题的方法与途径。
要对程序在测试/调试过程中的问题进行分析,对相关的执行结果进行分析。
重庆师范大学涉外商贸学院计算机各专业实验用书汇编语言程序设计实验指导书(第一版)张开成编前言为适应教学内容由简到繁、由易到难、由浅入深的教学特点,我们编写了这本简易实验指导书,用以指导实验教学。
该指导书分两部分,第一部分指出实验的实验目的、实验内容、实验准备、实验要求、共提出十五个实验,需三十个学时完成。
第二部分为十五个实验的全部程序,仅供学生参考。
该实验指导书由数计学院计算机教研室张开成同志编写。
2010年2月第一部分提出各实验的实验内容、实验目的、实验要求和学时分配实验一:汇编语言基本操作实验(2学时)一、实验目的:明确QE、MASM、LINK三个系统软件的作用。
掌握汇编语言程序的编辑、汇编、连接过程。
二、实验内容:1、编写一个程序:用十进制输出一个按键的AS CⅡ值。
2、从键盘上读入两个一位数(必须保证按下数字键),输出它们的积。
三、实验准备:1、预习QE、MASM、LINK 三个软件的使用方法。
2、按实验要求,编写好实验源程序。
四、实验步骤:1、用QE编辑扩展名为.ASM的源文件。
2、汇编、连接生成扩展名为.EXE的可执行文件。
3、运行程序。
五、实验报告要求:1、总结用QE编辑源程序的方法。
2、说明源程序的连接、汇编过程。
3、分析运行结果。
4、按要求写出完整的实验报告(必须列出程序清单)。
实验二:分支程序设计实验(2学时)一、实验目的:1、学会简单分支和多分支程序的设计方法。
2、掌握程序的调试方法。
二、实验内容:1、从键盘读入两个一位数,输出它们的积。
若为非数字键,则显示字符“E”,退出程序。
2、从键盘接收一个按键,如为小写字母,则显示“L”,是大写字母,则显示“U”,如是数字,则显示“N”,都不是则显示“*”。
三、实验准备:1、预习分支程序设计方法。
2、按实验内容要求,编写好实验源程序。
四、实验步骤:1、用QE编辑扩展名为.ASM的源文件。
2、汇编、连接生成可执行文件.EXE。
3、运行程序。
实验一汇编语言程序设计EMU8086基础实验1、实验目的和要求:了解使用EMU8086(8086汇编模拟工具)学习汇编的方法。
2、实验内容:编写汇编程序,计算2010H+2011H,并把和存入RESULT单元。
8086汇编模拟工具,结合了一个先进的原始编辑器、汇编器、反汇编器、具除错功能的软体模拟工具(虚拟 PC),还有一个循序渐进的指导工具。
这对刚开始学汇编语言的人会是一个很有用的工具。
它会在模拟器中一步一步的编译程式码并执行,视觉化的工作环境让它更容易使用。
你可以在程式执行当中检视暂存器、标志以及内存。
模拟器会在虚拟 PC 中执行程式,这可以隔绝你的程式,避免它去存取实际硬体,像硬盘、内存,而在虚拟机器上执行汇编程序,这可以让除错变得更加容易。
3、实验仪器与器材:计算机及EMU8086汇编软件等。
4、实验原理:自己总结5、实验过程与测试数据(含电路图/程序框图):A、打开EMU8086 v4.08软件,新建工程,选EXE模板,清屏,编写8086程序代码。
B、保存程序代码为*.asm文件,编译保存为可执行文件.exe,编译保存没有错误则模拟运行。
如果有错误返回修改。
运行有单步运行、全速运行等。
实验一参考程序DATA SEGMENTX DW 2010HY DW 2011HRESULT DW ?DATA ENDSCODE SEGMENTMAIN PROC FARASSUME CS:CODE,DS:DATASTART: PUSH DSMOV AX,0PUSH AXMOV AX,DATAMOV DS,AXMOV AX,XADD AX,YMOV RESULT,AXRETMAIN ENDPCODE ENDSEND START6、实验分析:自己分析7、实验体会自己总结。
实验一汇编语言上机环境及基本操作一、实验目的及要求1.学习及掌握汇编语言源程序的书写格式和要求,明确程序中各段的功能和相互之间的关系。
2.学会使用EDIT、MASM、LINK、DEBUG等软件工具。
3.熟练掌握在计算机上建立、汇编、连接、调试及运行程序的方法。
二、实验内容1.汇编语言源程序的建立本例中给出的程序是要求从内存中存放的10个无符号字节整数数组中找出最小数,将其值保存在AL寄存器中。
设定源程序的文件名为ABC。
DATA SEGMENTBUF DB 23H,16H,08H,20H,64H,8AH,91H,35H,2BH,7FHCN EQU $-BUFDATA ENDSSTACK SEGMENT STACK ’STACK’STA DB 10 DUP(?)TOP EQU $-STASTACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART: PUSH DSXOR AX,AXPUSH AXMOV AX,DATAMOV DS,AXMOV BX,OFFSET BUFMOV CX,CNDEC CXMOV AL,[BX]INC BXLP: CMP AL,[BX]JBE NEXTMOV AL,[BX]NEXT: INC BXDEC CXJNZ LPMOV AH,4CHINT 21HCODE ENDSEND START键入以下命令:C:\>EDIT ABC.ASM此时屏幕的显示状态如图1所示。
图1 用EDIT编辑ABC.AS M程序窗口程序输入完毕后一定要将源程序文件存入盘中,以便进行汇编及连接,也可以再次调出源程序进行修改。
2.将源程序文件汇编成目标程序文件一般情况下,MASM汇编程序的主要功能有以下3点:(1)检查源程序中存在的语法错误,并给出错误信息。
(2)源程序经汇编后没有错误,则产生目标程序文件,扩展名为.OBJ。
(3)若程序中使用了宏指令,则汇编程序将展开宏指令。
汇编语言编程实验报告汇编语言程序设计实验报告(一)汇编语言程序设计实验报告(一)一、预备知识汇编语言程序设计是一门实践性很强的课程。
编写程序、上机调试、运行程序是进一步学习和掌握汇编语言程序设计的必要手段。
二、实验目的1、掌握实验运行汇编语言所用的计算机机型2、熟悉常用编辑程序(行编辑程序EDLIN、全屏幕编辑程序QE及其它用于文件编辑的应用程序。
)3、掌握汇编程序ASM、宏汇编程序MASM1.0以上。
4、LINK连接程序5、DEBUG调试程序三、汇编语言源程序上机操作过程2、编辑源文件根据给定的任务,可编写程序。
如果经过检查认为所编程序无错时,就可在计算机上通过编辑程序建立源程序文件了。
一般在编辑过程中总会有错误产生,因此还要进行人工检查、修改以致重新编辑,直到所编辑的源程序无误为止,然后以一个源程序文件(ASM文件)存盘。
将包含QE文件的工作磁盘插入驱动器A:。
进入QEA\QE进入全屏幕后可以开始编程。
文件名取为Myprog。
asm;Ddisplystring (09H)CODESEGMENTPUBLICASSUME CS:CODE,DS:CODEORG 100HSTART:JMP BEGINMSG DB‘Hi ! This ia a dollar sign terminated string.’,’$’BEGIN:MOV AX,CS ;set up to display messageMOV DS,AXMOV DX,OFFSET,SG ;set up to display messageMOV AH,09H;display string function requestINT 21H ;call DOSMOV AH ,4CH ;terminate propram funct requestINT 21H ;Call DOSCODE ENDS;end of code segmentEND START;strat is the entry point输入完毕后,按ALT---X,存盘返回DOS3、汇编源程序文件(ASM,MASM)由编辑程序所建立的ASM文件只是个文本文件,计算机无法执行。
实验基础汇编语言程序设计基础汇编语言程序设计是计算机科学与技术专业中的一门重要课程,它主要介绍了计算机汇编语言的基本概念、指令格式以及程序设计方法。
在这门课程中,学生将通过一系列实验来学习和掌握基础汇编语言程序设计的技能。
一、实验目的和要求本实验的主要目的是让学生通过实际操作,了解和掌握基础汇编语言的编写和调试技巧。
具体要求如下:1.学生能够理解和掌握汇编程序的结构和执行过程。
2.学生能够掌握汇编指令的基本格式和使用方法。
3.学生能够完成基础汇编程序的编写和调试。
二、实验内容和步骤本实验将设计两个基础汇编程序,分别是计算一个整数的平方和计算一个整数的阶乘。
具体步骤如下:1.实验一:计算一个整数的平方(1)程序设计思路:-通过输入一个整数,将其存储在寄存器中;-将寄存器中的整数与自身进行乘法运算;-将结果存储在另一个寄存器中;-输出结果。
(2)程序设计步骤:a.定义数据段和堆栈段;b. 定义变量:整数num和结果result;c.通过输入指令将一个整数存储在寄存器中;d. 通过MOV指令将该寄存器中的整数存储在变量num中;e. 通过MUL指令将变量num与自身相乘,结果存储在寄存器中;f. 通过MOV指令将寄存器中的结果存储在变量result中;g.通过输出指令将结果输出。
2.实验二:计算一个整数的阶乘(1)程序设计思路:-通过输入一个整数,将其存储在寄存器中;- 定义一个变量result并初始化为1;-循环执行乘法运算,将结果存储在寄存器中;- 将结果存储在变量result中;-输出结果。
(2)程序设计步骤:a.定义数据段和堆栈段;b. 定义变量:整数num和结果result;c.通过输入指令将一个整数存储在寄存器中;d. 通过MOV指令将该寄存器中的整数存储在变量num中;e.通过MOV指令将立即数1存储在寄存器中;f.通过循环指令循环执行乘法运算,将结果存储在寄存器中;g. 通过MOV指令将寄存器中的结果存储在变量result中;h.通过输出指令将结果输出。
实验报告实验名称汇编语言程序设计||专业班级:信息安全学号:姓名:实验一汇编语言上机过程和Debug常用调试命令一.实验目的:学习程序设计的基本方法和技能,熟练掌握用汇编语言设计、编写、调试和运行程序的方法。
二.实验题目:熟悉与实验有关的系统软件(如编辑程序、汇编程序、连接程序和调试程序等)的使用方法。
在调试过程中,学习及掌握debug程序的各种操作命令。
三.问题描述:试编写一程序:比较两个字符串string1和string2所含的字符是否相同,若相同则显示‘match’; 否则,显示‘no match’。
四.方法说明:a) 使用ws、tc或EDIT编辑程序来建立源文件,然后存盘,使系统返回DOS。
b) 用汇编程序masm(或asm)对源文件汇编产生目标文件obj如:汇编指示出错则需重新调用编辑程序修改错误,直至汇编通过为止。
c) 用连接程序link 产生执行文件EXE.d) 执行程序,可直接从DOS执行程序。
e) 使用debug程序调试程序的方法。
五.实验步骤:1.调用字处理程序EDIT 建立以sample.asm文件datarea segmentstring1 db ‘move the cursor backward.’string2 db ‘move the cursor backward.’mess1 db ‘Match..’,13,10,’$’mess2 db ‘No match!..’,13,10,’$’datarea endsprognam segmentmain proc farassume cs:prognam,ds:datarea,es:datarea start:push dssub ax,axpush axmov ax,datareamov ds,axmov es,axlea si,string1lea di,string2cldmov cx,25repz cmpsbjz matchlea dx,mess2jmp short dispmatch:lea dx, mess1disp:mov ah,09int 21hretmain endpprognam endsend start2.对源文件汇编产生目标文件obj D:\masm 文件名。
汇编实验心得体会在学习计算机组成原理的过程中,汇编语言是一个非常重要的环节。
通过学习汇编语言,我们可以更深入地了解计算机的工作原理,从而更好地理解高级语言的运行机制。
在学习汇编语言的过程中,实验是非常重要的一部分。
通过实验,我们可以更加深入地理解汇编语言的运行机制,同时也可以提高我们的实践能力。
在这篇文章中,我将分享我在学习汇编语言实验过程中的心得体会。
实验一:汇编语言程序设计在实验一中,我们需要编写一个简单的汇编语言程序,实现对两个数的加法运算。
这个实验对于初学者来说比较简单,但是也有一些需要注意的地方。
首先,我们需要了解汇编语言的基本语法。
在汇编语言中,每一条指令都是由操作码和操作数组成的。
操作码用来表示指令的功能,操作数则用来指定操作的对象。
在编写汇编语言程序时,我们需要注意指令的顺序和操作数的使用。
其次,我们需要了解汇编语言的寻址方式。
在汇编语言中,寻址方式有直接寻址、寄存器寻址、间接寻址等多种方式。
不同的寻址方式对应不同的指令格式,我们需要根据具体的情况选择合适的寻址方式。
最后,我们需要注意程序的调试和测试。
在编写汇编语言程序时,我们需要不断地进行调试和测试,确保程序的正确性。
在调试和测试过程中,我们可以使用调试器或者打印输出等方式来查看程序的执行结果,从而找到程序中存在的问题。
实验二:汇编语言程序调试在实验二中,我们需要使用调试器来调试一个汇编语言程序。
这个实验对于初学者来说比较难,需要一定的耐心和技巧。
首先,我们需要了解调试器的基本操作。
在调试器中,我们可以设置断点、单步执行、查看寄存器和内存等操作。
这些操作可以帮助我们更加深入地了解程序的执行过程,从而找到程序中存在的问题。
其次,我们需要注意程序的调试技巧。
在调试程序时,我们需要注意程序的执行顺序和变量的值。
通过设置断点和单步执行等操作,我们可以逐步地了解程序的执行过程,从而找到程序中存在的问题。
最后,我们需要注意程序的测试和验证。
实验一基础汇编语言程序设计一、实验目的:1、学习和了解TEC-XP16教学实验系统监控命令的用法。
2、学习和了解TEC-XP16教学实验系统的指令系统。
3、学习简单的TEC-XP16教学实验系统汇编程序设计。
二、预习要求:1、学习TEC-XP16机监控命令的用法。
2、学习TEC-XP16机的指令系统、汇编程序设计及监控程序中子程序调用。
3、学习TEC-XP16机的使用,包括开关、指示灯、按键等。
4、了解实验内容、实验步骤和要求。
三、实验步骤:使用监控程序的A命令,逐行输入并直接汇编单条的汇编语句,之后使用G命令运行这个程序。
缺点是不支持汇编伪指令,修改已有程序源代码相对麻烦一些,适用于建立与运行短小的汇编程序。
四、实验内容:1、输入下列各汇编程序段,将结果调试出来,并回答问题。
程序1:A 2000↙2000: IN 81SHR R0SHR R0JRNC 2000IN 80OUT 80RET注意:在十六位机中,基本I/O接口的地址是确定的,数据口的地址为80,状态口的地址为81。
问题:⑴该程序段的功能是什么?程序2:>A 2060↙2060:MVRD R1,0000MVRD R2,00OAMVRD R3,00002066:INC R3ADD R1,R3CMP R3,R2JRNZ 2066RET问题:⑴该程序段的功能是什么?⑵如何察看结果?结果是什么?⑶请用一字长的指令替换程序中的MOV R3,0 写出该语句。
程序3:用次数控制在终端屏幕上输出'0'到'9'十个数字符。
>A 2020↙2020:MVRD R2,00OA ;送入输出字符个数MVRD R0,0030 ;“0”字符的ASCII 码送寄存器R0OUT 80 ;输出保存在R0 低位字节的字符DEC R2 ;输出字符个数减1JRZ 202E ;判10个字符输出完否,已完,则转到程序结束处PUSH R0 ;未完,保存R0 的值到堆栈中2028: IN 81 ;查询接口状态,判字符串行输出完成否,SHR R0 ;JRNC 2028 ;未完成, 则循环等待POP R0 ;已完成, 准备输出下一字符并从堆栈恢复R0 的值INC R0 ;得到下一个要输出的字符JR 2024 ;转去输出字符202E: RET问题:⑴若把IN 81, SHR R0, JRNC 2028 三个语句换成4个MVRR R0,R0 语句, 该程序执行过程会出现什么现象? 试分析并实际执行一次。
实验一基础汇编语言程序设计实验目的1.学习和了解TEC-XP十六位机监控命令的用法;2.学习和了解TEC-XP十六位机的指令系统;3.学习简单的TEC-XP十六位机汇编程序设计。
实验内容1.使用监控程序的R命令显示/修改寄存器内容、D命令显示存储器内容、E命令修改存储器内容;2.使用A命令写一小段汇编程序,U命令反汇编刚输入的程序,用G命令连续运行该程序,用T、P命令单步运行并观察程序单步执行情况。
3.学习联机使用TEC-XP教学试验系统和仿真终端软件。
实验要求在使用该教学机之前,应先熟悉教学机的各个组成部分及其使用方法。
实验步骤1.关闭电源,将大板上的COMl口与PC机的串口相连;2.接通电源,在PC机上运行PCEC.EXE文件,设置所用PC机的串口为“l”或“2”,其它的设置一般不用改动,直接回车即可;3.置控制开关为001110(连续、内存读指令、组合逻辑、16位、联机),开关拨向上方表示“1”,拨向下方表示“0”,“X”表示任意。
其它实验相同;4.按一下“RESET”按键,再按一下“START”’按键,主机上显示:5.用R命令查看寄存器内容或修改寄存器的内容1.用R命令查看寄存器或修改寄存器内容1)在命令行提示符状态下输入:R↙;显示寄存器的内容注:寄存器的内容在运行程序或执行命令后会发生变化。
2)在命令行提示符状态下输入:R R0↙;修改寄存器R0的内容,被修改的寄存器与所赋值之间可以无空格,也可有—个或数个空格主机显示:寄存器原值:xxxx在后面输入新的值0036再用R命令显示寄存器内容,则R0的内容变为0036。
2.用D命令显示存储器内容在命令行提示符状态下输入:D 2000↙会显示从2000H地址开始的连续128个字的内容;连续使用不带参数的D命令,起始地址会自动加128(即80H)。
3.用E命令修改存储器内容在命令行提示符状态下输入:E 2000↙屏幕显示:2000 xxxx(地址单元的原有内容):(光标在此闪烁等待输入)输入0000(提示快捷使用方法:用E命令连续修改内存单元的值时,每修改完—个,按一下空格键,系统会自动给出下一个内存单元的值,等待修改;按回车键则退出E命令。
)依次改变地址单元2001~2005的内容为:1111 2222 3333 4444 5555用D命令显示这几个单元的内容D 2000↙可以看到这六个地址单元的内容变为0000 1111 2222 3333 4444 5555。
8.用A命令键入一段汇编源程序,主要是向累加器送入数据和进行运算,执行程序并观察运行结果。
1)在命令行提示符状态下输入:A 2000↙;表示该程序从2000H(内存RAM区的起始地址)地址开始屏幕将显示:2000:输入如下形式的程序:2000:MVRD R0,AAAA;MVRD与R0之间只有一个空格,其他指令相同2002:MVRD R1,55552004:ADD R0,R12005:AND R0,R12006:RET;程序的最后一个语句,必须为RET指令2007:↙;直接敲回车键,结束A命令输入程序的操作过程若输入有误,系统会给出提示并显示出错地址,用户只需在该地址重新输入正确的指令即可。
2)用U命令反汇编刚输入的程序在命令行提示符状态下输入:U 2000↙在相应的地址会得到输入的指令及其操作码。
注:连续使用不带参数的U命令时,将接着从上一次反汇编的最后一条语句之后继续反汇编。
3)用G命令运行前面刚键入的源程序G 2000↙程序运行结束后,观察程序的运行结果,记录寄存器R0和R1的值。
4)用P或T命令,单步执行这段程序,观察指令执行结果在命令行提示符状态下输入:T 2000↙T↙T↙T↙用P命令执行过程同上。
注:T总是执行单条指令,但执行P命令时,则把每一个CALL语句连同被调用的子程序一次执行完成。
T、P命令每次执行后均显示所有通用寄存器及状态寄存器的内容,并反汇编出下一条将要执行的指令。
7.举例编写汇编程序,用“A”命令输入,运行并观察结果1)例1:设计一个小程序,从键盘上接收一个字符并在屏幕上输出显示该字符。
<1>在命令行提示符状态下输入:A 2000↙屏幕将显示:2000:输入如下形式的程序:2000:IN 81;判断键盘上是否按了一个键2001:SHR R0;即串行口是否有了输入的字符2002:SHR R02003:JRNC 2000;未输入完则循环测试2004:IN 80;接收该字符2005:OUT 80;在屏幕上输出该字符2006:RET;每个用户程序都必须用RET指令结束2007:↙;(按回车键即结束输入过程)<2>用“G”命令运行程序在命令行提示符状态下输入:G 2000↙执行上面输入的程序。
光标闪烁等待输入,用户从键盘键入字符后,屏幕会显示该字符。
该例建立了一个从主存2000H地址开始的小程序。
在这种方式下,所有的数字都约定使用16进制数,故数字后不用跟字符H。
每个用户程序的最后一个语句一定为RET汇编语句。
因为监控程序是选用类似子程序调用方式使实验者的程序投入运行的,用户程序只有用RET语句结束,才能保证程序运行结束时能正确返回到监控程序的断点,保证监控程序能继续控制教学机的运行过程。
2)例2:设计一个小程序,用次数控制在终端屏幕上输出‘0’到‘9’十个数字符。
<1>在命令行提示符状态下输入:A 2020↙屏幕将显示:2020:从地址2020H开始输入下列程序:2020:MVRD R2,000A ;送入输出字符个数2022:MVRD R0,0030;“0”字符的ASCII码送寄存器R02024:OUT 80;输出保存在R0低位字节的字符2025:DEC R2;输出字符个数减1,置状态位Z2026:JRZ 202E;判10个字符输出完否,已完,则转到程序结束处;R2=0,即z=1时,跳转到202E2027:PUSH R0;未完,保存R0的值到堆栈中,为了将状态字送入R02028:IN 81;查询接口状态,判字符串行输出完成否,2029:SHR R0;R0右移一位,将移出的一位送入状态位C202A:JRNC 2028;未完成,则循环等待,C=0时跳转202B:POP R0;已完成,准备输出下一字符并从堆栈恢复R0的值202C:INC R0;得到下一个要输出的字符R0+1202D:JR 2024;转去输出字符,无条件转移202E:RET202F:↙该程序的执行码放在2020H起始的连续内存区中。
若送入源码的过程中有错,系统会进行提示,等待重新输入正确的汇编语句。
输入过程中,在应输入语句的位置直接打回车则结束输入过程。
<2>用“G”命令运行程序在命令行提示符状态下输入:G 2020↙记录执行结果:【思考题】当把IN 81,SHR R0,JNC 2028三条语句换成3个MVRR R0,R0语句,该程序执行过程会出现什么现象?试分析并实际执行一次。
类似的,若要求在终端屏幕上输出‘A’到‘Z’共26个英文字母,应如何修改例2中给出的程序?请验证之。
将程序写入实验报告。
例3:从键盘上连续打入多个属于‘0’到‘9’的数字符并在屏幕上显示,遇非数字符结束输入过程。
<1>在命令行提示符状态下输入:A 2040↙屏幕将显示:2040:从地址2040H开始输入下列程序:(2040)MVRD R2,0030;用于判数字符的下界值,‘0’的ASCII码MVRD R3,0039;用于判数字符的上界值,‘9’的ASCII码(2044)IN 81;判键盘上是否按了一个键SHR R0;即串行口是否有了输入的字符SHR R0JRNC 2044;没有输入则循环测试IN 80;输入字符到R0的低字节MVRD R1,00FFAND R0,R1;R0的高位字节内容清零(R0的高字节可能原来的值不为零)CMP R0,R2 ;判输入字符≥字符‘0’否,R0-R2,置状态位CJRNC 2053;若为否,则转到程序结束处,C=0,跳转CMP R3,R0;判输入字符≤字符‘9’否JRNC 2053;若为否,则转到程序结束处OUT 80;输出刚输入的数字符JMPA 2044;转去程序前边2044处等待输入下一个字符,无条件跳到2044(2053)RET<2>在命令行提示符状态下输入:G 2040↙光标闪烁等待键盘输入,若输入0~9十个数字符,则在屏幕上回显;若输入非数字符,则屏幕不再显示该字符,出现命令提示符,等待新命令。
【思考题】从2000H开始,一次存入0-9、a-z、A-Z。
程序如下:A 2100MVRD R10,000AMVRD R15,2000MVRD R0,0030TABLE_10 STRR [R15],R0INC R15INC R0DEC R10JRNZ TABLE_10MVRD R10,001AMVRD R0,0041TABLE_10 STRR [R15],R0INC R15INC R0DEC R10JRNZ TABLE_10MVRD R10,001AMVRD R0,0061 TABLE_10 STRR [R15],R0INC R15INC R0DEC R10JRNZ TABLE_10RET执行结果如下:实验总结:通过本次试验,学习了联机使用TEC-XP试验系统和仿真终端软件PCEC。
学习使用基本汇编语言及简单使用汇编语言编写程序,感受到了汇编语言的美妙。
实验中遇到的问题有:程序执行前需要进行反汇编,但每次总是忘记,故造成实验结果错误。