实验二:基础汇编语言程序设计 下载本文

内容发布更新时间 : 2024/12/28 5:29:56星期一 下面是文章的全部内容请认真阅读。

TEC–XP+教学计算机实验指导

TEC-XP+教学计算机的监控程序用TEC-XP+汇编语言实现,其主要功能是支持把计算机终端或PC机仿真终端接入教学机系统,通过终端设备运行教学机的有关程序,以方便直观的形式支持教学机的各项实验,提供教学机汇编语言的可用子程序。

一、PC模拟终端软件

PC模拟终端软件的功能是支持把PC机作为TEC-XP+教学计算机的终端,通过终端进入TEC-XP+的监控程序,进而可编辑、运行汇编程序。

1.进入监控程序的方法和步骤

1)打开实验箱的盖子,确认教学机电源开关处于断开状态,然后接上电源线;

2)将通讯线的9芯插头接在教学机的串口“COM1”上,另一端通过USB转换接口接到PC的USB口,用PC作为模拟终端;

3)将教学机的运行控制开关设置为001100(连续、组合逻辑、联机、16位、MACH),开关拨向上方表示“1”,拨向下方表示“0”;

4)打开电源开关,5V电源指示灯亮;

5)在PC机上运行PCEC16.EXE文件,设置所用PC机的串口为“1”,其余的设置不用改动,直接回车即可;

6)按一下教学机的“RESET”键,再按一下“START”键后监控程序开始运行,同时PC机显示以下的信息:

TEC-2000 CRT MONITOR Version 2.0 2001.10

Computer Architectur Lab., Tsinghua University Copyright Jason He 2.监控命令及其使用方法

监控程序提供类似PC机DOS系统下的Debug程序的功能,支持A、U、G、P、T、R、D和E共8个监控命令。

监控命令的一般格式为:[监控命令] [地址/寄存器名参数] 监控命令为单字母(大小写均可),命令名后可跟一个地址参数,或寄存器名参数。当命令名后无参数时,监控程序取默认的地址/寄存器名的参数值。TEC–XP+机从终端接收地址、指令、数值时,均用16进制数(最多4位)输入与显示,并且不能用字符h加以标志。

1)单条汇编命令A 格式:A [addr]

[addr]表示地址参数,addr为任选项(选择范围为2000H—27FFH,即RAM的空间范围)。无此参数时,系统将取默认值。

功能:完成单条指令的汇编操作,把产生的执行代码放入对应的内存单元中。命令名后的地址addr是第一条汇编语句的执行码的主存单元地址。

若在输入汇编语句时,不给出汇编语句而直接回车,则结束A命令的运行过程。 若汇编中发现语法错误,用^指明出错位置,并要求重新给出正确语句。

注意:单条汇编功能并不很完善,不能支持语句标号,也不能使用伪指令等。遇到这些问题,需要直接使用机器码,并通过E命令将其送入相应内存单元。

2)反汇编命令U 格式:U [addr]

功能:每次从指定的(或默认的)地址反汇编15条命令,并将结果显示在终端屏幕上。反汇编完成

1

之后,已将该命令的默认地址修改好。接下来再键入不带参数的U命令,接着从上一次反汇编的最后一条语句之后继续反汇编。

3)执行程序命令G 格式:G [addr]

功能:从指定的(或默认的)地址连续运行一个用户程序。为了使程序执行后能返回监控程序,要求每个程序的最后一条指令应为RET指令。

4)单指令执行程序命令T和P 格式:P [addr]

T [addr]

功能:从指定地址(或PC中的当前地址)开始单条执行程序指令。通常情况下,每按一次T或P将执行一条指令。T和P命令的区别是,T总是执行单条指令,但执行P命令时,则把每一个CALL语句(即连同被调用的子程序)一次执行完成。执行后显示所有通用寄存器及状态寄存器的内容,并反汇编出下一条将要执行的指令。由于P和T命令是通过设置断点来实现的,而在ROM区不能设置断点,故不能用它们来执行固化在ROM区中的监控程序。

5)显示/修改寄存器内容命令R 格式:R [reg]

其中reg为寄存器名R0—R15或SP(R4),PC(R5),IP(R6)。当R命令不带寄存器名时,显示全部寄存器(包括SP,PC和IP)及状态寄存器的值,并反汇编当前PC所指的一条指令。其中状态的显示格式为:“F = 8位二进制数”,其各位的值分别对应于C、Z、V、S,INTE、P2、P1、P0的值,当R命令带有寄存器名时,先显示出该寄存器的值,若修改寄存器的值则打入新值回车,否则只按回车即可。

6)显示存储器内容的命令D 格式:D [addr]

功能:从指定(或默认)地址开始显示内存120个存储字的内容。

显示的格式:最左一列4位的16进制数是本行中第一个字的地址,接下来的8列是4位的16进制的8个连续内存字的内容,最右一列是每个字节所对应的ASCⅡ字符。当其值不为可显示的ASCⅡ码值时,用“.”字符标记。

当连续使用不带addr参数的D命令时,将会从默认的地址值开始显示。 7)修改存储器内容命令E 格式:E [addr]

功能:从指定(或默认)地址逐字显示每个内存字的内容,并等待用户打入一个新的值存回该内存单元。若用户未打入新值就打了空格键,则该内存单元内容保持不变。若在打入新值后跟空格键,则内存单元内容写成新值。空格键表明要连续修改一片内存区,故接下来显示下一个单元的内容并等待修改。打回车键,则会结束E命令的执行过程,若回车前打入一个新值,相应内存单元的内容也将被修改。

二、TEC-XP+的指令系统

TEC-XP+十六位教学机定义了48条指令,其中29条基本指令已实现,19条扩展指令供在教学实验中进行扩展,即完成对这些扩展指令的设计与调试。注意:目前TEC-XP+计算机及其监控程序尚不支持扩展指令。

十六位教学机支持单字长和双字长指令。第一个指令字的高8位为操作码字段,低8位和双字指令的第二个字为地址码字段,共有三种基本格式:

操作码

立即数∕直接存储器地址∕变址偏移量 十六位机根据指令长度、操作数的不同划分为6类指令。 1)单字、无操作数指令

2

DR SR I/O端口地址∕相对偏移量 格式:

操作码 基本指令:

PSHF POPF RET 扩展指令:

CLC STC EI DI IRET

0000 0000 ;状态标志寄存器(C、Z、V、S、P1、P0)入栈 ;弹出栈顶数据送入状态标志寄存器 ;子程序返回

;清进位标志位C(C←0) ;置进位标志位C(C←1) ;开中断,即置中断允许位 ;关中断,即清中断允许位 ;中断返回

2)单字、单操作数指令 格式:

操作码 基本指令:

DEC INC SHL SHR JR JRC JRNC JRZ JRNZ IN OUT PUSH POP 扩展指令:

RCL RCR ASR NOT JMPR CALR JRS JRNS

RD 0000 0000 SR OFFSET I/O Port DR DR DR DR offset offset offset offset offset I/O port I/O port SR DR DR DR DR DR SR SR offset offset

;DR←DR-1 ;DR←DR+1

;DR逻辑左移,最低位补0,最高位移入C ;DR逻辑右移,最高位补0,最低位移入C ;无条件转移到ADDR,ADDR=(PC)+Offset ;当C=1时转移到ADDR,ADDR=(PC)+Offset ;当C=0时转移到ADDR,ADDR=(PC)+Offset ;当Z=1时转移到ADDR,ADDR=(PC)+Offset ;当Z=0时转移到ADDR,ADDR=(PC)+Offset ;I/O端口输入,R0←[I/O Port] ;I/O端口输出,[I/O Port]←R0 ;SR入栈

;弹出栈顶数据送入DR

;DR与C循环左移,C移入DR最低位,DR最高位移入C ;DR与C循环右移,C移入DR最高位,DR最低位移入C ;DR算术右移,最高位保持不变,最低位移入C ;DR求反,即DR←/DR

;无条件转移到SR指向的地址 ;调用SR指向的子程序

;当S=1时转移到ADDR,ADDR=(PC)+Offset ;当S=0时转移到ADDR,ADDR=(PC)+Offset

3)单字、双操作数指令 格式:

操作码 基本指令:

ADD SUB AND CMP XOR TEST OR

DR, SR DR, SR DR, SR DR, SR DR, SR DR, SR DR, SR

;DR←DR+SR ;DR←DR-SR ;DR←DR∧SR ;DR-SR

;DR←DR⊕SR ;DR∧SR

;DR←DR∨SR

DR SR 3