1 / 22

基础汇编语言实验

基础汇编语言实验. 许昌学院 计算机科学与技术学院. 实验目的. 1 、学习和了解 TEC-2000 十六位机监控命令的用法 2 、学习和了解 TEC-2000 十六位机的指令系统 3 、学习简单的 TEC-2000 十六位机汇编程序设计.

ceri
Download Presentation

基础汇编语言实验

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 基础汇编语言实验 许昌学院 计算机科学与技术学院

  2. 实验目的 • 1、学习和了解TEC-2000十六位机监控命令的用法 • 2、学习和了解TEC-2000十六位机的指令系统 • 3、学习简单的TEC-2000十六位机汇编程序设计

  3. TEC-2000A教学计算机的操作与使用方法,主要指通过由监控程序提供的监控命令控制教学计算机的运行功能。教学计算机处于正常运行状态时,它通过串行接口和PC机仿真终端相连接,通过常用的A、D等监控命令可以进行联机操作。这些监控命令,实现类似于PC机DOS系统下的Debug程序的功能,包括A、U、G、T、P、R、D、E共8条命令,其格式为一个英文字母(大小写随意)表示的命令名、一个空格(可有可无)跟命令参数,下面分别介绍。TEC-2000A教学计算机的操作与使用方法,主要指通过由监控程序提供的监控命令控制教学计算机的运行功能。教学计算机处于正常运行状态时,它通过串行接口和PC机仿真终端相连接,通过常用的A、D等监控命令可以进行联机操作。这些监控命令,实现类似于PC机DOS系统下的Debug程序的功能,包括A、U、G、T、P、R、D、E共8条命令,其格式为一个英文字母(大小写随意)表示的命令名、一个空格(可有可无)跟命令参数,下面分别介绍。

  4. 实验内容 • 使用监控程序的R命令显示/修改寄存器内容、D命令显示存储器内容、E命令修改存储器内容 • 使用A命令写一小段汇编程序,U命令反汇编刚输入的程序,用G命令连续运行该程序,用T、P命令单步运行并观察程序单步执行情况

  5. (1)单条汇编命令A 格式:A [adr] 这里的 [adr] 表示此处的地址参数adr为任选项,由4位十六进制的数组成(下同),无此参数时,系统将取默认值。 功能:完成单条指令的汇编操作,把产生出来的教学计算机的执行代码放入对应的内存单元中。命令名后的地址将是头一条汇编语句的执行码的内存单元地址。每条语句汇编完成之后,系统将相应修改地址值,以便正确处理下条汇编语句。在应该输入汇编语句位置不给出汇编语句而直接回车,则结束A命令的运行过程。

  6. (2)反汇编命令U 格式:U [adr] 功能:每次从指定的(或默认的)地址反汇编15条指令,并将结果显示在终端屏幕上。反汇编完成之后,已将该命令的默认地址修改好。接下来键入不带参数的U命令时,将接着从上一次反汇编的最后一条语句之后继续反汇编。 (3)执行程序命令G 格式:G [adr] 功能:从指定的(或默认的)地址连续地运行一个用户程序。为了使程序执行后能返回监控程序,要求每个用户程序的最后一条指令一定为RET指令。

  7. (4)、(5)单指令执行程序命令T和P 格式:T [adr] 或 P [adr] 功能:从指定的(或PC中的当前地址)开始,单条指令方式执行用户程序。通常情况下,每按一次T或P将执行一条指令。它们的区别是,T总是执行单条指令,但执行P命令时,则把每一个CALL语句连同被调用的子程序一次执行完成。每次执行后均显示所有通用寄存器及状态寄存器的内容,并反汇编出下一条将要执行的指令。

  8. (6)显示/修改寄存器内容命令R 格式:R [寄存器名] 功能:不带参数时,是显示全部寄存器及状态寄存器的值,并反汇编当前PC所指的一条指令,其中状态的显示格式为:“F=8位二进制数”,其各位的值分别对应于C、Z、V、S,P1、P0、0、0的值。带参数时,如R R0表示要通过输入新值来修改相应寄存器R0的内容。

  9. (7)显示存储器内容命令D 格式:D [adr] 功能:从指定(或默认的)地址开始显示内存128个存储字的内容。连续的D命令,保证显示内容前后正确的连续关系,即每次执行D命令,会将默认的地址值加上128。 (8)修改存储器内容命令E 格式:E [adr] 功能:从指定(或默认的)地址逐字修改每个内存单元的内容,要求用户打入一个新的值,相应内存单元的内容将被修改。接下来若打入空格键,可以开始修改下一个字,如打入的是回车键,则会结束E命令的执行过程。 使用上述8条命令,就可以完成所期望的操作。

  10. 实验步骤 • 1、关闭电源,将大板上的COM1口与PC机的串口相连; • 2、接通电源,在PC机上运行PCEC.EXE文件,设置所用PC机的串口“1”或“2”,其它的设置一般不要改动,直接回车 • 3、置控制开关为00101(连续、内存读命令,组合逻辑,16位,联机) • 4、按一下“RESET”按键,再按一下“START”按键

  11. 用A命令键入教学计算机的一段汇编源程序,主要是向累加器送入数据和执行运算。用A命令键入教学计算机的一段汇编源程序,主要是向累加器送入数据和执行运算。 A 2000(回车) ;程序的起始地址选为16进制的2000(即内存RAM区 2000: MVRD R0,AAAA ;的起始地址),这里的数据均为16进制表示方式 2002: MVRD R1,5555 2004: ADD R0,R1 2005: AND R0,R1 2006: RET ;程序的最后一个语句,必须为RET指令 2007:(直接敲回车键,结束A命令的输入程序的操作过程)

  12. 用G命令运行前面刚输入的程序。 G 2000(回车) 程序运行结束后,可以看到程序的运行结果,屏幕显示各寄存器的值,其中R0和R1的值均为55,说明程序运行正确。 • 当然也可以用P或T命令,逐条地执行这段程序中的指令,每执行一条指令就停下来,以便查看每一条指令的运行结果。 T 2000(回车) (结果从略,自己到实验中去看) T (回车) (结果从略,自己到实验中去看) 继续打入T命令,直到程序结束(不能用P、T命令运行程序的最后那条指令RET)。

  13. 可以用R命令显示和修改有关寄存器的值,例如:可以用R命令显示和修改有关寄存器的值,例如: R 不带参数则显示所有通用寄存器的值,状态字的值,下一条待执行指令的内容; 带寄存器名参数时,是修改寄存器内容,例如,R R3 命令,回车后首先显示R3的原有内容,打入新值则完成替换。 • 可以用U命令对刚输入并运行过的程序进行反汇编。 U 2000(回车) (结果从略,自己到实验中去看) • 可以用D命令看从内存2000单元开始的这片存储区域中的内容。 D 2000(回车); (结果从略,自己到实验中去看) 还可以用E命令向内存储器2100单元开始的一片存储区域键入一些数据,之后再用D命令查看:

  14. 实验要求 1. 实验之前认真准备,看清实验要求、初步安排好实验内容和操作步骤,设计好实验程序的源代码; 2.实验中认真操作,听从教师安排,按时开始和结束实验过程;实验中仔细分析遇到的问题并设法解决,做好实验过程与实验结果的记录工作;防止损坏设备; 3.实验之后认真写出实验报告,包括实验预习与数据准备情况,实验中遇到的问题和解决的办法及效果,实验操作过程与实验结果的分析整理等总结性的内容; 4.实验中尚未完全理解或解决的问题,实验的收获及心得体会,对实验安排的建议与意见等。

  15. 教学计算机中的汇编程序的例子 例1:设计一个程序,在屏幕上显示字符“6”。 A 2000 ;地址从16进制的2000(内存RAM区的起始地址)开始 2000: MVRD R0,0036 ;把字符‘6’的ASCII码送入R0 2002: OUT 80 ;在屏幕上输出显示字符‘6’,80为串行接口地址 2003: RET ;每个用户程序都必须用RET指令结束 2004: (按回车键即结束源程序的输入过程)

  16. 教学计算机中的汇编程序的例子 例2:计算1到10的累加和。 A 2060 MVRD R1,0000 ;置累加和的初值为0 MVRD R2,000A ;最大的加数 SUB R3,R3 ;预置参加累加的数为0 (2064) INC R3 ;得到下一个参加累加的数 ADD R1, R3 ;累加计算 CMP R3, R2 ;判断是否累加完 JRNZ 2064 ;未完,开始下一轮累加 RET 运行过后,可以用R命令看R1中的累加结果。

  17. 例3:设计一个程序,用次数控制在终端屏幕上输出‘0’到‘9’十个数字符。例3:设计一个程序,用次数控制在终端屏幕上输出‘0’到‘9’十个数字符。 A 2020 2020 MVRD R2,000A ;送入输出字符的个数 2022 MVRD R0,0030 ;‘0’字符的ASCII码 2024 OUT 80 ;输出保存在R0低位字节的字符 DEC R2 ;输出字符个数减1 JRZ 202E ;判全部字符输出完否,已完,则转移到程序结束处 PUSH R0 ;未完,保存R0的值到堆栈中 (2028) IN 81 ;查询接口状态,判字符的串行输出过程结束否 SHR R0 ; JRNC 2028 ;未完成,则循环等待 POP R0 ;已完成,准备继续输出下一字符,从堆栈恢复 ; R0 的值 INC R0 ;得到下一个要输出的字符 JR 2024 ;转去输出字符 (202E) RET

  18. 例4:从键盘上连续键入多个属于‘0’到‘9’的数字符并在屏幕上显示,遇非数字符结束程序。从地址2040开始输入下列程序:例4:从键盘上连续键入多个属于‘0’到‘9’的数字符并在屏幕上显示,遇非数字符结束程序。从地址2040开始输入下列程序: A 2040 MVRD R2,0030 ;用于判数字符的下界值 MVRD R3,0039 ;用于判数字符的上界值 (2044) IN 81 ;判键盘上是否按了一个键 SHR R0 ;即串行口是否有了输入的字符 SHR R0 JRNC 2044 ;尚没有输入则循环测试 IN 80 ;把输入字符读到R0低位字节 MVRD R1, 00FF AND R0, R1 ;将R0的高位字节清0 CMP R0, R2 ;判输入的字符<= 字符‘0’否 JRC 2053 ;是,则转到程序结束处 CMP R3, R0 ;判输入的字符 > 字符‘9’否 JRC 2053 ;是,则转到程序结束处 OUT 80 ;输出刚输入的数字符 JMPA 2044 ;转去程序前边2044处等待输入下一个字符 (2053) RET

  19. 例5:该程序的功能是首先把字符‘A’~‘F’写到内存的2040~2045几个单元,然后再读出来并显示到屏幕上:例5:该程序的功能是首先把字符‘A’~‘F’写到内存的2040~2045几个单元,然后再读出来并显示到屏幕上: A 2020 2020: MVRD R3,06 ;给出写内存操作的次数 2022: MVRD R2,203F 2024: MVRD R1,40 2026: INC R2 ;给出写内存操作的内存地址 2027: INC R1 ;给出写内存操作的内存地址 2028: STRR [R2],R1 ;写寄存器R1的内容到由R2指定地址的内存单元中 2029: LDRR R0,[R2] ;读出内存单元的数据到R0寄存器 202A: OUT 80 202B: IN 81 202C: SHR R0 202D: JRNC 202B 202E: DEC R3 ;检查6次写内存操作是否完成 202F: JRNZ 2026 ;未完则开始下一次写内存操作 2030: RET ;程序结束

  20. 例6:设计一个有读写内存和子程序调用指令的程序,功能是读出指定内存中的大写字母字符,将其显示到屏幕上,转换为小写字母后再写回存储器原存储区域:例6:设计一个有读写内存和子程序调用指令的程序,功能是读出指定内存中的大写字母字符,将其显示到屏幕上,转换为小写字母后再写回存储器原存储区域: E 20F0 41 42 43 44 45 46 A 2080 MVRD R3,0006 ;指定被读数据的个数 MVRD R2,20F0 ;指定被读、写数据内存区首地址 (2084)LDRR R0,[R2] ;读内存中的一个字符到R0 CALA 2100 ;调用子程序,完成显示、转换并写回的功能 DEC R3 ;检查输出的字符个数 JRZ 208C ;完成输出则结束程序 INC R2 ;未完成,修改内存地址 JR 2084 ;转移到程序的2084处,循环执行规定的处理 (208C)RET A 2100 OUT 80 ;输出保存在R0寄存器中的字符 MVRD R1,0020 ;转换保存在R0中的大写字母为小写字母 ADD R0,R1 STRR [R2],R0 ;写R0中的字符到内存, (2105) IN 81 ;测试串口是否完成输出过程 SHR R0 JRNC 2105 ;未完成输出过程则循环测试 RET

  21. 从键盘输入一个四位16进制数到寄存器中,把它以二进制代码形式显示到屏幕上,要求有一定的检错能力,如遇到非法字符要结束程序运行。从键盘输入一个四位16进制数到寄存器中,把它以二进制代码形式显示到屏幕上,要求有一定的检错能力,如遇到非法字符要结束程序运行。 • 编写汇编程序,调试好;报告中附上程序清单,给出注释、必要说明和运行方法,

More Related