⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 html1.htm

📁 本软件实现了汇编语言级虚拟机的模拟
💻 HTM
字号:
               小 型 虚 拟 机 模 拟 的 说 明
一.小型虚拟机实现说明:
部件名称	       功能体现	           说明
        
 ALU	用于完成算术及逻辑运算	 ALU不与寄存器组连接,故其只能负责累加器等的内容等的运算(指令解释时将详细给出)。
CU	控制指令的取值及执行	不特别体现,主要在执行代码中体现,可以通过查看*.lst文件查看指令代码
累加器A	  用于存放运算的操作数或操作数的结果	可以使用逐步跟踪的方法查看其内容,VC版可通过编辑框查看
    栈指针寄存器SP	用于存放堆栈的栈顶地址	查看方法同累加器A
变址寄存器X	可以用于指向存放数组的起始地址	查看方法同累加器A
状态寄存器	      Z	用于判断操作结果是否为0	查看方法同累加器A
	      P	用于判断操作结果是否为正	查看方法同累加器A
	      C	用于判断操作是否有进位	查看方法同累加器A
指令寄存器IR	用于存放当前正在执行的指令的二进制内容	查看方法同累加器A
基址寄存器BP	用于存放程序调用过程中的地址信息	查看方法同累加器A
程序计数器PC	用于存放下一条指令的内存地址	查看方法同累加器A


本软件指令集包含了67条指令,使用本软件时请根据以下指令格式进行书写。(注意:本软件指令不同于一般汇编指令,请严格按照以下说明进行,谢谢!)
  指令标识符	        作用	      使用方法
"NOP"	空操作,直接返回	直接使用
"CLRA"	清空累加器A	直接使用
"CLRC"	清进位标志为C	直接使用
"CLRX"	清空变址寄存器	直接使用
"CMC"	进位标志器取反	直接使用
"INC"	累加器A自增一,影响标志器	直接使用
"DEC"	累加器A自减一,影响标志器	直接使用
"INCX";	变址寄存器自增一,影响标志器	直接使用
"DECX"	标志寄存器自减一,影响标志器	直接使用
"TAX"	累加器A送变址寄存器X 	直接使用
"INI"	读一十进制数送累加器A,影响标志器	不能直接给操作数,要在程序运行时才输入操作数
"INH"	读一十六进制数送累加器A,影响标志器	不能直接给操作数,要在程序运行时才输入操作数
"INB"	读一二进制数送入累加器A,影响标志器	不能直接给操作数,要在程序运行时才输入操作数
"INA"	读一ASCII码送入累加器A,影响标志器	不能直接给操作数,要在程序运行时才输入操作数
"OTI"	以十进制形式输出累加器A的内容	直接使用,在输出口看结果
"OTC"	以无符号10进数形式输出累加器A的内容	直接使用,在输出口看结果
"OTH"	以16进形式输出累加器A的内容	直接使用,在输出口看结果
"OTB"	以无符号2进制形式输出累加器A的内容	直接使用,在输出口看结果
"OTA"	以ascii字符形式输出累加器A的内容	直接使用,在输出口看结果
"PUSH"	将累加器A的内容压入栈顶,堆栈指针SP减1	直接使用
"POP"	将栈顶元素送入累加器A,堆栈指针SP加1	直接使用,影响标志寄存器
"SHL"	累加器A内容左移一位,移出位进入进位标志C	直接使用,影响标志寄存器
"SHR"	累加器A内容右移一位,移出位进入进位标志C	直接使用,影响标志寄存器
"RET"	子程序调用返回,将栈顶内容送PC,退栈	直接使用
"HALT"	停机指令	直接使用
"LDA  B"	将B地址内容送累加器A	直接使用
"LDX  B"	将变址寄存器加偏移量B的地址内容送A	直接使用
"LDI  B"	将PC所指内存单元内容,即B送入累加器A	直接使用
"LSP  B"	将B地址内容送入SP	直接使用
"LSPI  B"	将B送入SP	直接使用
"STA  B"	将累加器A的内容写入B地址	直接使用
"STX  B"	将累加器A的内容写入使用变址寻址方式偏移量为B的内存单元中	直接使用
"ADD  B"	累加器A内容加B地址内容结果送累加器A	直接使用,影响标志寄存器
"ADX  B"	累加器A内容加上变址寻址(寻址方式同STX)地址的内容结果送累加器A	直接使用,影响标志寄存器
"ADI  B"	累加器A的内容加B结果送累加器	直接使用,影响标志寄存器
"ADC  B"	累加器A与B与进位位相加,结果送累加器A	直接使用,影响标志寄存器
"ACX  B"	累加器与变址寻址(偏移量为B)、进位位相加,结果送累加器A	直接使用,影响标志寄存器
"ACI  B"	累加器与B立即数、进位位C相加,结果送累加器	直接使用,影响标志寄存器
"SUB  B"	累加器与B地址内容相减,结果送累加器	直接使用,影响标志寄存器
"SBX  B"	累加器与变址寻址方式(偏移量为B)的内容相减,结果送累加器	直接使用,影响标志寄存器
"SBI  B"	累加器与立即数B相减,结果送累加器A	直接使用,影响标志寄存器
"SBC  B"	累加器与B地址内容及进位位内容相减,结果送累加器	直接使用,影响标志寄存器
"SCX  B"	累加器与变址寻址方式(偏移量为B)及进位位相减,结果送累加器A	直接使用,影响标志寄存器
"SCI"	累加器与立即数B及进位位相减,结果送累加器A	直接使用,影响标志寄存器
"CMP  B"	累加器与B地址内容相比较	直接使用,影响标志寄存器
"CPX  B"	累加器与变址寻址方式(偏移量为B)的内容作比较	直接使用,影响标志寄存器
"CPI  B"	累加器与B相比	直接使用,影响标志寄存器
"ANA  B"	累加器与B地址内容相位与,结果送累加器	直接使用,影响标志寄存器
"ANX  B"	累加器与变址寻址方式(偏移量为B)的内容相位与,结果送累加器	直接使用,影响标志寄存器
"ANI  B"	累加器与立即数B相位与,结果送累加器	直接使用,影响标志寄存器
"ORA  B"	累加器与B地址内容进行位或操作,结果送入累加器	直接使用,影响标志寄存器
"ORX  B"	累加器与变址寻址方式(偏移量为B)做位或操作,结果送累加器A	直接使用,影响标志寄存器
"ORI  B"	累加器与立即数B相位或,结果存入累加器中	直接使用,影响标志寄存器
"JMP  B"	无条件跳转至B地址	直接使用
"BZE  B"	只有Z为1才跳转到B地址	直接使用
"BNZ  B"	只有Z为0才跳转到B地址	直接使用
"BPZ  B"	只有P为1才跳转到B地址	直接使用
"BNG  B"; 	只有P为0才跳转到B地址	直接使用
 "BCC  B"	只有C为0才跳转到B地址	直接使用
"BCS  B"	只有C为1才跳转到B地址	直接使用
"TSP "	将栈指针SP内容送累加器A	直接使用
"JSR"	调用子程序,将返回地址压栈	直接使用
"LBPI  B"	使用机制寻址方式,将偏移量为B的内存单元内容送累加器A	直接使用
"FBPI  B"	将立即数B送入基址指针寄存器BP	直接使用
"TBP"	将基址指针寄存器BP的内容送A	直接使用
"TSB"	将栈指针寄存器SP的内容送入基址指针寄存器BP	直接使用
"TABP"	将累加器A的内容送入基址寄存器BP中	直接使用



使用说明:
此虚拟机模型有两个版本:DOS版和VC版。下面分别对两个版本稍加说明。
一. DOS版:
   此版本可以直接调用也可以使用VC版调用。
   使用时可参照以下说明内容:
1.	打开程序后,首先必须先输入你要汇编的文档路径,完成对汇编文件的来源初始;
2.	根据提示我们可以看到它编译的过程,首先它将进行第一遍扫描,完成对于汇编指令的存储,标识符的纪录,空格、解释的忽略等。然后进入第二遍扫描,负责检查汇编文件是否存在标识符的误用(因为汇编中存在向前,向后引用,跳转等操作),汇编指令的误用……进行两遍扫描后,程序生成符号表和把机器指令加载到虚拟机内存之中,所有的内存内容将写入*.map文档中,使用者可以到那去查看加载后的内存内容,我们还将翻译后的汇编指令输出到*.lst文档中供使用者检查是否存在指令的代码用错等信息;
3.	接下来使用者可以通过选择TRACE来实现是否才用逐步跟踪寄存器状态来检查程序的执行过程;而当你选择了"n",你将不能在程序中看到所有寄存器的内容你只有到*.map文档中查看内存的内容;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -